Skip to content

Commit d9a8fd7

Browse files
Merge pull request #21 from Web3Auth/features_update
update: use latest torus-utils
2 parents 4caaaa8 + e9ae8be commit d9a8fd7

File tree

9 files changed

+48
-107
lines changed

9 files changed

+48
-107
lines changed

Package.resolved

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

Package.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ let package = Package(
1515
targets: ["SingleFactorAuth"])
1616
],
1717
dependencies: [
18-
.package(url: "https://github.com/torusresearch/fetch-node-details-swift.git", from: "6.0.1"),
19-
.package(url: "https://github.com/torusresearch/torus-utils-swift.git", from: "8.1.0"),
18+
.package(url: "https://github.com/torusresearch/fetch-node-details-swift.git", from: "6.0.3"),
19+
.package(url: "https://github.com/torusresearch/torus-utils-swift.git", from: "9.0.0"),
2020
.package(url: "https://github.com/vapor/jwt-kit.git", from: "4.0.0"),
2121
.package(url: "https://github.com/Web3Auth/session-manager-swift.git", from: "4.0.2"),
2222
],

SingleFactorAuth.podspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |spec|
22
spec.name = "SingleFactorAuth"
3-
spec.version = "6.0.0"
3+
spec.version = "7.0.0"
44
spec.ios.deployment_target = "14.0"
55
spec.summary = "Enable one key flow for Web3Auth"
66
spec.homepage = "https://github.com/Web3Auth/single-factor-auth-swift"
@@ -10,8 +10,8 @@ Pod::Spec.new do |spec|
1010
spec.module_name = "SingleFactorAuth"
1111
spec.source = { :git => "https://github.com/web3Auth/single-factor-auth-swift", :tag => spec.version }
1212
spec.source_files = "Sources/SingleFactorAuth/*.{swift,json}","Sources/SingleFactorAuth/**/*.{swift,json}"
13-
spec.dependency 'Torus-fetchNodeDetails', '~> 6.0.1'
13+
spec.dependency 'Torus-fetchNodeDetails', '~> 6.0.3'
1414
spec.dependency 'curvelib.swift', '~> 1.0.1'
15-
spec.dependency 'Torus-utils', '~> 8.1.0'
15+
spec.dependency 'Torus-utils', '~> 9.0.0'
1616
spec.dependency 'TorusSessionManager', '~> 4.0.2'
1717
end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import Foundation
2+
3+
internal extension Data {
4+
var bytes: Array<UInt8> {
5+
Array(self)
6+
}
7+
8+
func toHexString() -> String {
9+
bytes.toHexString()
10+
}
11+
}

Sources/SingleFactorAuth/SingleFactorAuth.swift

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,20 @@ import FetchNodeDetails
44
import Foundation
55
import SessionManager
66
import TorusUtils
7-
import curveSecp256k1
7+
#if canImport(curveSecp256k1)
8+
import curveSecp256k1
9+
#endif
810

