Skip to content

Commit

Permalink
refactor: add types for extra params
Browse files Browse the repository at this point in the history
  • Loading branch information
metalurgical committed Jul 24, 2024
1 parent 974cbc1 commit 43f7444
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 33 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,4 @@ dist
.tern-port

.env.test
**/*.DS_Store
131 changes: 109 additions & 22 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions src/TorusUtilsExtraParams.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
export interface TorusUtilsExtraParams {
nonce?: string; // farcaster

message?: string; // farcaster

signature?: string; // farcaster, passkey, webauthn

clientDataJson?: string; // passkey, webauthn

authenticatorData?: string; // passkey, webauhn

publicKey?: string; // passkey, webauthn

challenge?: string; // passkey, webauthn

rpOrigin?: string; // passkey, webauthn

rpId?: string; // passkey, webauthn

session_token_exp_second?: number;

timestamp?: number; // Signature
}
3 changes: 2 additions & 1 deletion src/helpers/nodeUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
} from "../interfaces";
import log from "../loglevel";
import { Some } from "../some";
import { TorusUtilsExtraParams } from "../TorusUtilsExtraParams";
import { calculateMedian, getProxyCoordinatorEndpointIndex, kCombinations, normalizeKeysResult, retryCommitment, thresholdSame } from "./common";
import {
derivePubKey,
Expand Down Expand Up @@ -174,7 +175,7 @@ export async function retrieveOrImportShare(params: {
overrideExistingKey: boolean;
nodePubkeys: INodePub[];
newImportedShares?: ImportedShare[];
extraParams: Record<string, unknown>;
extraParams: TorusUtilsExtraParams;
}): Promise<TorusKey> {
const {
legacyMetadataHost,
Expand Down
25 changes: 15 additions & 10 deletions src/torus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import {
VerifierParams,
} from "./interfaces";
import log from "./loglevel";
import { TorusUtilsExtraParams } from "./TorusUtilsExtraParams";

// Implement threshold logic wrappers around public APIs
// of Torus nodes to handle malicious node responses
Expand Down Expand Up @@ -117,7 +118,7 @@ class Torus {
verifierParams: VerifierParams,
idToken: string,
nodePubkeys: INodePub[],
extraParams: Record<string, unknown> = {},
extraParams: TorusUtilsExtraParams = {},
useDkg?: boolean
): Promise<TorusKey> {
if (nodePubkeys.length === 0) {
Expand All @@ -144,6 +145,11 @@ class Torus {
if (!shouldUseDkg && nodePubkeys.length === 0) {
throw new Error("nodePubkeys param is required");
}

if (!extraParams.session_token_exp_second) {
extraParams.session_token_exp_second = Torus.sessionTime;
}

return retrieveOrImportShare({
legacyMetadataHost: this.legacyMetadataHost,
serverTimeOffset: this.serverTimeOffset,
Expand All @@ -162,10 +168,7 @@ class Torus {
newImportedShares: [],
overrideExistingKey: false,
nodePubkeys,
extraParams: {
...extraParams,
session_token_exp_second: Torus.sessionTime,
},
extraParams,
});
}

Expand All @@ -186,12 +189,16 @@ class Torus {
verifierParams: VerifierParams,
idToken: string,
newPrivateKey: string,
extraParams: Record<string, unknown> = {}
extraParams: TorusUtilsExtraParams = {}
): Promise<TorusKey> {
if (endpoints.length !== nodeIndexes.length) {
throw new Error(`length of endpoints array must be same as length of nodeIndexes array`);
}

if (!extraParams.session_token_exp_second) {
extraParams.session_token_exp_second = Torus.sessionTime;
}

let privKeyBuffer;

if (this.keyType === KEY_TYPE.SECP256K1) {
Expand All @@ -218,6 +225,7 @@ class Torus {
throw new Error("invalid shares data for ed25519 key, public key is not matching after generating shares");
}
}

return retrieveOrImportShare({
legacyMetadataHost: this.legacyMetadataHost,
serverTimeOffset: this.serverTimeOffset,
Expand All @@ -236,10 +244,7 @@ class Torus {
overrideExistingKey: true,
newImportedShares: sharesData,
nodePubkeys,
extraParams: {
...extraParams,
session_token_exp_second: Torus.sessionTime,
},
extraParams,
});
}

Expand Down

0 comments on commit 43f7444

Please sign in to comment.