Skip to content

Commit 8b3fce3

Browse files
authored
Merge pull request #16 from torusresearch/extenstion
feat: remove extension
2 parents 196e39f + 2f0a235 commit 8b3fce3

File tree

6 files changed

+22
-135
lines changed

6 files changed

+22
-135
lines changed

Package.resolved

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let package = Package(
1212
dependencies: [
1313
.package(name: "BigInt", url: "https://github.com/attaswift/BigInt.git", from: "5.3.0"),
1414
.package(name: "CryptoSwift", url: "https://github.com/krzyzanowskim/CryptoSwift.git",from: "1.7.2"),
15-
.package(name: "curvelib.swift", url: "https://github.com/tkey/curvelib.swift", .branch("refactor")),
15+
.package(name: "curvelib.swift", url: "https://github.com/tkey/curvelib.swift", .branch("extension")),
1616
.package(name: "SocketIO", url: "https://github.com/socketio/socket.io-client-swift", .upToNextMajor(from: "16.0.1")),
1717
],
1818
targets: [

Sources/tss-client-swift/CurveSecp256k1.swift

Lines changed: 0 additions & 116 deletions
This file was deleted.

Sources/tss-client-swift/Helpers.swift

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import BigInt
22
import curvelib_swift
33
import CryptoKit
4+
import CryptoSwift
45
import Foundation
56

67
public class TSSHelpers {
@@ -78,7 +79,8 @@ public class TSSHelpers {
7879
throw TSSClientError("Invalid base64 encoded hash")
7980
}
8081
do {
81-
let pk = try CurveSecp256k1.recoverPublicKey(hash: msgB64.hexString, signature: sigString, compressed: false)
82+
let signature = try Signature(hex: sigString)
83+
let pk = try ECDSA.recover(signature: signature, hash: msgB64.hexString).serialize(compressed: false)
8284
return pk
8385
} catch (_) {
8486
throw TSSClientError("Public key recover failed")
@@ -241,18 +243,18 @@ public class TSSHelpers {
241243
let serverLagrangeCoeff = try TSSHelpers.getLagrangeCoefficient(parties: [BigInt(1), userTssIndex], party: BigInt(1))
242244
let userLagrangeCoeff = try TSSHelpers.getLagrangeCoefficient(parties: [BigInt(1), userTssIndex], party: userTssIndex)
243245

244-
let serverTermUnprocessed = try CurveSecp256k1.parsePublicKey(serializedKey: dkgPubKey.toHexString())
245-
let userTermUnprocessed = try CurveSecp256k1.parsePublicKey(serializedKey: userSharePubKey.toHexString())
246+
let serverTermUnprocessed = try PublicKey(hex: dkgPubKey.toHexString())
247+
let userTermUnprocessed = try PublicKey(hex: userSharePubKey.toHexString())
246248

247249
var serverTerm = serverTermUnprocessed
248250
var userTerm = userTermUnprocessed
249251

250252
let serverLagrangeCoeffData = try Data.ensureDataLengthIs32Bytes(serverLagrangeCoeff.serialize())
251253
let userLagrangeCoeffData = try Data.ensureDataLengthIs32Bytes(userLagrangeCoeff.serialize())
252254

253-
let serverTermProcessed = try CurveSecp256k1.ecdh(pubKey: serverTerm, privateKey: try SecretKey(hex: serverLagrangeCoeffData.toHexString()))
255+
let serverTermProcessed = try PublicKey(hex: ECDH.ecdhStandard(sk: SecretKey(hex: serverLagrangeCoeffData.toHexString()), pk: serverTerm))
254256

255-
let userTermProcessed = try CurveSecp256k1.ecdh(pubKey: userTerm, privateKey: SecretKey(hex: userLagrangeCoeffData.toHexString()))
257+
let userTermProcessed = try PublicKey(hex: ECDH.ecdhStandard(sk: SecretKey(hex: userLagrangeCoeffData.toHexString()), pk: userTerm))
256258

257259
serverTerm = serverTermProcessed
258260
userTerm = userTermProcessed
@@ -261,9 +263,9 @@ public class TSSHelpers {
261263
try collection.insert(key: serverTermProcessed)
262264
try collection.insert(key: userTermProcessed)
263265

264-
let combination = try CurveSecp256k1.combineSerializedPublicKeys(keys: collection)
266+
let combination = try PublicKey.combine(collection: collection)
265267

266-
return Data(hexString: combination)!
268+
return Data(hexString: try combination.serialize(compressed: false))!
267269
}
268270

269271
internal static func getAdditiveCoefficient(isUser: Bool, participatingServerIndexes: [BigInt], userTSSIndex: BigInt, serverIndex: BigInt?) throws -> BigInt {

Sources/tss-client-swift/dkls/ChaChaRng.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import curvelib_swift
23
#if canImport(dkls)
34
import dkls
45
#endif
@@ -7,7 +8,7 @@ internal final class ChaChaRng {
78
private(set) var pointer: OpaquePointer?
89

910
public init() throws {
10-
let stateBytes = try CurveSecp256k1.generatePrivateKey()
11+
let stateBytes = try SecretKey().serialize()
1112
let state = Data(hexString: stateBytes)!.base64EncodedString()
1213

1314
var errorCode: Int32 = -1

Tests/tss-client-swiftTests/tss_client_swiftTests.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ final class tss_client_swiftTests: XCTestCase {
3838
let hash = TSSHelpers.hashMessage(message: token)
3939
let data = hash.data(using: .utf8)!
4040
let msgB64 = Data(base64Encoded: data)!
41-
let serializedNodeSig = try CurveSecp256k1.signForRecovery(hash: msgB64.hexString, privateKey: SecretKey(hex: item)).serialize()
41+
let serializedNodeSig = try ECDSA.signRecoverable(key: SecretKey(hex: item), hash: msgB64.hexString).serialize()
4242
let msg: [String: Any] = [
4343
"data": token,
4444
"sig": serializedNodeSig,
@@ -75,7 +75,7 @@ final class tss_client_swiftTests: XCTestCase {
7575
var additiveShares: [BigInt] = []
7676
var shareSum = BigInt.zero
7777
for _ in 0 ..< (parties.count - 1) {
78-
let shareBigUint = BigUInt(try CurveSecp256k1.generatePrivateKey(), radix: 16)
78+
let shareBigUint = BigUInt(try SecretKey().serialize(), radix: 16)
7979
let shareBigInt = BigInt(sign: .plus, magnitude: shareBigUint!)
8080
additiveShares.append(shareBigInt)
8181
shareSum += shareBigInt
@@ -144,12 +144,12 @@ final class tss_client_swiftTests: XCTestCase {
144144

145145
private func setupMockShares(endpoints: [String?], parties: [Int32], localClientIndex: Int32, session: String) throws -> (Data, Data)
146146
{
147-
let privKey = try CurveSecp256k1.generatePrivateKey()
148-
let privKeyBigUInt = BigUInt(privKey, radix: 16)
147+
let privKey = SecretKey()
148+
let privKeyBigUInt = BigUInt(try privKey.serialize(), radix: 16)
149149
let privKeyBigInt = BigInt(sign: .plus, magnitude: privKeyBigUInt!)
150-
let publicKey = try CurveSecp256k1.privateToPublic(privateKey: SecretKey(hex: privKey), compressed: false)
150+
let publicKey = try privKey.toPublic()
151151
try distributeShares(privKey: privKeyBigInt, parties: parties, endpoints: endpoints, localClientIndex: localClientIndex, session: session)
152-
return (Data(hexString: privKey)!, Data(hexString: publicKey)!)
152+
return (Data(hexString: try privKey.serialize())!, Data(hexString: try publicKey.serialize(compressed: false))!)
153153
}
154154

155155
private func generateEndpoints(parties: Int, clientIndex: Int32) -> ([String?], [String?], [Int32]) {
@@ -177,7 +177,7 @@ final class tss_client_swiftTests: XCTestCase {
177177
let msg = "hello world"
178178
let msgHash = TSSHelpers.hashMessage(message: msg)
179179
let clientIndex = Int32(parties - 1)
180-
let randomKey = BigUInt(try CurveSecp256k1.generatePrivateKey(), radix: 16)
180+
let randomKey = BigUInt(try SecretKey().serialize(), radix: 16)
181181
let random = BigInt(sign: .plus, magnitude: randomKey!) + BigInt(Date().timeIntervalSince1970)
182182
let randomNonce = TSSHelpers.hashMessage(message: String(random))
183183
let testingRouteIdentifier = "testingShares"
@@ -207,7 +207,7 @@ final class tss_client_swiftTests: XCTestCase {
207207
let pk = try! TSSHelpers.recoverPublicKey(msgHash: msgHash, s: s, r: r, v: v)
208208
_ = try! TSSHelpers.hexUncompressedPublicKey(pubKey: Data(hexString:pk)!, return64Bytes: true)
209209
let pkHex65 = try! TSSHelpers.hexUncompressedPublicKey(pubKey: Data(hexString:pk)!, return64Bytes: false)
210-
let skToPkHex = try CurveSecp256k1.privateToPublic(privateKey: SecretKey(hex: privateKey.hexString))
210+
let skToPkHex = try SecretKey(hex: privateKey.hexString).toPublic().serialize(compressed: false)
211211
XCTAssert(pkHex65 == skToPkHex)
212212

213213
print(try! TSSHelpers.hexSignature(s: s, r: r, v: v))

0 commit comments

Comments
 (0)