911
public class SingleFactorAuth {
1012
let nodeDetailManager: NodeDetailManager
1113
let torusUtils: TorusUtils
1214
private var sessionManager: SessionManager
1315

14-
public init(singleFactorAuthArgs: SingleFactorAuthArgs) {
16+
public init(singleFactorAuthArgs: SingleFactorAuthArgs) throws {
1517
sessionManager = .init()
16-
nodeDetailManager = NodeDetailManager(network: singleFactorAuthArgs.getNetwork().network)
17-
torusUtils = TorusUtils(
18-
enableOneKey: true,
19-
network: singleFactorAuthArgs.getNetwork().network,
20-
clientId: singleFactorAuthArgs.getWeb3AuthClientId()
21-
)
18+
nodeDetailManager = NodeDetailManager(network: singleFactorAuthArgs.getNetwork())
19+
let torusOptions = TorusOptions(clientId: singleFactorAuthArgs.getWeb3AuthClientId(), network: singleFactorAuthArgs.getNetwork(), enableOneKey: true)
20+
try torusUtils = TorusUtils(params: torusOptions)
2221
}
2322

2423
public func initialize() async throws -> TorusSFAKey {
@@ -33,7 +32,7 @@ public class SingleFactorAuth {
3332

3433
let details = try await nodeDetailManager.getNodeDetails(verifier: loginParams.verifier, verifierID: loginParams.verifierId)
3534

36-
let userDetails = try await torusUtils.getUserTypeAndAddress(endpoints: details.getTorusNodeEndpoints(), torusNodePubs: details.getTorusNodePub(), verifier: loginParams.verifier, verifierId: loginParams.verifierId)
35+
let userDetails = try await torusUtils.getUserTypeAndAddress(endpoints: details.getTorusNodeEndpoints(), verifier: loginParams.verifier, verifierId: loginParams.verifierId)
3736

3837
if userDetails.metadata?.upgraded == true {
3938
throw "User already has enabled MFA"
@@ -42,45 +41,32 @@ public class SingleFactorAuth {
4241
if let subVerifierInfoArray = loginParams.subVerifierInfoArray, !subVerifierInfoArray.isEmpty {
4342
var aggregateIdTokenSeeds = [String]()
4443
var subVerifierIds = [String]()
45-
var verifyParams = [[String: String]]()
44+
var verifyParams = [VerifyParams]()
4645
for value in subVerifierInfoArray {
4746
aggregateIdTokenSeeds.append(value.idToken)
4847

49-
var verifyParam: [String: String] = [:]
50-
verifyParam["verifier_id"] = loginParams.verifierId
51-
verifyParam["idtoken"] = value.idToken
48+
let verifyParam = VerifyParams(verifier_id: loginParams.verifierId, idtoken: value.idToken)
5249

5350
verifyParams.append(verifyParam)
5451
subVerifierIds.append(value.verifier)
5552
}
5653
aggregateIdTokenSeeds.sort()
5754

58-
let extraParams = [
59-
"verifier_id": loginParams.verifierId,
60-
"sub_verifier_ids": subVerifierIds,
61-
"verify_params": verifyParams,
62-
] as [String: Codable]
55+
let verifierParams = VerifierParams(verifier_id: loginParams.verifierId, sub_verifier_ids: subVerifierIds, verify_params: verifyParams)
6356

64-
let verifierParams = VerifierParams(verifier_id: loginParams.verifierId)
65-
6657
let aggregateIdToken = try curveSecp256k1.keccak256(data: Data(aggregateIdTokenSeeds.joined(separator: "\u{001d}").utf8)).toHexString()
6758

6859
retrieveSharesResponse = try await torusUtils.retrieveShares(
6960
endpoints: details.getTorusNodeEndpoints(),
70-
torusNodePubs: details.getTorusNodePub(),
71-
indexes: details.getTorusIndexes(),
7261
verifier: loginParams.verifier,
7362
verifierParams: verifierParams,
74-
idToken: aggregateIdToken,
75-
extraParams: extraParams
63+
idToken: aggregateIdToken
7664
)
7765
} else {
7866
let verifierParams = VerifierParams(verifier_id: loginParams.verifierId)
7967

8068
retrieveSharesResponse = try await torusUtils.retrieveShares(
8169
endpoints: details.getTorusNodeEndpoints(),
82-
torusNodePubs: details.getTorusNodePub(),
83-
indexes: details.getTorusIndexes(),
8470
verifier: loginParams.verifier,
8571
verifierParams: verifierParams,
8672
idToken: loginParams.idToken
@@ -89,12 +75,12 @@ public class SingleFactorAuth {
8975

9076
return retrieveSharesResponse
9177
}
92-
78+
9379
public func getKey(loginParams: LoginParams) async throws -> TorusSFAKey {
94-
let torusKey = try await self.getTorusKey(loginParams: loginParams)
95-
96-
let publicAddress = torusKey.finalKeyData?.evmAddress ?? ""
97-
let privateKey = torusKey.finalKeyData?.privKey ?? ""
80+
let torusKey = try await getTorusKey(loginParams: loginParams)
81+
82+
let publicAddress = torusKey.finalKeyData.evmAddress
83+
let privateKey = torusKey.finalKeyData.privKey
9884

9985
let torusSfaKey = TorusSFAKey(privateKey: privateKey, publicAddress: publicAddress)
10086
_ = try await sessionManager.createSession(data: torusSfaKey)
Lines changed: 5 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,9 @@
11
import FetchNodeDetails
2-
import TorusUtils
32

4-
public class SingleFactorAuthArgs {
5-
public static let SIGNER_MAP: [Web3AuthNetwork: String] = [
6-
Web3AuthNetwork.SAPPHIRE_MAINNET: "https://signer.tor.us",
7-
Web3AuthNetwork.SAPPHIRE_DEVNET: "https://signer.tor.us",
8-
Web3AuthNetwork.MAINNET: "https://signer.tor.us",
9-
Web3AuthNetwork.TESTNET: "https://signer.tor.us",
10-
Web3AuthNetwork.CYAN: "https://signer-polygon.tor.us",
11-
Web3AuthNetwork.AQUA: "https://signer-polygon.tor.us",
12-
]
3+
public typealias Web3AuthNetwork = TorusNetwork
134

14-
private var network: Web3AuthNetwork
5+
public class SingleFactorAuthArgs {
6+
private var network: TorusNetwork
157
private var networkUrl: String
168
private var web3AuthClientId: String
179

@@ -20,7 +12,7 @@ public class SingleFactorAuthArgs {
2012
self.networkUrl = networkUrl
2113
self.web3AuthClientId = web3AuthClientId
2214
}
23-
15+
2416
public func getWeb3AuthClientId() -> String {
2517
return web3AuthClientId
2618
}
@@ -30,50 +22,10 @@ public class SingleFactorAuthArgs {
3022
}
3123

3224
public func getSignerUrl() -> String? {
33-
return SingleFactorAuthArgs.SIGNER_MAP[network]
25+
return network.signerMap
3426
}
3527

3628
public func setNetwork(network: Web3AuthNetwork) {
3729
self.network = network
3830
}
3931
}
40-
41-
public enum Web3AuthNetwork : Equatable, Hashable {
42-
case SAPPHIRE_DEVNET
43-
case SAPPHIRE_MAINNET
44-
case MAINNET
45-
case TESTNET
46-
case CYAN
47-
case AQUA
48-
case CELESTE
49-
case CUSTOM(path: String)
50-
51-
public var path: String {
52-
return self.network.path
53-
}
54-
55-
public var name: String {
56-
return self.network.name
57-
}
58-
59-
public var network: TorusNetwork {
60-
switch self {
61-
case .SAPPHIRE_DEVNET:
62-
return .sapphire(.SAPPHIRE_DEVNET)
63-
case .SAPPHIRE_MAINNET:
64-
return .sapphire(.SAPPHIRE_MAINNET)
65-
case .MAINNET:
66-
return .legacy(.MAINNET)
67-
case .TESTNET:
68-
return .legacy(.TESTNET)
69-
case .CYAN:
70-
return .legacy(.CYAN)
71-
case .AQUA:
72-
return .legacy(.AQUA)
73-
case .CELESTE:
74-
return .legacy(.CELESTE)
75-
case .CUSTOM(path: let path):
76-
return .legacy(.CUSTOM(path: path))
77-
}
78-
}
79-
}

Tests/SingleFactorAuthTests/AquaTest.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import BigInt
22
import JWTKit
33
import XCTest
4+
import FetchNodeDetails
45

56
@testable import SingleFactorAuth
67

@@ -13,8 +14,8 @@ final class AquaTest: XCTestCase {
1314
let TEST_AGGREGRATE_VERIFIER = "torus-test-health-aggregate"
1415

1516
override func setUp() {
16-
singleFactorAuthArgs = SingleFactorAuthArgs(web3AuthClientId: "CLIENT ID", network: Web3AuthNetwork.AQUA)
17-
singleFactoreAuth = SingleFactorAuth(singleFactorAuthArgs: singleFactorAuthArgs)
17+
singleFactorAuthArgs = SingleFactorAuthArgs(web3AuthClientId: "CLIENT ID", network: .legacy(.AQUA))
18+
singleFactoreAuth = try! SingleFactorAuth(singleFactorAuthArgs: singleFactorAuthArgs)
1819
}
1920

2021
func testGetTorusKey() async throws {

Tests/SingleFactorAuthTests/CyanTest.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ final class CyanTest: XCTestCase {
1313
let TEST_AGGREGRATE_VERIFIER = "torus-test-health-aggregate"
1414

1515
override func setUp() {
16-
singleFactorAuthArgs = SingleFactorAuthArgs(web3AuthClientId: "CLIENT ID", network: Web3AuthNetwork.CYAN)
17-
singleFactoreAuth = SingleFactorAuth(singleFactorAuthArgs: singleFactorAuthArgs)
16+
singleFactorAuthArgs = SingleFactorAuthArgs(web3AuthClientId: "CLIENT ID", network: .legacy(.CYAN))
17+
singleFactoreAuth = try! SingleFactorAuth(singleFactorAuthArgs: singleFactorAuthArgs)
1818
}
1919

2020
func testGetTorusKey() async throws {

Tests/SingleFactorAuthTests/SingleFactorAuthTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ final class SingleFactorAuthTests: XCTestCase {
1313
let TEST_AGGREGRATE_VERIFIER = "torus-test-health-aggregate"
1414

1515
override func setUp() {
16-
singleFactorAuthArgs = SingleFactorAuthArgs(web3AuthClientId: "CLIENT ID", network: Web3AuthNetwork.TESTNET)
17-
singleFactoreAuth = SingleFactorAuth(singleFactorAuthArgs: singleFactorAuthArgs)
16+
singleFactorAuthArgs = SingleFactorAuthArgs(web3AuthClientId: "CLIENT ID", network: .legacy(.TESTNET))
17+
singleFactoreAuth = try! SingleFactorAuth(singleFactorAuthArgs: singleFactorAuthArgs)
1818
}
1919

2020
func testGetTorusKey() async throws {

0 commit comments

Comments
 (0)