@@ -4,21 +4,20 @@ import FetchNodeDetails
4
4
import Foundation
5
5
import SessionManager
6
6
import TorusUtils
7
- import curveSecp256k1
7
+ #if canImport(curveSecp256k1)
8
+ import curveSecp256k1
9
+ #endif
8
10
9
11
public class SingleFactorAuth {
10
12
let nodeDetailManager : NodeDetailManager
11
13
let torusUtils : TorusUtils
12
14
private var sessionManager : SessionManager
13
15
14
- public init ( singleFactorAuthArgs: SingleFactorAuthArgs ) {
16
+ public init ( singleFactorAuthArgs: SingleFactorAuthArgs ) throws {
15
17
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)
22
21
}
23
22
24
23
public func initialize( ) async throws -> TorusSFAKey {
@@ -33,7 +32,7 @@ public class SingleFactorAuth {
33
32
34
33
let details = try await nodeDetailManager. getNodeDetails ( verifier: loginParams. verifier, verifierID: loginParams. verifierId)
35
34
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)
37
36
38
37
if userDetails. metadata? . upgraded == true {
39
38
throw " User already has enabled MFA "
@@ -42,45 +41,32 @@ public class SingleFactorAuth {
42
41
if let subVerifierInfoArray = loginParams. subVerifierInfoArray, !subVerifierInfoArray. isEmpty {
43
42
var aggregateIdTokenSeeds = [ String] ( )
44
43
var subVerifierIds = [ String] ( )
45
- var verifyParams = [ [ String : String ] ] ( )
44
+ var verifyParams = [ VerifyParams ] ( )
46
45
for value in subVerifierInfoArray {
47
46
aggregateIdTokenSeeds. append ( value. idToken)
48
47
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)
52
49
53
50
verifyParams. append ( verifyParam)
54
51
subVerifierIds. append ( value. verifier)
55
52
}
56
53
aggregateIdTokenSeeds. sort ( )
57
54
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)
63
56
64
- let verifierParams = VerifierParams ( verifier_id: loginParams. verifierId)
65
-
66
57
let aggregateIdToken = try curveSecp256k1. keccak256 ( data: Data ( aggregateIdTokenSeeds. joined ( separator: " \u{001d} " ) . utf8) ) . toHexString ( )
67
58
68
59
retrieveSharesResponse = try await torusUtils. retrieveShares (
69
60
endpoints: details. getTorusNodeEndpoints ( ) ,
70
- torusNodePubs: details. getTorusNodePub ( ) ,
71
- indexes: details. getTorusIndexes ( ) ,
72
61
verifier: loginParams. verifier,
73
62
verifierParams: verifierParams,
74
- idToken: aggregateIdToken,
75
- extraParams: extraParams
63
+ idToken: aggregateIdToken
76
64
)
77
65
} else {
78
66
let verifierParams = VerifierParams ( verifier_id: loginParams. verifierId)
79
67
80
68
retrieveSharesResponse = try await torusUtils. retrieveShares (
81
69
endpoints: details. getTorusNodeEndpoints ( ) ,
82
- torusNodePubs: details. getTorusNodePub ( ) ,
83
- indexes: details. getTorusIndexes ( ) ,
84
70
verifier: loginParams. verifier,
85
71
verifierParams: verifierParams,
86
72
idToken: loginParams. idToken
@@ -89,12 +75,12 @@ public class SingleFactorAuth {
89
75
90
76
return retrieveSharesResponse
91
77
}
92
-
78
+
93
79
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
98
84
99
85
let torusSfaKey = TorusSFAKey ( privateKey: privateKey, publicAddress: publicAddress)
100
86
_ = try await sessionManager. createSession ( data: torusSfaKey)
0 commit comments