Skip to content

Commit

Permalink
added hash for tokencommitment during commitmentRequest
Browse files Browse the repository at this point in the history
  • Loading branch information
metallicalfa2 committed May 18, 2020
1 parent 4d87ed3 commit 52a0cb3
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 13 deletions.
11 changes: 11 additions & 0 deletions .swiftpm/xcode/xcshareddata/xcschemes/TorusUtils.xcscheme
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,17 @@
BlueprintName = "torus-utils-swiftTests"
ReferencedContainer = "container:">
</BuildableReference>
<SkippedTests>
<Test
Identifier = "torus_utils_swiftTests/testGetPublicAddress()">
</Test>
<Test
Identifier = "torus_utils_swiftTests/testKeyAssign()">
</Test>
<Test
Identifier = "torus_utils_swiftTests/testKeyLookup()">
</Test>
</SkippedTests>
</TestableReference>
</Testables>
</TestAction>
Expand Down
9 changes: 5 additions & 4 deletions Sources/TorusUtils/Extensions/torus+extension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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))
}

Expand Down Expand Up @@ -110,7 +110,7 @@ extension TorusUtils {

}

func retreiveIndividualNodeShare(endpoints : Array<String>, verifier: String, verifierParams: [String: String], idToken:String, nodeSignatures: [[String:String]]) -> Promise<[Int:[String:String]]>{
func retreiveIndividualNodeShare(endpoints : Array<String>, 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<Promise<(data: Data, response: URLResponse)> >()
Expand All @@ -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))
}

Expand All @@ -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}
Expand Down
12 changes: 6 additions & 6 deletions Sources/TorusUtils/TorusUtils.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public class TorusUtils{



public func retreiveShares(endpoints : Array<String>, verifier: String, verifierParams: [String: String], idToken:String) -> Promise<String>{
public func retreiveShares(endpoints : Array<String>, verifierIdentifier: String, verifierParams: [[String: String]], subVerifierIds: [String], verifierId: String) -> Promise<String>{

// Generate privatekey
let privateKey = SECP256K1.generatePrivateKey()
Expand All @@ -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 = ""
Expand All @@ -84,17 +85,16 @@ public class TorusUtils{
print(privateKey?.toHexString() as Any, publicKeyHex as Any, pubKeyX as Any, pubKeyY as Any, tokenCommitment)

return Promise<String>{ 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<String> in
//print("individual shares array", data)
Expand Down
9 changes: 6 additions & 3 deletions Tests/torus-utils-swiftTests/unit_test.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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> = [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 = "[email protected]"
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()
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 52a0cb3

Please sign in to comment.