Skip to content

Commit 018a7fd

Browse files
committed
Update sfa provider, remove AggregateVerifier logic
1 parent ee9e21b commit 018a7fd

File tree

2 files changed

+26
-33
lines changed

2 files changed

+26
-33
lines changed

packages/service-provider-sfa/src/SfaServiceProvider.ts

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { NodeDetailManager } from "@toruslabs/fetch-node-details";
44
import { keccak256, Torus, TorusKey } from "@toruslabs/torus.js";
55
import BN from "bn.js";
66

7-
import { AggregateVerifierParams, LoginParams, SfaServiceProviderArgs, Web3AuthOptions } from "./interfaces";
7+
import { LoginParams, SfaServiceProviderArgs, VerifierParams, Web3AuthOptions } from "./interfaces";
88

99
class 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
});

packages/service-provider-sfa/src/interfaces.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,20 @@ export interface TorusSubVerifierInfo {
2020
idToken: string;
2121
}
2222

23-
export type AggregateVerifierParams = {
24-
verify_params: { verifier_id: string; idtoken: string }[];
25-
sub_verifier_ids: string[];
23+
export type VerifierParams = {
24+
verify_params?: {
25+
verifier_id: string;
26+
idtoken: string;
27+
}[];
28+
sub_verifier_ids?: string[];
2629
verifier_id: string;
2730
};
2831

2932
export type LoginParams = {
30-
verifier: string;
31-
verifierId: string;
33+
authConnectionId: string;
34+
userId: string;
3235
idToken: string;
33-
subVerifierInfoArray?: TorusSubVerifierInfo[];
36+
groupedAuthConnectionId?: string;
3437
// offset in seconds
3538
serverTimeOffset?: number;
3639
};

0 commit comments

Comments
 (0)