Skip to content

Commit 3b36f35

Browse files
author
himanshu
committed
revert padding and fix variable naming
1 parent 8b3f56f commit 3b36f35

9 files changed

+60
-62
lines changed

src/Point.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,7 @@ class Point {
1919
encode(enc: string): Buffer {
2020
switch (enc) {
2121
case "arr":
22-
return Buffer.concat([
23-
Buffer.from("04", "hex"),
24-
Buffer.from(this.x.toString("hex", 64), "hex"),
25-
Buffer.from(this.y.toString("hex", 64), "hex"),
26-
]);
22+
return Buffer.concat([Buffer.from("04", "hex"), Buffer.from(this.x.toString("hex"), "hex"), Buffer.from(this.y.toString("hex"), "hex")]);
2723
case "elliptic-compressed": {
2824
const key = this.ecCurve.keyFromPublic({ x: this.x.toString("hex", 64), y: this.y.toString("hex", 64) }, "hex");
2925
return Buffer.from(key.getPublic(true, "hex"));

src/Share.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class Share {
1919

2020
toJSON(): StringifiedType {
2121
return {
22-
share: this.share.toString("hex", 64),
23-
shareIndex: this.shareIndex.toString("hex", 64),
22+
share: this.share.toString("hex"),
23+
shareIndex: this.shareIndex.toString("hex"),
2424
};
2525
}
2626
}

src/helpers/common.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { BN } from "bn.js";
33
import JsonStringify from "json-stable-stringify";
44

55
import { EciesHex, VerifierLookupResponse } from "../interfaces";
6-
import { keccak256 } from ".";
6+
import { keccak256 } from "./keyUtils";
77

88
// this function normalizes the result from nodes before passing the result to threshold check function
99
// For ex: some fields returns by nodes might be different from each other

src/helpers/keyUtils.ts

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { INodePub } from "@toruslabs/constants";
22
import { Ecies, encrypt } from "@toruslabs/eccrypto";
33
import BN from "bn.js";
4-
import { curve, ec as EC } from "elliptic";
4+
import { curve as curveUtils, ec as EC } from "elliptic";
55
import { keccak256 as keccakHash } from "ethereum-cryptography/keccak";
66
import stringify from "json-stable-stringify";
77

8-
import { ImportedShare, KeyType } from "..";
8+
import { CurveType, ImportedShare } from "../interfaces";
99
import log from "../loglevel";
10-
import { encParamsBufToHex, generateNonceMetadataParams, generateRandomPolynomial } from ".";
10+
import { encParamsBufToHex } from "./common";
11+
import { generateRandomPolynomial } from "./langrangeInterpolatePoly";
12+
import { generateNonceMetadataParams } from "./metadataUtils";
1113

1214
export function keccak256(a: Buffer): string {
1315
const hash = Buffer.from(keccakHash(a)).toString("hex");
@@ -64,7 +66,7 @@ export function getPostboxKeyFrom1OutOf1(ecCurve: EC, privKey: string, nonce: st
6466
return privKeyBN.sub(nonceBN).umod(ecCurve.curve.n).toString("hex");
6567
}
6668

67-
export function derivePubKey(ecCurve: EC, sk: BN): curve.base.BasePoint {
69+
export function derivePubKey(ecCurve: EC, sk: BN): curveUtils.base.BasePoint {
6870
const skHex = sk.toString(16, 64);
6971
return ecCurve.keyFromPrivate(skHex).getPublic();
7072
}
@@ -73,7 +75,7 @@ export const encryptionEC = new EC("secp256k1");
7375

7476
export const generateShares = async (
7577
ecCurve: EC,
76-
keyType: KeyType,
78+
curve: CurveType,
7779
serverTimeOffset: number,
7880
nodeIndexes: number[],
7981
nodePubkeys: INodePub[],
@@ -94,7 +96,7 @@ export const generateShares = async (
9496
const oAuthPubKey = ecCurve.keyFromPrivate(oAuthKey.toString("hex").padStart(64, "0")).getPublic();
9597
const poly = generateRandomPolynomial(ecCurve, degree, oAuthKey);
9698
const shares = poly.generateShares(nodeIndexesBn);
97-
const nonceParams = generateNonceMetadataParams(ecCurve, serverTimeOffset, "getOrSetNonce", oAuthKey, keyType, randomNonce);
99+
const nonceParams = generateNonceMetadataParams(ecCurve, serverTimeOffset, "getOrSetNonce", oAuthKey, curve, randomNonce);
98100
const nonceData = Buffer.from(stringify(nonceParams.set_data), "utf8").toString("base64");
99101
const sharesData: ImportedShare[] = [];
100102
const encPromises: Promise<Ecies>[] = [];
@@ -119,7 +121,7 @@ export const generateShares = async (
119121
encrypted_share: encParamsMetadata.ciphertext,
120122
encrypted_share_metadata: encParamsMetadata,
121123
node_index: Number.parseInt(shareJson.shareIndex, 16),
122-
key_type: keyType,
124+
key_type: curve,
123125
nonce_data: nonceData,
124126
nonce_signature: nonceParams.signature,
125127
};

src/helpers/langrangeInterpolatePoly.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ec as EC } from "elliptic";
44
import Point from "../Point";
55
import Polynomial from "../Polynomial";
66
import Share from "../Share";
7-
import { generatePrivateKey } from ".";
7+
import { generatePrivateKey } from "./keyUtils";
88

99
function generatePrivateExcludingIndexes(shareIndexes: BN[], ecCurve: EC): BN {
1010
const key = new BN(generatePrivateKey(ecCurve, Buffer));

src/helpers/metadataUtils.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ec } from "elliptic";
55
import stringify from "json-stable-stringify";
66
import log from "loglevel";
77

8-
import { EciesHex, GetOrSetNonceResult, KeyType, MetadataParams, NonceMetadataParams, SetNonceData } from "../interfaces";
8+
import { CurveType, EciesHex, GetOrSetNonceResult, MetadataParams, NonceMetadataParams, SetNonceData } from "../interfaces";
99
import { encParamsHexToBuf } from "./common";
1010
import { keccak256 } from "./keyUtils";
1111

@@ -96,7 +96,7 @@ export function generateNonceMetadataParams(
9696
serverTimeOffset: number,
9797
operation: string,
9898
privateKey: BN,
99-
keyType: KeyType,
99+
curve: CurveType,
100100
nonce?: BN
101101
): NonceMetadataParams {
102102
const key = ecCurve.keyFromPrivate(privateKey.toString("hex", 64));
@@ -113,7 +113,7 @@ export function generateNonceMetadataParams(
113113
pub_key_X: key.getPublic().getX().toString("hex", 64),
114114
pub_key_Y: key.getPublic().getY().toString("hex", 64),
115115
set_data: setData,
116-
key_type: keyType,
116+
key_type: curve,
117117
signature: Buffer.from(sig.r.toString(16, 64) + sig.s.toString(16, 64) + new BN("").toString(16, 2), "hex").toString("base64"),
118118
};
119119
}

src/helpers/nodeUtils.ts

+18-18
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ import { INodePub, LEGACY_NETWORKS_ROUTE_MAP, TORUS_LEGACY_NETWORK_TYPE, TORUS_N
22
import { generatePrivate, getPublic } from "@toruslabs/eccrypto";
33
import { generateJsonRPCObject, get, post } from "@toruslabs/http-helpers";
44
import BN from "bn.js";
5-
import { curve, ec } from "elliptic";
5+
import { curve as curveUtils, ec } from "elliptic";
66

77
import { config } from "../config";
88
import { JRPC_METHODS } from "../constants";
99
import {
1010
CommitmentRequestResult,
11+
CurveType,
1112
GetOrSetNonceResult,
1213
ImportedShare,
1314
ImportShareRequestResult,
1415
JRPCResponse,
1516
KeyAssignInput,
1617
KeyLookupResult,
17-
KeyType,
1818
LegacyKeyLookupResult,
1919
LegacyVerifierLookupResponse,
2020
SessionToken,
@@ -38,10 +38,10 @@ export const GetPubKeyOrKeyAssign = async (params: {
3838
network: TORUS_NETWORK_TYPE;
3939
verifier: string;
4040
verifierId: string;
41-
keyType: KeyType;
41+
curve: CurveType;
4242
extendedVerifierId?: string;
4343
}): Promise<KeyLookupResult> => {
44-
const { endpoints, network, verifier, verifierId, extendedVerifierId, keyType } = params;
44+
const { endpoints, network, verifier, verifierId, extendedVerifierId, curve } = params;
4545
const lookupPromises = endpoints.map((x) =>
4646
post<JRPCResponse<VerifierLookupResponse>>(
4747
x,
@@ -51,7 +51,7 @@ export const GetPubKeyOrKeyAssign = async (params: {
5151
verifier_id: verifierId.toString(),
5252
extended_verifier_id: extendedVerifierId,
5353
one_key_flow: true,
54-
key_type: keyType,
54+
key_type: curve,
5555
fetch_node_index: true,
5656
}),
5757
null,
@@ -130,7 +130,7 @@ export async function retrieveOrImportShare(params: {
130130
serverTimeOffset: number;
131131
enableOneKey: boolean;
132132
ecCurve: ec;
133-
keyType: KeyType;
133+
curve: CurveType;
134134
allowHost: string;
135135
network: string;
136136
clientId: string;
@@ -150,7 +150,7 @@ export async function retrieveOrImportShare(params: {
150150
serverTimeOffset,
151151
enableOneKey,
152152
ecCurve,
153-
keyType,
153+
curve,
154154
allowHost,
155155
network,
156156
clientId,
@@ -195,7 +195,7 @@ export async function retrieveOrImportShare(params: {
195195
finalImportedShares = newImportedShares;
196196
} else if (!useDkg) {
197197
const importedKey = new BN(generatePrivateKey(ecCurve, Buffer));
198-
const generatedShares = await generateShares(ecCurve, keyType, serverTimeOffset, indexes, nodePubkeys, importedKey.toString(16, 64));
198+
const generatedShares = await generateShares(ecCurve, curve, serverTimeOffset, indexes, nodePubkeys, importedKey.toString(16, 64));
199199
finalImportedShares = [...finalImportedShares, ...generatedShares];
200200
}
201201

@@ -214,7 +214,7 @@ export async function retrieveOrImportShare(params: {
214214
endpoints[i],
215215
generateJsonRPCObject(JRPC_METHODS.COMMITMENT_REQUEST, {
216216
messageprefix: "mug00",
217-
keytype: keyType,
217+
keytype: curve,
218218
tokencommitment: tokenCommitment.slice(2),
219219
temppubx: pubKeyX,
220220
temppuby: pubKeyY,
@@ -353,7 +353,7 @@ export async function retrieveOrImportShare(params: {
353353
encrypted: "yes",
354354
use_temp: true,
355355
item: items,
356-
key_type: keyType,
356+
key_type: curve,
357357
one_key_flow: true,
358358
}),
359359
null,
@@ -376,7 +376,7 @@ export async function retrieveOrImportShare(params: {
376376
{
377377
...verifierParams,
378378
idtoken: idToken,
379-
key_type: keyType,
379+
key_type: curve,
380380
nodesignatures: nodeSigs,
381381
verifieridentifier: verifier,
382382
...extraParams,
@@ -624,7 +624,7 @@ export async function retrieveOrImportShare(params: {
624624
const oAuthPubkeyY = oAuthPubKey.getY().toString("hex", 64);
625625

626626
let metadataNonce = new BN(nonceResult?.nonce ? nonceResult.nonce.padStart(64, "0") : "0", "hex");
627-
let finalPubKey: curve.base.BasePoint;
627+
let finalPubKey: curveUtils.base.BasePoint;
628628
let pubNonce: { X: string; Y: string } | undefined;
629629
let typeOfUser: UserType = "v1";
630630
// extended_verifier_id is only exception for torus-test-health verifier
@@ -730,15 +730,15 @@ export const legacyKeyLookup = async (
730730
endpoints: string[],
731731
verifier: string,
732732
verifierId: string,
733-
keyType: KeyType
733+
curve: CurveType
734734
): Promise<LegacyKeyLookupResult> => {
735735
const lookupPromises = endpoints.map((x) =>
736736
post<JRPCResponse<LegacyVerifierLookupResponse>>(
737737
x,
738738
generateJsonRPCObject("VerifierLookupRequest", {
739739
verifier,
740740
verifier_id: verifierId.toString(),
741-
key_type: keyType,
741+
key_type: curve,
742742
})
743743
).catch((err) => log.error("lookup request failed", err))
744744
);
@@ -769,7 +769,7 @@ export const legacyKeyAssign = async ({
769769
signerHost,
770770
network,
771771
clientId,
772-
keyType,
772+
curve,
773773
}: KeyAssignInput): Promise<void> => {
774774
let nodeNum: number;
775775
let initialPoint: number | undefined;
@@ -844,7 +844,7 @@ export const legacyKeyAssign = async ({
844844
signerHost,
845845
network,
846846
clientId,
847-
keyType,
847+
curve,
848848
});
849849
throw new Error(
850850
`Sorry, the Torus Network that powers Web3Auth is currently very busy.
@@ -858,11 +858,11 @@ export const legacyWaitKeyLookup = (
858858
endpoints: string[],
859859
verifier: string,
860860
verifierId: string,
861-
keyType: KeyType,
861+
curve: CurveType,
862862
timeout: number
863863
): Promise<LegacyKeyLookupResult> =>
864864
new Promise((resolve, reject) => {
865865
setTimeout(() => {
866-
legacyKeyLookup(endpoints, verifier, verifierId, keyType).then(resolve).catch(reject);
866+
legacyKeyLookup(endpoints, verifier, verifierId, curve).then(resolve).catch(reject);
867867
}, timeout);
868868
});

src/interfaces.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export type v2NonceResultType = { typeOfUser: "v2"; nonce?: string; pubNonce: {
1313

1414
export type v1NonceResultType = { typeOfUser: "v1"; nonce?: string };
1515
export type GetOrSetNonceResult = v2NonceResultType | v1NonceResultType;
16-
export type KeyType = "secp256k1";
16+
export type CurveType = "secp256k1";
1717

1818
export interface SetNonceData {
1919
operation: string;
@@ -27,13 +27,13 @@ export interface NonceMetadataParams {
2727
pub_key_Y: string;
2828
set_data: Partial<SetNonceData>;
2929
signature: string;
30-
key_type?: KeyType;
30+
key_type?: CurveType;
3131
}
3232

3333
export interface TorusCtorOptions {
3434
clientId: string;
3535
network: TORUS_NETWORK_TYPE;
36-
keyType?: KeyType;
36+
curve?: CurveType;
3737
enableOneKey?: boolean;
3838
serverTimeOffset?: number;
3939
allowHost?: string;
@@ -103,7 +103,7 @@ export interface KeyAssignInput {
103103
signerHost: string;
104104
network: string;
105105
clientId: string;
106-
keyType: KeyType;
106+
curve: CurveType;
107107
}
108108

109109
export type EciesHex = {
@@ -227,7 +227,7 @@ export interface MetadataParams {
227227
namespace?: string;
228228
pub_key_X: string;
229229
pub_key_Y: string;
230-
key_type?: KeyType;
230+
key_type?: CurveType;
231231
set_data: {
232232
data: "getNonce" | "getOrSetNonce" | string;
233233
timestamp: string;

0 commit comments

Comments
 (0)