From 52a0cb374631992ffe1697c55f0787b3a16afe57 Mon Sep 17 00:00:00 2001 From: shubham Date: Mon, 18 May 2020 17:44:23 +0800 Subject: [PATCH] added hash for tokencommitment during commitmentRequest --- .../xcode/xcshareddata/xcschemes/TorusUtils.xcscheme | 11 +++++++++++ Sources/TorusUtils/Extensions/torus+extension.swift | 9 +++++---- Sources/TorusUtils/TorusUtils.swift | 12 ++++++------ Tests/torus-utils-swiftTests/unit_test.swift | 9 ++++++--- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/TorusUtils.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/TorusUtils.xcscheme index ec373689..d7cb3177 100644 --- a/.swiftpm/xcode/xcshareddata/xcschemes/TorusUtils.xcscheme +++ b/.swiftpm/xcode/xcshareddata/xcschemes/TorusUtils.xcscheme @@ -51,6 +51,17 @@ BlueprintName = "torus-utils-swiftTests" ReferencedContainer = "container:"> + + + + + + + + diff --git a/Sources/TorusUtils/Extensions/torus+extension.swift b/Sources/TorusUtils/Extensions/torus+extension.swift index 8734ed88..8e199946 100644 --- a/Sources/TorusUtils/Extensions/torus+extension.swift +++ b/Sources/TorusUtils/Extensions/torus+extension.swift @@ -71,7 +71,7 @@ extension TorusUtils { "timestamp": timestamp] )) - // print( String(data: rpcdata, encoding: .utf8)!) + print( String(data: rpcdata, encoding: .utf8)!) promisesArray.append(URLSession.shared.uploadTask(.promise, with: rq, from: rpcdata)) } @@ -110,7 +110,7 @@ extension TorusUtils { } - func retreiveIndividualNodeShare(endpoints : Array, verifier: String, verifierParams: [String: String], idToken:String, nodeSignatures: [[String:String]]) -> Promise<[Int:[String:String]]>{ + func retreiveIndividualNodeShare(endpoints : Array, verifier: String, verifierParams: [[String: String]], tokenCommitment:String, nodeSignatures: [[String:String]], subVerifierId: [String], verifierId: String) -> Promise<[Int:[String:String]]>{ let (tempPromise, seal) = Promise<[Int:[String:String]]>.pending() var promisesArrayReq = Array >() @@ -122,9 +122,9 @@ extension TorusUtils { "id":10, "method": "ShareRequest", "params": ["encrypted": "yes", - "item": [["verifieridentifier":verifier, "verifier_id": verifierParams["verifier_id"]!, "idtoken": idToken, "nodesignatures": nodeSignatures]]]] as [String : Any] - + "item": [["verify_params": verifierParams, "sub_verifier_ids": subVerifierId, "verifieridentifier":verifier, "verifier_id": verifierId, "nodesignatures": nodeSignatures, "idtoken": tokenCommitment]]]] as [String : Any] let rpcdata = try! JSONSerialization.data(withJSONObject: dataForRequest) + print( String(data: rpcdata, encoding: .utf8)!) promisesArrayReq.append(URLSession.shared.uploadTask(.promise, with: rq, from: rpcdata)) } @@ -134,6 +134,7 @@ extension TorusUtils { var receivedRequiredShares = false for (i, pr) in promisesArrayReq.enumerated(){ pr.done{ data, response in + print(try! JSONSerialization.jsonObject(with: data, options: [])) let decoded = try JSONDecoder().decode(JSONRPCresponse.self, from: data) print("share responses", decoded) if(decoded.error != nil) {throw TorusError.decodingError} diff --git a/Sources/TorusUtils/TorusUtils.swift b/Sources/TorusUtils/TorusUtils.swift index 6deefaae..dccf945b 100644 --- a/Sources/TorusUtils/TorusUtils.swift +++ b/Sources/TorusUtils/TorusUtils.swift @@ -63,7 +63,7 @@ public class TorusUtils{ - public func retreiveShares(endpoints : Array, verifier: String, verifierParams: [String: String], idToken:String) -> Promise{ + public func retreiveShares(endpoints : Array, verifierIdentifier: String, verifierParams: [[String: String]], subVerifierIds: [String], verifierId: String) -> Promise{ // Generate privatekey let privateKey = SECP256K1.generatePrivateKey() @@ -75,7 +75,8 @@ public class TorusUtils{ let pubKeyY = publicKey?.suffix(publicKey!.count/2).toHexString() // Hash the token from OAuth login - let tokenCommitment = idToken.sha3(.keccak256) + let tempIDToken = verifierParams.map{$0["idtoken"]!}.joined(separator: "\u{001d}") + let tokenCommitment = tempIDToken.sha3(.keccak256) let timestamp = String(Int(Date().timeIntervalSince1970)) var nodeReturnedPubKeyX:String = "" @@ -84,17 +85,16 @@ public class TorusUtils{ print(privateKey?.toHexString() as Any, publicKeyHex as Any, pubKeyX as Any, pubKeyY as Any, tokenCommitment) return Promise{ seal in - commitmentRequest(endpoints: endpoints, verifier: verifier, pubKeyX: pubKeyX!, pubKeyY: pubKeyY!, timestamp: timestamp, tokenCommitment: tokenCommitment) + commitmentRequest(endpoints: endpoints, verifier: verifierIdentifier, pubKeyX: pubKeyX!, pubKeyY: pubKeyY!, timestamp: timestamp, tokenCommitment: tokenCommitment.sha3(.keccak256)) .then{ data -> Promise<[Int:[String:String]]> in - print("data after commitment requrest", data) - return self.retreiveIndividualNodeShare(endpoints: endpoints, verifier: verifier, verifierParams: verifierParams, idToken: idToken, nodeSignatures: data) + print("data after commitment requrest", data) + return self.retreiveIndividualNodeShare(endpoints: endpoints, verifier: verifierIdentifier, verifierParams: verifierParams, tokenCommitment: tokenCommitment, nodeSignatures: data, subVerifierId: subVerifierIds, verifierId: verifierId) }.then{ data -> Promise<[Int:String]> in print("data after retrieve shares", data) if let temp = data.first{ nodeReturnedPubKeyX = temp.value["pubKeyX"]! nodeReturnedPubKeyY = temp.value["pubKeyY"]! } - return self.decryptIndividualShares(shares: data, privateKey: privateKey!.toHexString()) }.then{ data -> Promise in //print("individual shares array", data) diff --git a/Tests/torus-utils-swiftTests/unit_test.swift b/Tests/torus-utils-swiftTests/unit_test.swift index 8654f3ff..ef8c7955 100644 --- a/Tests/torus-utils-swiftTests/unit_test.swift +++ b/Tests/torus-utils-swiftTests/unit_test.swift @@ -23,8 +23,11 @@ final class torus_utils_swiftTests: XCTestCase { let nodeList = ["https://lrc-test-13-a.torusnode.com/jrpc", "https://lrc-test-13-b.torusnode.com/jrpc", "https://lrc-test-13-c.torusnode.com/jrpc", "https://lrc-test-13-d.torusnode.com/jrpc", "https://lrc-test-13-e.torusnode.com/jrpc"] let nodePubKeys : Array = [TorusNodePub(_X: "4086d123bd8b370db29e84604cd54fa9f1aeb544dba1cc9ff7c856f41b5bf269", _Y: "fde2ac475d8d2796aab2dea7426bc57571c26acad4f141463c036c9df3a8b8e8"),TorusNodePub(_X: "1d6ae1e674fdc1849e8d6dacf193daa97c5d484251aa9f82ff740f8277ee8b7d", _Y: "43095ae6101b2e04fa187e3a3eb7fbe1de706062157f9561b1ff07fe924a9528"),TorusNodePub(_X: "fd2af691fe4289ffbcb30885737a34d8f3f1113cbf71d48968da84cab7d0c262", _Y: "c37097edc6d6323142e0f310f0c2fb33766dbe10d07693d73d5d490c1891b8dc"),TorusNodePub(_X: "e078195f5fd6f58977531135317a0f8d3af6d3b893be9762f433686f782bec58", _Y: "843f87df076c26bf5d4d66120770a0aecf0f5667d38aa1ec518383d50fa0fb88"),TorusNodePub(_X: "a127de58df2e7a612fd256c42b57bb311ce41fd5d0ab58e6426fbf82c72e742f", _Y: "388842e57a4df814daef7dceb2065543dd5727f0ee7b40d527f36f905013fa96")] let verifierId = "shubham@tor.us" - let verifier = "google-shubs" - let token = "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijc0YmQ4NmZjNjFlNGM2Y2I0NTAxMjZmZjRlMzhiMDY5YjhmOGYzNWMiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiIyMzg5NDE3NDY3MTMtcXFlNGE3cmR1dWsyNTZkOG9pNWwwcTM0cXR1OWdwZmcuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiIyMzg5NDE3NDY3MTMtcXFlNGE3cmR1dWsyNTZkOG9pNWwwcTM0cXR1OWdwZmcuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDk1ODQzNTA5MTA3Mjc0NzAzNDkiLCJoZCI6InRvci51cyIsImVtYWlsIjoic2h1YmhhbUB0b3IudXMiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXRfaGFzaCI6IjY2bXVLVS1NTzNmTjFNbV9LdnhJWHciLCJub25jZSI6IjEyMyIsIm5hbWUiOiJTaHViaGFtIFJhdGhpIiwicGljdHVyZSI6Imh0dHBzOi8vbGg0Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tT19SUi1aYlQwZVUvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQUEvQUFLV0pKTmVleHhiRHozcjFVVnBrWjVGbzdsYTNhMXZRZy9zOTYtYy9waG90by5qcGciLCJnaXZlbl9uYW1lIjoiU2h1YmhhbSIsImZhbWlseV9uYW1lIjoiUmF0aGkiLCJsb2NhbGUiOiJlbiIsImlhdCI6MTU4ODY2ODUzOSwiZXhwIjoxNTg4NjcyMTM5LCJqdGkiOiJlOWE1MWFlYmI3ZGQ1ODViM2I3MGUyYjlhOTBiNGI1ZGVhOTI0MTAyIn0.L9fj59OMTNL6NomQ8KCu6HKaxEQoFmPfQIPMrZ4xCcrYTU7WNeVJS8yyimebM_vj0UcamoNhdTInJ6qBnVrJOTbmztsK-7g6pc5gCiQuXJVBNARqnFtFc7USOQawQB6t4NoxgY387dlOBGTgdQa-TvQ4qu5kUTzSSSFymLpr-p7seWE4aL0HHlaujlNXlcE_yJBFgwraLxbUE7U9BMAcrOhyaB1zNkYYQlJZiwDjQb19cWYOMq_TYtF0VvxHXrTcNhxqZ-tHdcYS-bBH0yO8KMUe2D3nD0zcHGtrf2m_dbR2VEjXJaOH5Xv3gZnzi8JkLvdlyzNe0ufiCkGeAigE7g" + let verifier = "google-google" + let token = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImMxNzcxODE0YmE2YTcwNjkzZmI5NDEyZGEzYzZlOTBjMmJmNWI5MjciLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiIyMzg5NDE3NDY3MTMtcXFlNGE3cmR1dWsyNTZkOG9pNWwwcTM0cXR1OWdwZmcuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiIyMzg5NDE3NDY3MTMtcXFlNGE3cmR1dWsyNTZkOG9pNWwwcTM0cXR1OWdwZmcuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDk1ODQzNTA5MTA3Mjc0NzAzNDkiLCJoZCI6InRvci51cyIsImVtYWlsIjoic2h1YmhhbUB0b3IudXMiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXRfaGFzaCI6Im5LTDBlWjJZa1o0anc3YWY1UUdVLUEiLCJub25jZSI6IjEyMyIsIm5hbWUiOiJTaHViaGFtIFJhdGhpIiwicGljdHVyZSI6Imh0dHBzOi8vbGg0Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tT19SUi1aYlQwZVUvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQUEvQU1adXVjazdCR2hkRkhZdEtfQVN6T01wZlpTSWVHU2NmZy9zOTYtYy9waG90by5qcGciLCJnaXZlbl9uYW1lIjoiU2h1YmhhbSIsImZhbWlseV9uYW1lIjoiUmF0aGkiLCJsb2NhbGUiOiJlbiIsImlhdCI6MTU4OTc5NDI2NywiZXhwIjoxNTg5Nzk3ODY3LCJqdGkiOiIxNzIyNmYwMWMxMGNjNTIyZjMwNjkwMDFhZmI1NWVlYjhkNjNmNTBhIn0.sJ3VBXnqBvRUOwKIwuvV8tt9Eh8I8OZtWMGljuz8SGg83f90Bf-llVNfsnxTBbdntIpVP75sTcSpSKEm35T407QrCPcbAsnawHTFtDvwdqkMSW2Y5FaOkJsrI9iFcRFpOmqqloB4k-OD64vdkw-rInDrrRmgS8f6nui5QQmhk8GS8Mgm6BGNa6isWXPcHCZZgg2R6r03rjfqFM_LNtEb-Zg0h8KbnlmOwo1wKD_iWWszHaWOgWC4iXZRVO-ORz_IAY6g-QXEFSSjju9fAZe4Sr0vjVEE48PZuvTFslU9FrrYi2lW2V5NEJMi5KEj6wc75b55zIbIxqPH6WJXSUm5HA" + let verifyParams = [["GOOGLE_CLIENT_ID": "238941746713-qqe4a7rduuk256d8oi5l0q34qtu9gpfg.apps.googleusercontent.com", + "typeOfLogin": "google", + "verifier": "google-shubs",]] override class func setUp() { super.setUp() @@ -98,7 +101,7 @@ final class torus_utils_swiftTests: XCTestCase { func testRetreiveShares(){ let exp1 = XCTestExpectation(description: "reterive privatekey") let obj = TorusUtils() - let key = obj.retreiveShares(endpoints: self.nodeList, verifier: verifier, verifierParams: ["verifier_id": verifierId], idToken: token) + let key = obj.retreiveShares(endpoints: self.nodeList, verifierIdentifier: verifier, verifierParams: [["verifier_id": verifierId, "idtoken": token]], subVerifierIds: ["google-shubs"], verifierId: verifierId) key.done{ data in print("data", data) XCTAssertEqual(64, data.count)