@@ -4,7 +4,7 @@ import { NodeDetailManager } from "@toruslabs/fetch-node-details";
44import { keccak256 , Torus , TorusKey } from "@toruslabs/torus.js" ;
55import BN from "bn.js" ;
66
7- import { AggregateVerifierParams , LoginParams , SfaServiceProviderArgs , Web3AuthOptions } from "./interfaces" ;
7+ import { LoginParams , SfaServiceProviderArgs , VerifierParams , Web3AuthOptions } from "./interfaces" ;
88
99class SfaServiceProvider extends ServiceProviderBase {
1010 web3AuthOptions : Web3AuthOptions ;
@@ -46,41 +46,31 @@ class SfaServiceProvider extends ServiceProviderBase {
4646 }
4747
4848 async connect ( params : LoginParams ) : Promise < BN > {
49- const { verifier, verifierId, idToken, subVerifierInfoArray } = params ;
50- const verifierDetails = { verifier, verifierId } ;
51-
49+ const { authConnectionId, userId, idToken, groupedAuthConnectionId } = params ;
50+ const verifier = groupedAuthConnectionId || authConnectionId ;
51+ const verifierId = userId ;
52+ const verifierParams : VerifierParams = { verifier_id : userId } ;
53+ let aggregateIdToken = "" ;
54+ const finalIdToken = idToken ;
55+
56+ if ( groupedAuthConnectionId ) {
57+ verifierParams [ "verify_params" ] = [ { verifier_id : userId , idtoken : finalIdToken } ] ;
58+ verifierParams [ "sub_verifier_ids" ] = [ authConnectionId ] ;
59+ aggregateIdToken = keccak256 ( Buffer . from ( finalIdToken , "utf8" ) ) . slice ( 2 ) ;
60+ }
5261 // fetch node details.
53- const { torusNodeEndpoints, torusIndexes, torusNodePub } = await this . nodeDetailManagerInstance . getNodeDetails ( verifierDetails ) ;
62+ const { torusNodeEndpoints, torusIndexes, torusNodePub } = await this . nodeDetailManagerInstance . getNodeDetails ( { verifier , verifierId } ) ;
5463
5564 if ( params . serverTimeOffset ) {
5665 this . authInstance . serverTimeOffset = params . serverTimeOffset ;
5766 }
5867
59- let finalIdToken = idToken ;
60- let finalVerifierParams = { verifier_id : verifierId } ;
61- if ( subVerifierInfoArray && subVerifierInfoArray ?. length > 0 ) {
62- const aggregateVerifierParams : AggregateVerifierParams = { verify_params : [ ] , sub_verifier_ids : [ ] , verifier_id : "" } ;
63- const aggregateIdTokenSeeds = [ ] ;
64- for ( let index = 0 ; index < subVerifierInfoArray . length ; index += 1 ) {
65- const userInfo = subVerifierInfoArray [ index ] ;
66- aggregateVerifierParams . verify_params . push ( { verifier_id : verifierId , idtoken : userInfo . idToken } ) ;
67- aggregateVerifierParams . sub_verifier_ids . push ( userInfo . verifier ) ;
68- aggregateIdTokenSeeds . push ( userInfo . idToken ) ;
69- }
70- aggregateIdTokenSeeds . sort ( ) ;
71-
72- finalIdToken = keccak256 ( Buffer . from ( aggregateIdTokenSeeds . join ( String . fromCharCode ( 29 ) ) , "utf8" ) ) . slice ( 2 ) ;
73-
74- aggregateVerifierParams . verifier_id = verifierId ;
75- finalVerifierParams = aggregateVerifierParams ;
76- }
77-
7868 const torusKey = await this . authInstance . retrieveShares ( {
7969 endpoints : torusNodeEndpoints ,
8070 indexes : torusIndexes ,
81- verifier,
82- verifierParams : finalVerifierParams ,
83- idToken : finalIdToken ,
71+ verifier : verifier ,
72+ verifierParams : verifierParams ,
73+ idToken : aggregateIdToken || finalIdToken ,
8474 nodePubkeys : torusNodePub ,
8575 useDkg : this . web3AuthOptions . useDkg ,
8676 } ) ;
0 commit comments