Skip to content

Commit a29b786

Browse files
committed
refactor: sigAndKeyType validation and getTssPath
1 parent d81f816 commit a29b786

File tree

3 files changed

+52
-42
lines changed

3 files changed

+52
-42
lines changed

packages/fnd-base/src/endpoints.ts

+4-15
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import {
22
KEY_TYPE,
33
LEGACY_NETWORKS_ROUTE_MAP,
4-
SIG_TYPE,
54
TORUS_LEGACY_NETWORK_TYPE,
65
TORUS_SAPPHIRE_NETWORK,
76
TORUS_SAPPHIRE_NETWORK_TYPE,
87
WEB3AUTH_KEY_TYPE,
98
WEB3AUTH_SIG_TYPE,
109
} from "@toruslabs/constants";
1110

12-
import { validateKeyTypeAndSigTypeForTSS } from "./utils";
11+
import { validateSigTypeAndGetTSSPath } from "./utils";
1312

1413
export const SAPPHIRE_NETWORK_URLS: Record<TORUS_SAPPHIRE_NETWORK_TYPE, string[]> = {
1514
[TORUS_SAPPHIRE_NETWORK.SAPPHIRE_DEVNET]: [
@@ -61,25 +60,15 @@ export const getTSSEndpoints = (
6160
sapphireNetwork: TORUS_SAPPHIRE_NETWORK_TYPE,
6261
legacyNetwork?: TORUS_LEGACY_NETWORK_TYPE,
6362
keyType = KEY_TYPE.SECP256K1 as WEB3AUTH_KEY_TYPE,
64-
sigType = SIG_TYPE.ECDSA_SECP256K1 as WEB3AUTH_SIG_TYPE
63+
sigType?: WEB3AUTH_SIG_TYPE
6564
) => {
6665
const endpoints = SAPPHIRE_NETWORK_URLS[sapphireNetwork];
6766
if (!endpoints || endpoints.length === 0) {
6867
throw new Error(`Unsupported network: ${sapphireNetwork}`);
6968
}
7069

71-
validateKeyTypeAndSigTypeForTSS(keyType, sigType);
72-
73-
let tssPath: "tss" | "tss-frost";
74-
if (sigType === SIG_TYPE.ECDSA_SECP256K1) {
75-
// we will use dkls for ECDSA Sigs
76-
tssPath = "tss";
77-
} else if (sigType === SIG_TYPE.ED25519 || sigType === SIG_TYPE.BIP340) {
78-
// we will use frost for Ed25519 and BIP340 Sigs
79-
tssPath = "tss-frost";
80-
} else {
81-
throw new Error(`Unsupported signature type: ${sigType}`);
82-
}
70+
// validate the keyType and sigType and get the relevant tssPath
71+
const tssPath = validateSigTypeAndGetTSSPath(keyType, sigType);
8372

8473
const routeIdentifier = LEGACY_NETWORKS_ROUTE_MAP[legacyNetwork as TORUS_LEGACY_NETWORK_TYPE];
8574
return endpoints.map((e) => {

packages/fnd-base/src/index.ts

+27
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1+
import {
2+
INodeDetails,
3+
LEGACY_NETWORKS_ROUTE_MAP,
4+
TORUS_LEGACY_NETWORK,
5+
TORUS_LEGACY_NETWORK_TYPE,
6+
TORUS_NETWORK_TYPE,
7+
TORUS_SAPPHIRE_NETWORK,
8+
TORUS_SAPPHIRE_NETWORK_TYPE,
9+
WEB3AUTH_KEY_TYPE,
10+
WEB3AUTH_SIG_TYPE,
11+
} from "@toruslabs/constants";
12+
13+
import { getSapphireNodeDetails } from "./sapphireNetworkConfig";
14+
115
export * from "./endpoints";
216
export * from "./sapphireNetworkConfig";
317
export * from "./utils";
18+
19+
export function fetchLocalConfig(network: TORUS_NETWORK_TYPE, keyType: WEB3AUTH_KEY_TYPE, sigType?: WEB3AUTH_SIG_TYPE): INodeDetails | undefined {
20+
if (Object.values(TORUS_SAPPHIRE_NETWORK).includes(network as TORUS_SAPPHIRE_NETWORK_TYPE)) {
21+
return getSapphireNodeDetails(network as TORUS_SAPPHIRE_NETWORK_TYPE, undefined, keyType, sigType);
22+
}
23+
24+
if (Object.values(TORUS_LEGACY_NETWORK).includes(network as TORUS_LEGACY_NETWORK_TYPE)) {
25+
const legacyMap = LEGACY_NETWORKS_ROUTE_MAP[network as TORUS_LEGACY_NETWORK_TYPE];
26+
if (legacyMap.migrationCompleted) return getSapphireNodeDetails(legacyMap.networkMigratedTo, network as TORUS_LEGACY_NETWORK_TYPE, keyType);
27+
}
28+
29+
return undefined;
30+
}

packages/fnd-base/src/utils.ts

+21-27
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,6 @@
1-
import {
2-
INodeDetails,
3-
KEY_TYPE,
4-
LEGACY_NETWORKS_ROUTE_MAP,
5-
SIG_TYPE,
6-
TORUS_LEGACY_NETWORK,
7-
TORUS_LEGACY_NETWORK_TYPE,
8-
TORUS_NETWORK_TYPE,
9-
TORUS_SAPPHIRE_NETWORK,
10-
TORUS_SAPPHIRE_NETWORK_TYPE,
11-
WEB3AUTH_KEY_TYPE,
12-
WEB3AUTH_SIG_TYPE,
13-
} from "@toruslabs/constants";
1+
import { KEY_TYPE, SIG_TYPE, WEB3AUTH_KEY_TYPE, WEB3AUTH_SIG_TYPE } from "@toruslabs/constants";
142

15-
import { getSapphireNodeDetails } from "./sapphireNetworkConfig";
16-
17-
export function validateKeyTypeAndSigTypeForTSS(keyType: WEB3AUTH_KEY_TYPE, sigType: WEB3AUTH_SIG_TYPE) {
3+
export function validateKeyTypeAndSigTypeForTSS(keyType: WEB3AUTH_KEY_TYPE, sigType?: WEB3AUTH_SIG_TYPE) {
184
if (sigType === SIG_TYPE.ECDSA_SECP256K1) {
195
if (keyType !== KEY_TYPE.SECP256K1) {
206
throw new Error("Invalid key type for ecdsa-secp256k1");
@@ -27,20 +13,28 @@ export function validateKeyTypeAndSigTypeForTSS(keyType: WEB3AUTH_KEY_TYPE, sigT
2713
if (keyType !== KEY_TYPE.ED25519) {
2814
throw new Error("Invalid key type for ed25519");
2915
}
30-
} else {
31-
throw new Error(`Invalid signature type, ${sigType}`);
3216
}
3317
}
3418

35-
export function fetchLocalConfig(network: TORUS_NETWORK_TYPE, keyType: WEB3AUTH_KEY_TYPE, sigType?: WEB3AUTH_SIG_TYPE): INodeDetails | undefined {
36-
if (Object.values(TORUS_SAPPHIRE_NETWORK).includes(network as TORUS_SAPPHIRE_NETWORK_TYPE)) {
37-
return getSapphireNodeDetails(network as TORUS_SAPPHIRE_NETWORK_TYPE, undefined, keyType, sigType);
38-
}
19+
export function validateSigTypeAndGetTSSPath(keyType: WEB3AUTH_KEY_TYPE, sigType?: WEB3AUTH_SIG_TYPE): "tss" | "tss-frost" {
20+
validateKeyTypeAndSigTypeForTSS(keyType, sigType);
3921

40-
if (Object.values(TORUS_LEGACY_NETWORK).includes(network as TORUS_LEGACY_NETWORK_TYPE)) {
41-
const legacyMap = LEGACY_NETWORKS_ROUTE_MAP[network as TORUS_LEGACY_NETWORK_TYPE];
42-
if (legacyMap.migrationCompleted) return getSapphireNodeDetails(legacyMap.networkMigratedTo, network as TORUS_LEGACY_NETWORK_TYPE, keyType);
22+
let tssPath: "tss" | "tss-frost";
23+
if (!sigType) {
24+
// if sigType is not provided, we will determine the tssPath based on the keyType
25+
if (keyType === KEY_TYPE.SECP256K1) {
26+
tssPath = "tss";
27+
} else if (keyType === KEY_TYPE.ED25519) {
28+
tssPath = "tss-frost";
29+
}
30+
} else if (sigType === SIG_TYPE.ECDSA_SECP256K1) {
31+
// we will use dkls for ECDSA Sigs
32+
tssPath = "tss";
33+
} else if (sigType === SIG_TYPE.ED25519 || sigType === SIG_TYPE.BIP340) {
34+
// we will use frost for Ed25519 and BIP340 Sigs
35+
tssPath = "tss-frost";
36+
} else {
37+
throw new Error(`Unsupported signature type: ${sigType} for key: ${keyType}`);
4338
}
44-
45-
return undefined;
39+
return tssPath;
4640
}

0 commit comments

Comments
 (0)