diff --git a/Shared/ContentView.swift b/Shared/ContentView.swift index 3086e8f..0966b9f 100644 --- a/Shared/ContentView.swift +++ b/Shared/ContentView.swift @@ -15,7 +15,7 @@ struct ContentView: View { ProgressView() } else { if vm.loggedIn { - ThresholdKeyView(userData: vm.userData) + ThresholdKeyView(userData: vm.userData!) .tabItem { Image(systemName: "house.circle") Text("Home") diff --git a/Shared/LoginModel.swift b/Shared/LoginModel.swift index 7aed5f1..45d3d1b 100644 --- a/Shared/LoginModel.swift +++ b/Shared/LoginModel.swift @@ -1,17 +1,17 @@ -import Foundation import CustomAuth +import Foundation +import FetchNodeDetails import TorusUtils -import CommonSources let ClientID = "BPi5PB_UiIZ-cPz1GtV5i1I2iOSOHuimiXBI0e-Oe_u6X3oVAbCiAZOTEBtTXw4tsluTITPqA8zMsfxIKMjiqNQ" - -let Network = TorusNetwork.sapphire(.SAPPHIRE_MAINNET) +let Network: TorusNetwork = .sapphire(.SAPPHIRE_MAINNET) +let verifier = "w3a-google-demo" class LoginModel: ObservableObject { @Published var loggedIn: Bool = false @Published var isLoading = false @Published var navigationTitle: String = "" - @Published var userData: TorusKeyData! + @Published var userData: TorusLoginResponse? func setup() async { await MainActor.run(body: { @@ -28,20 +28,11 @@ class LoginModel: ObservableObject { } func loginWithCustomAuth() { - Task { - let verifier = "w3a-google-demo" - let sub = SubVerifierDetails(loginType: .web, - loginProvider: .google, - clientId: "519228911939-cri01h55lsjbsia1k7ll6qpalrus75ps.apps.googleusercontent.com", - verifier: verifier, - redirectURL: "tdsdk://tdsdk/oauthCallback", - browserRedirectURL: "https://scripts.toruswallet.io/redirect.html") - let tdsdk = CustomAuth( web3AuthClientId: ClientID, aggregateVerifierType: .singleLogin, aggregateVerifier: verifier, subVerifierDetails: [sub], network: Network, enableOneKey: true) - do { - let data = try await tdsdk.triggerLogin() - print(data) + let tdsdk = try CustomAuth(config: CustomAuthArgs(urlScheme: "tdsdk://tdsdk/oauthCallback", network: Network, enableOneKey: true, web3AuthClientId: ClientID)) + + let data = try await tdsdk.triggerLogin(args: SubVerifierDetails(typeOfLogin: .google, verifier: verifier, clientId: "519228911939-cri01h55lsjbsia1k7ll6qpalrus75ps.apps.googleusercontent.com", redirectURL: "https://scripts.toruswallet.io/redirect.html")) await MainActor.run(body: { self.userData = data @@ -50,8 +41,6 @@ class LoginModel: ObservableObject { } catch { print(error) } - } } - } diff --git a/Shared/ThresholdKeyView.swift b/Shared/ThresholdKeyView.swift index ca0c999..d356c40 100644 --- a/Shared/ThresholdKeyView.swift +++ b/Shared/ThresholdKeyView.swift @@ -1,9 +1,8 @@ import SwiftUI import TorusUtils import FetchNodeDetails -import CommonSources import CustomAuth -import tkey_mpc_swift +import tkey enum SpinnerLocation { case add_password_btn, change_password_btn, init_reconstruct_btn, nowhere @@ -15,7 +14,7 @@ enum SpinnerLocation { // } struct ThresholdKeyView: View { - @State var userData: TorusKeyData + @State var userData: TorusLoginResponse @State private var showAlert = false @State private var alertContent = "" @State private var totalShares = 0 @@ -53,18 +52,8 @@ struct ThresholdKeyView: View { showAlert = true alertContent = "Resetting your accuont.." do { - guard let finalKeyData = userData.torusKey.finalKeyData else { - alertContent = "Failed to get public address from userinfo" - showAlert = true - showSpinner = SpinnerLocation.nowhere - return - } - guard let postboxkey = finalKeyData.privKey else { - alertContent = "Failed to get public address from userinfo" - showAlert = true - showSpinner = SpinnerLocation.nowhere - return - } + let finalKeyData = userData.torusKey + let postboxkey = finalKeyData.finalKeyData.privKey let temp_storage_layer = try StorageLayer(enable_logging: true, host_url: "https://metadata.tor.us", server_time_offset: 2) let temp_service_provider = try ServiceProvider(enable_logging: true, postbox_key: postboxkey) let temp_threshold_key = try ThresholdKey( @@ -151,42 +140,19 @@ struct ThresholdKeyView: View { func initialize () { Task { showSpinner = SpinnerLocation.init_reconstruct_btn - guard let finalKeyData = userData.torusKey.finalKeyData else { - alertContent = "Failed to get public address from userinfo" - showAlert = true - showSpinner = SpinnerLocation.nowhere - return - } + let finalKeyData = userData.torusKey.finalKeyData - guard let verifierLocal = userData.userInfo["verifier"] as? String, let verifierIdLocal = userData.userInfo["verifierId"] as? String else { - alertContent = "Failed to get verifier or verifierId from userinfo" - showAlert = true - showSpinner = SpinnerLocation.nowhere - return - } - verifier = verifierLocal - verifierId = verifierIdLocal + let postboxkey = finalKeyData.privKey - guard let postboxkey = finalKeyData.privKey else { - alertContent = "Failed to get postboxkey" - showAlert = true - showSpinner = SpinnerLocation.nowhere - return - } + verifier = userData.singleVerifierResponse.userInfo.verifier + verifierId = userData.singleVerifierResponse.userInfo.verifierId - print(finalKeyData) - print(postboxkey) postboxkeyGlobal = postboxkey - guard let sessionData = userData.torusKey.sessionData else { - alertContent = "Failed to get sessionData" - showAlert = true - showSpinner = SpinnerLocation.nowhere - return - } + let sessionData = userData.torusKey.sessionData let sessionTokenData = sessionData.sessionTokenData signatures = sessionTokenData.map { token in - return [ "data": Data(hex: token!.token).base64EncodedString(), + return [ "data": token!.token, "sig": token!.signature ] } assert(signatures.isEmpty != true) @@ -197,11 +163,11 @@ struct ThresholdKeyView: View { showSpinner = SpinnerLocation.nowhere return } - torusUtils = TorusUtils( enableOneKey: true, - network: Network, - clientId: ClientID - ) + + torusUtils = try TorusUtils(params: TorusOptions(clientId: ClientID, network: Network, enableOneKey: true)) + let fnd = NodeDetailManager(network: Network) + nodeDetails = try await fnd.getNodeDetails(verifier: verifier, verifierID: verifierId) tssEndpoint = nodeDetails!.torusNodeTSSEndpoints @@ -490,13 +456,8 @@ struct ThresholdKeyView: View { showAlert = true alertContent = "Resetting your accuont.." do { - guard let finalKeyData = userData.torusKey.finalKeyData else { - alertContent = "Failed to get public address from userinfo" - showAlert = true - showSpinner = SpinnerLocation.nowhere - return - } - let postboxkey = finalKeyData.privKey! + let finalKeyData = userData.torusKey.finalKeyData + let postboxkey = finalKeyData.privKey let temp_storage_layer = try StorageLayer(enable_logging: true, host_url: "https://metadata.tor.us", server_time_offset: 2) let temp_service_provider = try ServiceProvider(enable_logging: true, postbox_key: postboxkey) let temp_threshold_key = try ThresholdKey( diff --git a/Shared/TssView.swift b/Shared/TssView.swift index 80aa58e..c055d5b 100644 --- a/Shared/TssView.swift +++ b/Shared/TssView.swift @@ -1,14 +1,13 @@ import BigInt -import CommonSources import CryptoKit import FetchNodeDetails import Foundation import SwiftUI import TorusUtils -import tss_client_swift +import tssClientSwift import Web3SwiftMpcProvider import web3 -import tkey_mpc_swift +import tkey struct TssView: View { @Binding var threshold_key: ThresholdKey! @@ -376,7 +375,7 @@ struct TssView: View { let params = EthTssAccountParams(publicKey: fullAddress, factorKey: factorKey, tssNonce: tssNonce, tssShare: tssShare, tssIndex: tssIndex, selectedTag: selected_tag, verifier: verifier, verifierID: verifierId, nodeIndexes: [], tssEndpoints: tssEndpoints, authSigs: sigs) - let account = EthereumTssAccount(params: params) + let account = try EthereumTssAccount(params: params) let msg = "hello world" let signature = try account.sign(message: msg) @@ -384,8 +383,8 @@ struct TssView: View { let s = BigInt( sign: .plus, magnitude: BigUInt(signature.prefix(64).suffix(32))) let v = UInt8(signature.suffix(1).toHexString(), radix: 16 )! - let msgHash = TSSHelpers.hashMessage(message: msg) - if TSSHelpers.verifySignature(msgHash: msgHash, s: s, r: r, v: v, pubKey: Data(hex: fullAddress)) { + let msgHash = try TSSHelpers.hashMessage(message: msg) + if TSSHelpers.verifySignature(msgHash: msgHash, s: s, r: r, v: v, pubKey: Data(hex: fullAddress)!) { let sigHex = try TSSHelpers.hexSignature(s: s, r: r, v: v) alertContent = "Signature: " + sigHex showAlert = true @@ -428,7 +427,7 @@ struct TssView: View { let tssPubKeyPoint = try KeyPoint(address: finalPubKey) let fullTssPubKey = try tssPubKeyPoint.getPublicKey(format: PublicKeyEncoding.FullAddress) - let evmAddress = KeyUtil.generateAddress(from: Data(hex: fullTssPubKey).suffix(64) ) + let evmAddress = KeyUtil.generateAddress(from: Data(hex: fullTssPubKey)!.suffix(64) ) print(evmAddress.toChecksumAddress()) // step 2. getting signature @@ -436,13 +435,14 @@ struct TssView: View { let params = EthTssAccountParams(publicKey: fullTssPubKey, factorKey: factorKey, tssNonce: tssNonce, tssShare: tssShare, tssIndex: tssIndex, selectedTag: selected_tag, verifier: verifier, verifierID: verifierId, nodeIndexes: tssPublicAddressInfo.nodeIndexes, tssEndpoints: tssEndpoints, authSigs: sigs) - let tssAccount = EthereumTssAccount(params: params) + let tssAccount = try EthereumTssAccount(params: params) let RPC_URL = "https://rpc.sepolia.org" let chainID = 11155111 // let RPC_URL = "https://rpc.ankr.com/eth_goerli" // let chainID = 5 - let web3Client = EthereumHttpClient(url: URL(string: RPC_URL)!, network: EthereumNetwork.sepolia ) + + let web3Client = EthereumHttpClient(url: URL(string: RPC_URL)!, network: .sepolia) let amount = 0.001 let toAddress = tssAccount.address diff --git a/Shared/helper.swift b/Shared/helper.swift index 886eda8..1760153 100644 --- a/Shared/helper.swift +++ b/Shared/helper.swift @@ -6,7 +6,7 @@ // import Foundation -import tkey_mpc_swift +import tkey func convertPublicKeyFormat ( publicKey: String, outFormat: PublicKeyEncoding ) throws -> String { let point = try KeyPoint(address: publicKey) diff --git a/tkey_ios.xcodeproj/project.pbxproj b/tkey_ios.xcodeproj/project.pbxproj index 328bdd7..96e2ea0 100644 --- a/tkey_ios.xcodeproj/project.pbxproj +++ b/tkey_ios.xcodeproj/project.pbxproj @@ -22,13 +22,13 @@ B30B6B3B28BCC8AC00812C1E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30B6B1128BCC8A900812C1E /* ContentView.swift */; }; B30B6B3C28BCC8AC00812C1E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B30B6B1228BCC8AC00812C1E /* Assets.xcassets */; }; B30B6B3D28BCC8AC00812C1E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B30B6B1228BCC8AC00812C1E /* Assets.xcassets */; }; - B33DD88A2B9AC576006EDB31 /* tkey-mpc-swift in Frameworks */ = {isa = PBXBuildFile; productRef = B33DD8892B9AC576006EDB31 /* tkey-mpc-swift */; }; B3E5316629EC4E7E00174AF1 /* ThresholdKeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E5316529EC4E7E00174AF1 /* ThresholdKeyView.swift */; }; B3E5316729EC4E7E00174AF1 /* ThresholdKeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E5316529EC4E7E00174AF1 /* ThresholdKeyView.swift */; }; B3E5316929EC4ED000174AF1 /* LoaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E5316829EC4ED000174AF1 /* LoaderView.swift */; }; B3E5316A29EC4ED000174AF1 /* LoaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E5316829EC4ED000174AF1 /* LoaderView.swift */; }; B3E5316F29EE75CA00174AF1 /* KeyChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E5316E29EE75CA00174AF1 /* KeyChain.swift */; }; B3E5317029EE75CA00174AF1 /* KeyChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E5316E29EE75CA00174AF1 /* KeyChain.swift */; }; + B3E673252C5CB9EE0006A66B /* tkey in Frameworks */ = {isa = PBXBuildFile; productRef = B3E673242C5CB9EE0006A66B /* tkey */; }; DD694C2D29713D2B00B34585 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30B6B1128BCC8A900812C1E /* ContentView.swift */; }; F00423A22A8B64D600F11B11 /* helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F00423A12A8B64D600F11B11 /* helper.swift */; }; F00423A32A8B64D600F11B11 /* helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F00423A12A8B64D600F11B11 /* helper.swift */; }; @@ -98,8 +98,8 @@ buildActionMask = 2147483647; files = ( 146B0D6929CC01F7000473A8 /* CustomAuth in Frameworks */, + B3E673252C5CB9EE0006A66B /* tkey in Frameworks */, F0B2A2282A9758C000DA2F79 /* Web3SwiftMpcProvider in Frameworks */, - B33DD88A2B9AC576006EDB31 /* tkey-mpc-swift in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -221,7 +221,7 @@ packageProductDependencies = ( 146B0D6829CC01F7000473A8 /* CustomAuth */, F0B2A2272A9758C000DA2F79 /* Web3SwiftMpcProvider */, - B33DD8892B9AC576006EDB31 /* tkey-mpc-swift */, + B3E673242C5CB9EE0006A66B /* tkey */, ); productName = "tkey_ios (iOS)"; productReference = B30B6B1728BCC8AC00812C1E /* tkey_ios.app */; @@ -562,9 +562,10 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 4LS2P2RS45; + DEVELOPMENT_TEAM = 2Q63NCPY55; ENABLE_PREVIEWS = YES; EXCLUDED_ARCHS = ""; + GCC_NO_COMMON_BLOCKS = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -601,8 +602,9 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 4LS2P2RS45; + DEVELOPMENT_TEAM = 2Q63NCPY55; ENABLE_PREVIEWS = YES; + GCC_NO_COMMON_BLOCKS = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -892,24 +894,24 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/torusresearch/customauth-swift-sdk"; requirement = { - kind = upToNextMajorVersion; - minimumVersion = 9.0.0; + branch = features_update; + kind = branch; }; }; B33DD8882B9AC576006EDB31 /* XCRemoteSwiftPackageReference "tkey-mpc-swift" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/tkey/tkey-mpc-swift"; requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.1.0; + branch = update_features; + kind = branch; }; }; F0B2A2262A9758C000DA2F79 /* XCRemoteSwiftPackageReference "web3-swift-mpc-provider" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/tkey/web3-swift-mpc-provider/"; requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.0.0; + branch = spm_fix_path; + kind = branch; }; }; /* End XCRemoteSwiftPackageReference section */ @@ -920,10 +922,10 @@ package = 146B0D6729CC01F7000473A8 /* XCRemoteSwiftPackageReference "customauth-swift-sdk" */; productName = CustomAuth; }; - B33DD8892B9AC576006EDB31 /* tkey-mpc-swift */ = { + B3E673242C5CB9EE0006A66B /* tkey */ = { isa = XCSwiftPackageProductDependency; package = B33DD8882B9AC576006EDB31 /* XCRemoteSwiftPackageReference "tkey-mpc-swift" */; - productName = "tkey-mpc-swift"; + productName = tkey; }; F0B2A2272A9758C000DA2F79 /* Web3SwiftMpcProvider */ = { isa = XCSwiftPackageProductDependency; diff --git a/tkey_ios.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/tkey_ios.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 9fb5eb2..aac2c72 100644 --- a/tkey_ios.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/tkey_ios.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,30 +1,13 @@ { + "originHash" : "d2f1a3776fdb81cd3fb63e88877768f05471648d110346bee3071dd6e037c127", "pins" : [ - { - "identity" : "anycodable", - "kind" : "remoteSourceControl", - "location" : "https://github.com/Flight-School/AnyCodable", - "state" : { - "revision" : "862808b2070cd908cb04f9aafe7de83d35f81b05", - "version" : "0.6.7" - } - }, { "identity" : "bigint", "kind" : "remoteSourceControl", "location" : "https://github.com/attaswift/BigInt.git", "state" : { - "revision" : "0ed110f7555c34ff468e72e1686e59721f2b0da6", - "version" : "5.3.0" - } - }, - { - "identity" : "cryptoswift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/krzyzanowskim/CryptoSwift.git", - "state" : { - "revision" : "7892a123f7e8d0fe62f9f03728b17bbd4f94df5c", - "version" : "1.8.1" + "revision" : "793a7fac0bfc318e85994bf6900652e827aef33e", + "version" : "5.4.1" } }, { @@ -32,8 +15,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/tkey/curvelib.swift", "state" : { - "revision" : "7dad3bf1793de263f83406c08c18c9316abf082f", - "version" : "0.1.2" + "revision" : "9f88bd5e56d1df443a908f7a7e81ae4f4d9170ea", + "version" : "1.0.1" } }, { @@ -41,8 +24,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/torusresearch/customauth-swift-sdk", "state" : { - "revision" : "bb0c8249b6f0e2866e51e47bebdc801848fae45a", - "version" : "9.0.0" + "branch" : "features_update", + "revision" : "dfa6cb5e935524c0b32c430dcbbc32f02503e337" } }, { @@ -50,8 +33,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/torusresearch/fetch-node-details-swift", "state" : { - "revision" : "d591af500f32ce3c88d04af9bb74d746585acfea", - "version" : "5.1.0" + "revision" : "4bd96c33ba8d02d9e27190c5c7cedf09cfdfd656", + "version" : "6.0.3" } }, { @@ -77,8 +60,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/GigaBitcoin/secp256k1.swift.git", "state" : { - "revision" : "1a14e189def5eaa92f839afdd2faad8e43b61a6e", - "version" : "0.12.2" + "revision" : "9683e8e311c76d8114cd308b697dad2f9fc58fed", + "version" : "0.17.0" } }, { @@ -113,8 +96,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections.git", "state" : { - "revision" : "94cf62b3ba8d4bed62680a282d4c25f9c63c2efb", - "version" : "1.1.0" + "revision" : "3d2dc41a01f9e49d84f0a3925fb858bed64f702d", + "version" : "1.1.2" } }, { @@ -122,8 +105,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-http-types", "state" : { - "revision" : "12358d55a3824bd5fed310b999ea8cf83a9a1a65", - "version" : "1.0.3" + "revision" : "ae67c8178eb46944fd85e4dc6dd970e1f3ed6ccd", + "version" : "1.3.0" } }, { @@ -131,8 +114,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-log.git", "state" : { - "revision" : "e97a6fcb1ab07462881ac165fdbb37f067e205d5", - "version" : "1.5.4" + "revision" : "9cb486020ebf03bfa5b5df985387a14a98744537", + "version" : "1.6.1" } }, { @@ -140,8 +123,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio.git", "state" : { - "revision" : "fc63f0cf4e55a4597407a9fc95b16a2bc44b4982", - "version" : "2.64.0" + "revision" : "e4abde8be0e49dc7d66e6eed651254accdcd9533", + "version" : "2.69.0" } }, { @@ -149,8 +132,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-extras.git", "state" : { - "revision" : "a3b640d7dc567225db7c94386a6e71aded1bfa63", - "version" : "1.22.0" + "revision" : "05c36b57453d23ea63785d58a7dbc7b70ba1745e", + "version" : "1.23.0" } }, { @@ -158,8 +141,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-http2.git", "state" : { - "revision" : "0904bf0feb5122b7e5c3f15db7df0eabe623dd87", - "version" : "1.30.0" + "revision" : "b5f7062b60e4add1e8c343ba4eb8da2e324b3a94", + "version" : "1.34.0" } }, { @@ -167,8 +150,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-ssl.git", "state" : { - "revision" : "7c381eb6083542b124a6c18fae742f55001dc2b5", - "version" : "2.26.0" + "revision" : "2b09805797f21c380f7dc9bedaab3157c5508efb", + "version" : "2.27.0" } }, { @@ -176,8 +159,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-transport-services.git", "state" : { - "revision" : "6cbe0ed2b394f21ab0d46b9f0c50c6be964968ce", - "version" : "1.20.1" + "revision" : "38ac8221dd20674682148d6451367f89c2652980", + "version" : "1.21.0" } }, { @@ -185,8 +168,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-system.git", "state" : { - "revision" : "025bcb1165deab2e20d4eaba79967ce73013f496", - "version" : "1.2.1" + "revision" : "d2ba781702a1d8285419c15ee62fd734a9437ff5", + "version" : "1.3.2" } }, { @@ -194,8 +177,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/tkey/tkey-mpc-swift", "state" : { - "revision" : "0b1020f2fe0c3790bc50aa133bb613ff1b55172f", - "version" : "2.1.0" + "branch" : "update_features", + "revision" : "cc7b062745e82d114dd4fdec1c9641665727e539" } }, { @@ -203,8 +186,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/torusresearch/torus-utils-swift", "state" : { - "revision" : "04c62fd5f73f21bd01b7c07e08f6135db26c5940", - "version" : "8.0.0" + "revision" : "303dc2cf41db7c10f769855edad0e717ced2d554", + "version" : "9.0.0" } }, { @@ -212,8 +195,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/torusresearch/tss-client-swift.git", "state" : { - "revision" : "9590a1d784177d4679eca62d4dbfe781e9870c40", - "version" : "2.0.2" + "branch" : "4.0.1", + "revision" : "508e6df4ff34f7e40df99cec0f0a6dbc4e319aa7" } }, { @@ -221,8 +204,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/tkey/web3-swift-mpc-provider/", "state" : { - "revision" : "4945e281822147b1faa2dea782ebe7b912343ddf", - "version" : "2.0.1" + "branch" : "spm_fix_path", + "revision" : "bf6909974c278e791b803a189cee4ec1858141c3" } }, { @@ -244,5 +227,5 @@ } } ], - "version" : 2 + "version" : 3 }