@bitgo/sdk-lib-mpc 8.7.0 → 8.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/src/tss/ecdsa/rangeproof.d.ts.map +1 -1
  3. package/dist/src/tss/ecdsa/rangeproof.js +4 -1
  4. package/dist/tsconfig.tsbuildinfo +1 -1
  5. package/package.json +3 -4
  6. package/dist/src/curves/baseCurve.d.ts +0 -19
  7. package/dist/src/curves/baseCurve.d.ts.map +0 -1
  8. package/dist/src/curves/baseCurve.js +0 -6
  9. package/dist/src/curves/bip32.d.ts +0 -8
  10. package/dist/src/curves/bip32.d.ts.map +0 -1
  11. package/dist/src/curves/bip32.js +0 -54
  12. package/dist/src/curves/bip32HdTree.d.ts +0 -8
  13. package/dist/src/curves/bip32HdTree.d.ts.map +0 -1
  14. package/dist/src/curves/bip32HdTree.js +0 -54
  15. package/dist/src/curves/hdTree.d.ts +0 -2
  16. package/dist/src/curves/hdTree.d.ts.map +0 -1
  17. package/dist/src/curves/hdTree.js +0 -11
  18. package/dist/src/curves/nobleEcc.d.ts +0 -10
  19. package/dist/src/curves/nobleEcc.d.ts.map +0 -1
  20. package/dist/src/curves/nobleEcc.js +0 -194
  21. package/dist/src/curves/shamir.d.ts +0 -37
  22. package/dist/src/curves/shamir.d.ts.map +0 -1
  23. package/dist/src/curves/shamir.js +0 -136
  24. package/dist/src/tss/ecdsa/generatePaillierKey.d.ts +0 -6
  25. package/dist/src/tss/ecdsa/generatePaillierKey.d.ts.map +0 -1
  26. package/dist/src/tss/ecdsa/generatePaillierKey.js +0 -52
  27. package/dist/src/tss/ecdsa/mpc.d.ts +0 -129
  28. package/dist/src/tss/ecdsa/mpc.d.ts.map +0 -1
  29. package/dist/src/tss/ecdsa/mpc.js +0 -1095
  30. package/dist/src/tss/ecdsa/paillierBlumProof.d.ts +0 -16
  31. package/dist/src/tss/ecdsa/paillierBlumProof.d.ts.map +0 -1
  32. package/dist/src/tss/ecdsa/paillierBlumProof.js +0 -135
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bitgo/sdk-lib-mpc",
3
- "version": "8.7.0",
3
+ "version": "8.9.0",
4
4
  "description": "library functions for BitGo's MPC solution",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "yarn unit-test",
9
- "unit-test": "nyc -- mocha",
9
+ "unit-test": "nyc -- mocha --recursive test",
10
10
  "build": "yarn tsc --build --incremental --verbose .",
11
11
  "fmt": "prettier --write .",
12
12
  "check-fmt": "prettier --check .",
@@ -37,7 +37,6 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@noble/secp256k1": "1.6.3",
40
- "@types/keccak": "^3.0.1",
41
40
  "@types/superagent": "4.1.15",
42
41
  "@wasmer/wasi": "^1.2.2",
43
42
  "bigint-crypto-utils": "3.1.4",
@@ -49,5 +48,5 @@
49
48
  "@types/lodash": "^4.14.151",
50
49
  "nyc": "^15.0.0"
51
50
  },
52
- "gitHead": "c19939d68a2c94dc05f104fe28560748a4646aa7"
51
+ "gitHead": "31e8bc420bc5bdb136349a1b0604572b3c8262f0"
53
52
  }
@@ -1,19 +0,0 @@
1
- /**
2
- * Base Interface for supporting elliptic curve parameters
3
- */
4
- /// <reference types="node" />
5
- export interface BaseCurve {
6
- scalarReduce(s: bigint): bigint;
7
- scalarNegate(s: bigint): bigint;
8
- scalarInvert(s: bigint): bigint;
9
- scalarRandom(): bigint;
10
- scalarAdd(x: bigint, y: bigint): bigint;
11
- scalarSub(x: bigint, y: bigint): bigint;
12
- scalarMult(x: bigint, y: bigint): bigint;
13
- basePointMult(n: bigint): bigint;
14
- pointAdd(p: bigint, q: bigint): bigint;
15
- pointMultiply(p: bigint, s: bigint): bigint;
16
- verify(message: Buffer, signature: Buffer, publicKey: bigint): boolean;
17
- order: () => bigint;
18
- }
19
- //# sourceMappingURL=baseCurve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseCurve.d.ts","sourceRoot":"","sources":["../../../src/curves/baseCurve.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,MAAM,WAAW,SAAS;IAGxB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAGhC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAGhC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC,YAAY,IAAI,MAAM,CAAC;IAGvB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAGxC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAGxC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEjC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvE,KAAK,EAAE,MAAM,MAAM,CAAC;CACrB"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- /**
3
- * Base Interface for supporting elliptic curve parameters
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUN1cnZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1cnZlcy9iYXNlQ3VydmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlIEludGVyZmFjZSBmb3Igc3VwcG9ydGluZyBlbGxpcHRpYyBjdXJ2ZSBwYXJhbWV0ZXJzXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQ3VydmUge1xuICAvLyBGdW5jdGlvbiB0aGF0IHJlZHVjZXMgYSBzY2FsYXIgbW9kdWxvIHRoZSBvcmRlciBvZiB0aGVcbiAgLy8gY3VydmUuXG4gIHNjYWxhclJlZHVjZShzOiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmVnYXRlZCBmaWVsZCBlbGVtZW50IG1vZHVsb1xuICAvLyB0aGUgb3JkZXIgb2YgdGhlIGN1cnZlLlxuICBzY2FsYXJOZWdhdGUoczogYmlnaW50KTogYmlnaW50O1xuICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG1vZHVsYXIgbXVsdGlwbGljYXRpdmUgaW52ZXJzZVxuICAvLyBvZiBhIGZpZWxkIGVsZW1lbnQuXG4gIHNjYWxhckludmVydChzOiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHJhbmRvbSBmaWVsZCBlbGVtZW50LlxuICBzY2FsYXJSYW5kb20oKTogYmlnaW50O1xuICAvLyAgRnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzdW0gb2YgdHdvIGZpZWxkIGVsZW1lbnRzIG1vZHVsb1xuICAvLyAgdGhlIG9yZGVyIG9mIHRoZSBjdXJ2ZS5cbiAgc2NhbGFyQWRkKHg6IGJpZ2ludCwgeTogYmlnaW50KTogYmlnaW50O1xuICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdHdvIGZpZWxkIGVsZW1lbnRzXG4gIC8vIG1vZHVsbyB0aGUgb3JkZXIgb2YgdGhlIGN1cnZlLlxuICBzY2FsYXJTdWIoeDogYmlnaW50LCB5OiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcHJvZHVjdCBvZiB0d28gZmllbGQgZWxlbWVudHNcbiAgLy8gbW9kdWxvIHRoZSBvcmRlciBvZiB0aGUgY3VydmUuXG4gIHNjYWxhck11bHQoeDogYmlnaW50LCB5OiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgbXVsdGlwbGllcyBhIGdyb3VwIGVsZW1lbnQgYnkgYSBmaWVsZCBlbGVtZW50LlxuICBiYXNlUG9pbnRNdWx0KG46IGJpZ2ludCk6IGJpZ2ludDtcbiAgLy8gRnVuY3Rpb24gdGhhdCBhZGRzIHR3byBncm91cCBlbGVtZW50cy5cbiAgcG9pbnRBZGQocDogYmlnaW50LCBxOiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIE11bHRpcGx5IGEgcG9pbnQgYnkgYSBzY2FsYXIuXG4gIHBvaW50TXVsdGlwbHkocDogYmlnaW50LCBzOiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgdmVyaWZpZXMgYSBzaWduYXR1cmUuXG4gIHZlcmlmeShtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyLCBwdWJsaWNLZXk6IGJpZ2ludCk6IGJvb2xlYW47XG4gIC8vIG9yZGVyIG9mIHRoZSBjdXJ2ZVxuICBvcmRlcjogKCkgPT4gYmlnaW50O1xufVxuIl19
@@ -1,8 +0,0 @@
1
- import { PrivateKeychain, PublicKeychain } from './types';
2
- import { Secp256k1Curve } from './secp256k1';
3
- export declare class BIP32 {
4
- static curve: Secp256k1Curve;
5
- publicDerive(keychain: PublicKeychain, path: string): PublicKeychain;
6
- privateDerive(keychain: PrivateKeychain, path: string): PrivateKeychain;
7
- }
8
- //# sourceMappingURL=bip32.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bip32.d.ts","sourceRoot":"","sources":["../../../src/curves/bip32.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7C,qBAAa,KAAK;IAChB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAwB;IAEpD,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc;IAiBpE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe;CAiBxE"}
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BIP32 = void 0;
4
- const crypto_1 = require("crypto");
5
- const secp256k1_1 = require("./secp256k1");
6
- const util_1 = require("../util");
7
- const hdTree_1 = require("./hdTree");
8
- class BIP32 {
9
- publicDerive(keychain, path) {
10
- const indices = hdTree_1.pathToIndices(path);
11
- function deriveIndex(acc, index) {
12
- const [pk, chaincode] = acc;
13
- const I = deriveSecp256k1Helper(index, chaincode, pk);
14
- const il = util_1.bigIntFromBufferBE(I.slice(0, 32));
15
- const ir = util_1.bigIntFromBufferBE(I.slice(32));
16
- const left_pk = BIP32.curve.pointAdd(pk, BIP32.curve.basePointMult(il));
17
- return [left_pk, ir];
18
- }
19
- const [pk, chaincode] = indices.reduce(deriveIndex, deriveIndex([keychain.pk, keychain.chaincode], indices.shift()));
20
- return { pk, chaincode };
21
- }
22
- privateDerive(keychain, path) {
23
- const indices = hdTree_1.pathToIndices(path);
24
- function deriveIndex(acc, index) {
25
- const [pk, sk, chaincode] = acc;
26
- const I = deriveSecp256k1Helper(index, chaincode, pk, sk);
27
- const il = util_1.bigIntFromBufferBE(I.slice(0, 32));
28
- const ir = util_1.bigIntFromBufferBE(I.slice(32));
29
- const left_pk = BIP32.curve.pointAdd(pk, BIP32.curve.basePointMult(il));
30
- const left_sk = BIP32.curve.scalarAdd(sk, il);
31
- return [left_pk, left_sk, ir];
32
- }
33
- const [pk, sk, chaincode] = indices.reduce(deriveIndex, deriveIndex([keychain.pk, keychain.sk, keychain.chaincode], indices.shift()));
34
- return { pk, sk, chaincode };
35
- }
36
- }
37
- exports.BIP32 = BIP32;
38
- BIP32.curve = new secp256k1_1.Secp256k1Curve();
39
- function deriveSecp256k1Helper(index = 0, chaincode, pk, sk) {
40
- const data = Buffer.alloc(33 + 4);
41
- if (((index >>> 0) & 0x80000000) === 0) {
42
- util_1.bigIntToBufferBE(pk, 33).copy(data);
43
- }
44
- else {
45
- if (sk === undefined) {
46
- throw new Error("Can't performed hardened derivation without private key");
47
- }
48
- data[0] = 0;
49
- util_1.bigIntToBufferBE(sk, 32).copy(data, 1);
50
- }
51
- data.writeUInt32BE(index, 33);
52
- return crypto_1.createHmac('sha512', util_1.bigIntToBufferBE(chaincode, 32)).update(data).digest();
53
- }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VydmVzL2JpcDMyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFvQztBQUdwQywyQ0FBNkM7QUFDN0Msa0NBQStEO0FBQy9ELHFDQUF5QztBQUV6QyxNQUFhLEtBQUs7SUFHaEIsWUFBWSxDQUFDLFFBQXdCLEVBQUUsSUFBWTtRQUNqRCxNQUFNLE9BQU8sR0FBRyxzQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLFNBQVMsV0FBVyxDQUFDLEdBQWEsRUFBRSxLQUF5QjtZQUMzRCxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUM1QixNQUFNLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sRUFBRSxHQUFHLHlCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsTUFBTSxFQUFFLEdBQUcseUJBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDcEMsV0FBVyxFQUNYLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNoRSxDQUFDO1FBQ0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQXlCLEVBQUUsSUFBWTtRQUNuRCxNQUFNLE9BQU8sR0FBRyxzQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLFNBQVMsV0FBVyxDQUFDLEdBQWEsRUFBRSxLQUF5QjtZQUMzRCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDaEMsTUFBTSxDQUFDLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUQsTUFBTSxFQUFFLEdBQUcseUJBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxNQUFNLEVBQUUsR0FBRyx5QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDeEUsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUN4QyxXQUFXLEVBQ1gsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDN0UsQ0FBQztRQUNGLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBcENILHNCQXFDQztBQXBDUSxXQUFLLEdBQW1CLElBQUksMEJBQWMsRUFBRSxDQUFDO0FBc0N0RCxTQUFTLHFCQUFxQixDQUFDLFFBQTRCLENBQUMsRUFBRSxTQUFpQixFQUFFLEVBQVUsRUFBRSxFQUFXO0lBQ3RHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdEMsdUJBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNyQztTQUFNO1FBQ0wsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztTQUM1RTtRQUNELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWix1QkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN4QztJQUNELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLE9BQU8sbUJBQVUsQ0FBQyxRQUFRLEVBQUUsdUJBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIbWFjIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgUHJpdmF0ZUtleWNoYWluLCBQdWJsaWNLZXljaGFpbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgU2VjcDI1NmsxQ3VydmUgfSBmcm9tICcuL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IHBhdGhUb0luZGljZXMgfSBmcm9tICcuL2hkVHJlZSc7XG5cbmV4cG9ydCBjbGFzcyBCSVAzMiB7XG4gIHN0YXRpYyBjdXJ2ZTogU2VjcDI1NmsxQ3VydmUgPSBuZXcgU2VjcDI1NmsxQ3VydmUoKTtcblxuICBwdWJsaWNEZXJpdmUoa2V5Y2hhaW46IFB1YmxpY0tleWNoYWluLCBwYXRoOiBzdHJpbmcpOiBQdWJsaWNLZXljaGFpbiB7XG4gICAgY29uc3QgaW5kaWNlcyA9IHBhdGhUb0luZGljZXMocGF0aCk7XG4gICAgZnVuY3Rpb24gZGVyaXZlSW5kZXgoYWNjOiBiaWdpbnRbXSwgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCk6IGJpZ2ludFtdIHtcbiAgICAgIGNvbnN0IFtwaywgY2hhaW5jb2RlXSA9IGFjYztcbiAgICAgIGNvbnN0IEkgPSBkZXJpdmVTZWNwMjU2azFIZWxwZXIoaW5kZXgsIGNoYWluY29kZSwgcGspO1xuICAgICAgY29uc3QgaWwgPSBiaWdJbnRGcm9tQnVmZmVyQkUoSS5zbGljZSgwLCAzMikpO1xuICAgICAgY29uc3QgaXIgPSBiaWdJbnRGcm9tQnVmZmVyQkUoSS5zbGljZSgzMikpO1xuICAgICAgY29uc3QgbGVmdF9wayA9IEJJUDMyLmN1cnZlLnBvaW50QWRkKHBrLCBCSVAzMi5jdXJ2ZS5iYXNlUG9pbnRNdWx0KGlsKSk7XG4gICAgICByZXR1cm4gW2xlZnRfcGssIGlyXTtcbiAgICB9XG4gICAgY29uc3QgW3BrLCBjaGFpbmNvZGVdID0gaW5kaWNlcy5yZWR1Y2UoXG4gICAgICBkZXJpdmVJbmRleCxcbiAgICAgIGRlcml2ZUluZGV4KFtrZXljaGFpbi5waywga2V5Y2hhaW4uY2hhaW5jb2RlXSwgaW5kaWNlcy5zaGlmdCgpKVxuICAgICk7XG4gICAgcmV0dXJuIHsgcGssIGNoYWluY29kZSB9O1xuICB9XG5cbiAgcHJpdmF0ZURlcml2ZShrZXljaGFpbjogUHJpdmF0ZUtleWNoYWluLCBwYXRoOiBzdHJpbmcpOiBQcml2YXRlS2V5Y2hhaW4ge1xuICAgIGNvbnN0IGluZGljZXMgPSBwYXRoVG9JbmRpY2VzKHBhdGgpO1xuICAgIGZ1bmN0aW9uIGRlcml2ZUluZGV4KGFjYzogYmlnaW50W10sIGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQpOiBiaWdpbnRbXSB7XG4gICAgICBjb25zdCBbcGssIHNrLCBjaGFpbmNvZGVdID0gYWNjO1xuICAgICAgY29uc3QgSSA9IGRlcml2ZVNlY3AyNTZrMUhlbHBlcihpbmRleCwgY2hhaW5jb2RlLCBwaywgc2spO1xuICAgICAgY29uc3QgaWwgPSBiaWdJbnRGcm9tQnVmZmVyQkUoSS5zbGljZSgwLCAzMikpO1xuICAgICAgY29uc3QgaXIgPSBiaWdJbnRGcm9tQnVmZmVyQkUoSS5zbGljZSgzMikpO1xuICAgICAgY29uc3QgbGVmdF9wayA9IEJJUDMyLmN1cnZlLnBvaW50QWRkKHBrLCBCSVAzMi5jdXJ2ZS5iYXNlUG9pbnRNdWx0KGlsKSk7XG4gICAgICBjb25zdCBsZWZ0X3NrID0gQklQMzIuY3VydmUuc2NhbGFyQWRkKHNrLCBpbCk7XG4gICAgICByZXR1cm4gW2xlZnRfcGssIGxlZnRfc2ssIGlyXTtcbiAgICB9XG4gICAgY29uc3QgW3BrLCBzaywgY2hhaW5jb2RlXSA9IGluZGljZXMucmVkdWNlKFxuICAgICAgZGVyaXZlSW5kZXgsXG4gICAgICBkZXJpdmVJbmRleChba2V5Y2hhaW4ucGssIGtleWNoYWluLnNrLCBrZXljaGFpbi5jaGFpbmNvZGVdLCBpbmRpY2VzLnNoaWZ0KCkpXG4gICAgKTtcbiAgICByZXR1cm4geyBwaywgc2ssIGNoYWluY29kZSB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlcml2ZVNlY3AyNTZrMUhlbHBlcihpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gMCwgY2hhaW5jb2RlOiBiaWdpbnQsIHBrOiBiaWdpbnQsIHNrPzogYmlnaW50KTogQnVmZmVyIHtcbiAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYygzMyArIDQpO1xuICBpZiAoKChpbmRleCA+Pj4gMCkgJiAweDgwMDAwMDAwKSA9PT0gMCkge1xuICAgIGJpZ0ludFRvQnVmZmVyQkUocGssIDMzKS5jb3B5KGRhdGEpO1xuICB9IGVsc2Uge1xuICAgIGlmIChzayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBwZXJmb3JtZWQgaGFyZGVuZWQgZGVyaXZhdGlvbiB3aXRob3V0IHByaXZhdGUga2V5XCIpO1xuICAgIH1cbiAgICBkYXRhWzBdID0gMDtcbiAgICBiaWdJbnRUb0J1ZmZlckJFKHNrLCAzMikuY29weShkYXRhLCAxKTtcbiAgfVxuICBkYXRhLndyaXRlVUludDMyQkUoaW5kZXgsIDMzKTtcbiAgcmV0dXJuIGNyZWF0ZUhtYWMoJ3NoYTUxMicsIGJpZ0ludFRvQnVmZmVyQkUoY2hhaW5jb2RlLCAzMikpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKTtcbn1cbiJdfQ==
@@ -1,8 +0,0 @@
1
- import { PrivateKeychain, PublicKeychain } from './types';
2
- import { Secp256k1Curve } from './secp256k1';
3
- export declare class Bip32HdTree {
4
- static curve: Secp256k1Curve;
5
- publicDerive(keychain: PublicKeychain, path: string): PublicKeychain;
6
- privateDerive(keychain: PrivateKeychain, path: string): PrivateKeychain;
7
- }
8
- //# sourceMappingURL=bip32HdTree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bip32HdTree.d.ts","sourceRoot":"","sources":["../../../src/curves/bip32HdTree.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7C,qBAAa,WAAW;IACtB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAwB;IAEpD,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc;IAiBpE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe;CAiBxE"}
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Bip32HdTree = void 0;
4
- const crypto_1 = require("crypto");
5
- const secp256k1_1 = require("./secp256k1");
6
- const util_1 = require("../util");
7
- const util_2 = require("./util");
8
- class Bip32HdTree {
9
- publicDerive(keychain, path) {
10
- const indices = util_2.pathToIndices(path);
11
- function deriveIndex(acc, index) {
12
- const [pk, chaincode] = acc;
13
- const I = deriveSecp256k1Helper(index, chaincode, pk);
14
- const il = util_1.bigIntFromBufferBE(I.slice(0, 32));
15
- const ir = util_1.bigIntFromBufferBE(I.slice(32));
16
- const left_pk = Bip32HdTree.curve.pointAdd(pk, Bip32HdTree.curve.basePointMult(il));
17
- return [left_pk, ir];
18
- }
19
- const [pk, chaincode] = indices.reduce(deriveIndex, deriveIndex([keychain.pk, keychain.chaincode], indices.shift()));
20
- return { pk, chaincode };
21
- }
22
- privateDerive(keychain, path) {
23
- const indices = util_2.pathToIndices(path);
24
- function deriveIndex(acc, index) {
25
- const [pk, sk, chaincode] = acc;
26
- const I = deriveSecp256k1Helper(index, chaincode, pk, sk);
27
- const il = util_1.bigIntFromBufferBE(I.slice(0, 32));
28
- const ir = util_1.bigIntFromBufferBE(I.slice(32));
29
- const left_pk = Bip32HdTree.curve.pointAdd(pk, Bip32HdTree.curve.basePointMult(il));
30
- const left_sk = Bip32HdTree.curve.scalarAdd(sk, il);
31
- return [left_pk, left_sk, ir];
32
- }
33
- const [pk, sk, chaincode] = indices.reduce(deriveIndex, deriveIndex([keychain.pk, keychain.sk, keychain.chaincode], indices.shift()));
34
- return { pk, sk, chaincode };
35
- }
36
- }
37
- exports.Bip32HdTree = Bip32HdTree;
38
- Bip32HdTree.curve = new secp256k1_1.Secp256k1Curve();
39
- function deriveSecp256k1Helper(index = 0, chaincode, pk, sk) {
40
- const data = Buffer.alloc(33 + 4);
41
- if (((index >>> 0) & 0x80000000) === 0) {
42
- util_1.bigIntToBufferBE(pk, 33).copy(data);
43
- }
44
- else {
45
- if (sk === undefined) {
46
- throw new Error("Can't performed hardened derivation without private key");
47
- }
48
- data[0] = 0;
49
- util_1.bigIntToBufferBE(sk, 32).copy(data, 1);
50
- }
51
- data.writeUInt32BE(index, 33);
52
- return crypto_1.createHmac('sha512', util_1.bigIntToBufferBE(chaincode, 32)).update(data).digest();
53
- }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJIZFRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VydmVzL2JpcDMySGRUcmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFvQztBQUdwQywyQ0FBNkM7QUFDN0Msa0NBQStEO0FBQy9ELGlDQUF1QztBQUV2QyxNQUFhLFdBQVc7SUFHdEIsWUFBWSxDQUFDLFFBQXdCLEVBQUUsSUFBWTtRQUNqRCxNQUFNLE9BQU8sR0FBRyxvQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLFNBQVMsV0FBVyxDQUFDLEdBQWEsRUFBRSxLQUF5QjtZQUMzRCxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUM1QixNQUFNLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sRUFBRSxHQUFHLHlCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsTUFBTSxFQUFFLEdBQUcseUJBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDcEMsV0FBVyxFQUNYLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNoRSxDQUFDO1FBQ0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQXlCLEVBQUUsSUFBWTtRQUNuRCxNQUFNLE9BQU8sR0FBRyxvQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLFNBQVMsV0FBVyxDQUFDLEdBQWEsRUFBRSxLQUF5QjtZQUMzRCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDaEMsTUFBTSxDQUFDLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUQsTUFBTSxFQUFFLEdBQUcseUJBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxNQUFNLEVBQUUsR0FBRyx5QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEYsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUN4QyxXQUFXLEVBQ1gsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDN0UsQ0FBQztRQUNGLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBcENILGtDQXFDQztBQXBDUSxpQkFBSyxHQUFtQixJQUFJLDBCQUFjLEVBQUUsQ0FBQztBQXNDdEQsU0FBUyxxQkFBcUIsQ0FBQyxRQUE0QixDQUFDLEVBQUUsU0FBaUIsRUFBRSxFQUFVLEVBQUUsRUFBVztJQUN0RyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3RDLHVCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckM7U0FBTTtRQUNMLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7U0FDNUU7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osdUJBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDeEM7SUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5QixPQUFPLG1CQUFVLENBQUMsUUFBUSxFQUFFLHVCQUFnQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSG1hYyB9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IFByaXZhdGVLZXljaGFpbiwgUHVibGljS2V5Y2hhaW4gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNlY3AyNTZrMUN1cnZlIH0gZnJvbSAnLi9zZWNwMjU2azEnO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBwYXRoVG9JbmRpY2VzIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGNsYXNzIEJpcDMySGRUcmVlIHtcbiAgc3RhdGljIGN1cnZlOiBTZWNwMjU2azFDdXJ2ZSA9IG5ldyBTZWNwMjU2azFDdXJ2ZSgpO1xuXG4gIHB1YmxpY0Rlcml2ZShrZXljaGFpbjogUHVibGljS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFB1YmxpY0tleWNoYWluIHtcbiAgICBjb25zdCBpbmRpY2VzID0gcGF0aFRvSW5kaWNlcyhwYXRoKTtcbiAgICBmdW5jdGlvbiBkZXJpdmVJbmRleChhY2M6IGJpZ2ludFtdLCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkKTogYmlnaW50W10ge1xuICAgICAgY29uc3QgW3BrLCBjaGFpbmNvZGVdID0gYWNjO1xuICAgICAgY29uc3QgSSA9IGRlcml2ZVNlY3AyNTZrMUhlbHBlcihpbmRleCwgY2hhaW5jb2RlLCBwayk7XG4gICAgICBjb25zdCBpbCA9IGJpZ0ludEZyb21CdWZmZXJCRShJLnNsaWNlKDAsIDMyKSk7XG4gICAgICBjb25zdCBpciA9IGJpZ0ludEZyb21CdWZmZXJCRShJLnNsaWNlKDMyKSk7XG4gICAgICBjb25zdCBsZWZ0X3BrID0gQmlwMzJIZFRyZWUuY3VydmUucG9pbnRBZGQocGssIEJpcDMySGRUcmVlLmN1cnZlLmJhc2VQb2ludE11bHQoaWwpKTtcbiAgICAgIHJldHVybiBbbGVmdF9waywgaXJdO1xuICAgIH1cbiAgICBjb25zdCBbcGssIGNoYWluY29kZV0gPSBpbmRpY2VzLnJlZHVjZShcbiAgICAgIGRlcml2ZUluZGV4LFxuICAgICAgZGVyaXZlSW5kZXgoW2tleWNoYWluLnBrLCBrZXljaGFpbi5jaGFpbmNvZGVdLCBpbmRpY2VzLnNoaWZ0KCkpXG4gICAgKTtcbiAgICByZXR1cm4geyBwaywgY2hhaW5jb2RlIH07XG4gIH1cblxuICBwcml2YXRlRGVyaXZlKGtleWNoYWluOiBQcml2YXRlS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFByaXZhdGVLZXljaGFpbiB7XG4gICAgY29uc3QgaW5kaWNlcyA9IHBhdGhUb0luZGljZXMocGF0aCk7XG4gICAgZnVuY3Rpb24gZGVyaXZlSW5kZXgoYWNjOiBiaWdpbnRbXSwgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCk6IGJpZ2ludFtdIHtcbiAgICAgIGNvbnN0IFtwaywgc2ssIGNoYWluY29kZV0gPSBhY2M7XG4gICAgICBjb25zdCBJID0gZGVyaXZlU2VjcDI1NmsxSGVscGVyKGluZGV4LCBjaGFpbmNvZGUsIHBrLCBzayk7XG4gICAgICBjb25zdCBpbCA9IGJpZ0ludEZyb21CdWZmZXJCRShJLnNsaWNlKDAsIDMyKSk7XG4gICAgICBjb25zdCBpciA9IGJpZ0ludEZyb21CdWZmZXJCRShJLnNsaWNlKDMyKSk7XG4gICAgICBjb25zdCBsZWZ0X3BrID0gQmlwMzJIZFRyZWUuY3VydmUucG9pbnRBZGQocGssIEJpcDMySGRUcmVlLmN1cnZlLmJhc2VQb2ludE11bHQoaWwpKTtcbiAgICAgIGNvbnN0IGxlZnRfc2sgPSBCaXAzMkhkVHJlZS5jdXJ2ZS5zY2FsYXJBZGQoc2ssIGlsKTtcbiAgICAgIHJldHVybiBbbGVmdF9waywgbGVmdF9zaywgaXJdO1xuICAgIH1cbiAgICBjb25zdCBbcGssIHNrLCBjaGFpbmNvZGVdID0gaW5kaWNlcy5yZWR1Y2UoXG4gICAgICBkZXJpdmVJbmRleCxcbiAgICAgIGRlcml2ZUluZGV4KFtrZXljaGFpbi5waywga2V5Y2hhaW4uc2ssIGtleWNoYWluLmNoYWluY29kZV0sIGluZGljZXMuc2hpZnQoKSlcbiAgICApO1xuICAgIHJldHVybiB7IHBrLCBzaywgY2hhaW5jb2RlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVyaXZlU2VjcDI1NmsxSGVscGVyKGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSAwLCBjaGFpbmNvZGU6IGJpZ2ludCwgcGs6IGJpZ2ludCwgc2s/OiBiaWdpbnQpOiBCdWZmZXIge1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDMzICsgNCk7XG4gIGlmICgoKGluZGV4ID4+PiAwKSAmIDB4ODAwMDAwMDApID09PSAwKSB7XG4gICAgYmlnSW50VG9CdWZmZXJCRShwaywgMzMpLmNvcHkoZGF0YSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHBlcmZvcm1lZCBoYXJkZW5lZCBkZXJpdmF0aW9uIHdpdGhvdXQgcHJpdmF0ZSBrZXlcIik7XG4gICAgfVxuICAgIGRhdGFbMF0gPSAwO1xuICAgIGJpZ0ludFRvQnVmZmVyQkUoc2ssIDMyKS5jb3B5KGRhdGEsIDEpO1xuICB9XG4gIGRhdGEud3JpdGVVSW50MzJCRShpbmRleCwgMzMpO1xuICByZXR1cm4gY3JlYXRlSG1hYygnc2hhNTEyJywgYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKSkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export declare function pathToIndices(path: string): number[];
2
- //# sourceMappingURL=hdTree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hdTree.d.ts","sourceRoot":"","sources":["../../../src/curves/hdTree.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKpD"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pathToIndices = void 0;
4
- function pathToIndices(path) {
5
- return path
6
- .replace(/^m?\//, '')
7
- .split('/')
8
- .map((index) => parseInt(index, 10));
9
- }
10
- exports.pathToIndices = pathToIndices;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGRUcmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1cnZlcy9oZFRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsYUFBYSxDQUFDLElBQVk7SUFDeEMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7U0FDcEIsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFMRCxzQ0FLQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBwYXRoVG9JbmRpY2VzKHBhdGg6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgcmV0dXJuIHBhdGhcbiAgICAucmVwbGFjZSgvXm0/XFwvLywgJycpXG4gICAgLnNwbGl0KCcvJylcbiAgICAubWFwKChpbmRleCkgPT4gcGFyc2VJbnQoaW5kZXgsIDEwKSk7XG59XG4iXX0=
@@ -1,10 +0,0 @@
1
- import { ECPairAPI, ECPairInterface } from 'ecpair';
2
- import { BIP32API, BIP32Interface } from 'bip32';
3
- import { MuSig } from '@brandonblack/musig';
4
- import { Secp256k1Interface } from './types';
5
- declare const ecc: Secp256k1Interface;
6
- declare const ecPairApi: ECPairAPI;
7
- declare const bip32Api: BIP32API;
8
- declare const musigApi: MuSig;
9
- export { ecc, ecPairApi, ECPairAPI, ECPairInterface, bip32Api, BIP32API, BIP32Interface, musigApi, MuSig };
10
- //# sourceMappingURL=nobleEcc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nobleEcc.d.ts","sourceRoot":"","sources":["../../../src/curves/nobleEcc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAgB,cAAc,EAAE,MAAM,OAAO,CAAC;AAI/D,OAAO,EAAU,KAAK,EAAgB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAyC7C,QAAA,MAAM,GAAG,EAAE,kBA0DV,CAAC;AAkEF,QAAA,MAAM,SAAS,EAAE,SAA8B,CAAC;AAChD,QAAA,MAAM,QAAQ,EAAE,QAA4B,CAAC;AAC7C,QAAA,MAAM,QAAQ,EAAE,KAA4B,CAAC;AAE7C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}
@@ -1,194 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.musigApi = exports.bip32Api = exports.ecPairApi = exports.ecc = void 0;
26
- const create_hash_1 = __importDefault(require("create-hash"));
27
- const create_hmac_1 = __importDefault(require("create-hmac"));
28
- const ecpair_1 = require("ecpair");
29
- const necc = __importStar(require("@noble/secp256k1"));
30
- const bip32_1 = require("bip32");
31
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
32
- // @ts-ignore base_crypto is exported as a subPath export, ignoring since compiler complains about importing like this
33
- const baseCrypto = __importStar(require("@brandonblack/musig/base_crypto"));
34
- const musig_1 = require("@brandonblack/musig");
35
- necc.utils.sha256Sync = (...messages) => {
36
- const sha256 = create_hash_1.default('sha256');
37
- for (const message of messages)
38
- sha256.update(message);
39
- return sha256.digest();
40
- };
41
- necc.utils.hmacSha256Sync = (key, ...messages) => {
42
- const hash = create_hmac_1.default('sha256', Buffer.from(key));
43
- messages.forEach((m) => hash.update(m));
44
- return Uint8Array.from(hash.digest());
45
- };
46
- const defaultTrue = (param) => param !== false;
47
- function throwToNull(fn) {
48
- try {
49
- return fn();
50
- }
51
- catch (e) {
52
- return null;
53
- }
54
- }
55
- function isPoint(p, xOnly) {
56
- if ((p.length === 32) !== xOnly)
57
- return false;
58
- try {
59
- return !!necc.Point.fromHex(p);
60
- }
61
- catch (e) {
62
- return false;
63
- }
64
- }
65
- function toBigInt(b) {
66
- const buff = Buffer.from(b);
67
- if (buff.length !== 32) {
68
- throw new Error('Invalid size ${buff.length}');
69
- }
70
- return BigInt(`0x${buff.toString('hex')}`);
71
- }
72
- const ecc = {
73
- isPoint: (p) => isPoint(p, false),
74
- isPrivate: (d) => necc.utils.isValidPrivateKey(d),
75
- isXOnlyPoint: (p) => isPoint(p, true),
76
- xOnlyPointAddTweak: (p, tweak) => throwToNull(() => {
77
- const P = necc.utils.pointAddScalar(p, tweak, true);
78
- const parity = P[0] % 2 === 1 ? 1 : 0;
79
- return { parity, xOnlyPubkey: P.slice(1) };
80
- }),
81
- pointFromScalar: (sk, compressed) => throwToNull(() => necc.getPublicKey(sk, defaultTrue(compressed))),
82
- pointCompress: (p, compressed) => {
83
- return necc.Point.fromHex(p).toRawBytes(defaultTrue(compressed));
84
- },
85
- pointMultiply: (a, tweak, compressed) => throwToNull(() => necc.utils.pointMultiply(a, tweak, defaultTrue(compressed))),
86
- pointAdd: (a, b, compressed) => throwToNull(() => {
87
- const A = necc.Point.fromHex(a);
88
- const B = necc.Point.fromHex(b);
89
- return A.add(B).toRawBytes(defaultTrue(compressed));
90
- }),
91
- pointAddScalar: (p, tweak, compressed) => throwToNull(() => necc.utils.pointAddScalar(p, tweak, defaultTrue(compressed))),
92
- privateAdd: (d, tweak) => throwToNull(() => {
93
- const res = necc.utils.privateAdd(d, tweak);
94
- // tiny-secp256k1 returns null rather than allowing a 0 private key to be returned
95
- // ECPair.testEcc() requires that behavior.
96
- if (res === null || res === void 0 ? void 0 : res.every((i) => i === 0))
97
- return null;
98
- return res;
99
- }),
100
- privateNegate: (d) => necc.utils.privateNegate(d),
101
- sign: (h, d, e) => {
102
- return necc.signSync(h, d, { der: false, extraEntropy: e });
103
- },
104
- signSchnorr: (h, d, e = Buffer.alloc(32, 0x00)) => {
105
- return necc.schnorr.signSync(h, d, e);
106
- },
107
- verify: (h, Q, signature, strict) => {
108
- return necc.verify(signature, h, Q, { strict });
109
- },
110
- verifySchnorr: (h, Q, signature) => {
111
- return necc.schnorr.verifySync(signature, h, Q);
112
- },
113
- };
114
- exports.ecc = ecc;
115
- const crypto = {
116
- ...baseCrypto,
117
- pointMultiplyUnsafe(p, a, compress) {
118
- try {
119
- const product = necc.Point.fromHex(p).multiplyAndAddUnsafe(necc.Point.ZERO, toBigInt(a), BigInt(1));
120
- if (!product)
121
- return null;
122
- return product.toRawBytes(compress);
123
- }
124
- catch {
125
- return null;
126
- }
127
- },
128
- pointMultiplyAndAddUnsafe(p1, a, p2, compress) {
129
- try {
130
- const p2p = necc.Point.fromHex(p2);
131
- const p = necc.Point.fromHex(p1).multiplyAndAddUnsafe(p2p, toBigInt(a), BigInt(1));
132
- if (!p)
133
- return null;
134
- return p.toRawBytes(compress);
135
- }
136
- catch {
137
- return null;
138
- }
139
- },
140
- pointAdd(a, b, compress) {
141
- try {
142
- return necc.Point.fromHex(a).add(necc.Point.fromHex(b)).toRawBytes(compress);
143
- }
144
- catch {
145
- return null;
146
- }
147
- },
148
- pointAddTweak(p, tweak, compress) {
149
- try {
150
- const P = necc.Point.fromHex(p);
151
- const t = baseCrypto.readSecret(tweak);
152
- const Q = necc.Point.BASE.multiplyAndAddUnsafe(P, t, BigInt(1));
153
- if (!Q)
154
- throw new Error('Tweaked point at infinity');
155
- return Q.toRawBytes(compress);
156
- }
157
- catch {
158
- return null;
159
- }
160
- },
161
- pointCompress(p, compress = true) {
162
- return necc.Point.fromHex(p).toRawBytes(compress);
163
- },
164
- liftX(p) {
165
- try {
166
- return necc.Point.fromHex(p).toRawBytes(false);
167
- }
168
- catch {
169
- return null;
170
- }
171
- },
172
- getPublicKey(s, compress) {
173
- try {
174
- return necc.getPublicKey(s, compress);
175
- }
176
- catch {
177
- return null;
178
- }
179
- },
180
- taggedHash: necc.utils.taggedHashSync,
181
- sha256(...messages) {
182
- const sha256 = create_hash_1.default('sha256');
183
- for (const message of messages)
184
- sha256.update(message);
185
- return sha256.digest();
186
- },
187
- };
188
- const ecPairApi = ecpair_1.ECPairFactory(ecc);
189
- exports.ecPairApi = ecPairApi;
190
- const bip32Api = bip32_1.BIP32Factory(ecc);
191
- exports.bip32Api = bip32Api;
192
- const musigApi = musig_1.MuSigFactory(crypto);
193
- exports.musigApi = musigApi;
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ibGVFY2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VydmVzL25vYmxlRWNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBcUM7QUFDckMsOERBQXFDO0FBQ3JDLG1DQUFtRTtBQUNuRSx1REFBeUM7QUFDekMsaUNBQStEO0FBQy9ELDZEQUE2RDtBQUM3RCxzSEFBc0g7QUFDdEgsNEVBQThEO0FBQzlELCtDQUFrRTtBQUdsRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsUUFBc0IsRUFBYyxFQUFFO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLHFCQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRO1FBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQWUsRUFBRSxHQUFHLFFBQXNCLEVBQWMsRUFBRTtJQUNyRixNQUFNLElBQUksR0FBRyxxQkFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWUsRUFBVyxFQUFFLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQztBQUVsRSxTQUFTLFdBQVcsQ0FBTyxF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QUM7SUFDekIsQ0FBQztDQUNGLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBYyxzQkFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBSWxDLDhCQUFTO0FBSHZCLE1BQU0sUUFBUSxHQUFhLG9CQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7QUFHUSw0QkFBUTtBQUY3RCxNQUFNLFFBQVEsR0FBVSxvQkFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTRDLDRCQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUhhc2ggZnJvbSAnY3JlYXRlLWhhc2gnO1xuaW1wb3J0IGNyZWF0ZUhtYWMgZnJvbSAnY3JlYXRlLWhtYWMnO1xuaW1wb3J0IHsgRUNQYWlyQVBJLCBFQ1BhaXJGYWN0b3J5LCBFQ1BhaXJJbnRlcmZhY2UgfSBmcm9tICdlY3BhaXInO1xuaW1wb3J0ICogYXMgbmVjYyBmcm9tICdAbm9ibGUvc2VjcDI1NmsxJztcbmltcG9ydCB7IEJJUDMyQVBJLCBCSVAzMkZhY3RvcnksIEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnYmlwMzInO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZSBiYXNlX2NyeXB0byBpcyBleHBvcnRlZCBhcyBhIHN1YlBhdGggZXhwb3J0LCBpZ25vcmluZyBzaW5jZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgaW1wb3J0aW5nIGxpa2UgdGhpc1xuaW1wb3J0ICogYXMgYmFzZUNyeXB0byBmcm9tICdAYnJhbmRvbmJsYWNrL211c2lnL2Jhc2VfY3J5cHRvJztcbmltcG9ydCB7IENyeXB0bywgTXVTaWcsIE11U2lnRmFjdG9yeSB9IGZyb20gJ0BicmFuZG9uYmxhY2svbXVzaWcnO1xuaW1wb3J0IHsgU2VjcDI1NmsxSW50ZXJmYWNlIH0gZnJvbSAnLi90eXBlcyc7XG5cbm5lY2MudXRpbHMuc2hhMjU2U3luYyA9ICguLi5tZXNzYWdlczogVWludDhBcnJheVtdKTogVWludDhBcnJheSA9PiB7XG4gIGNvbnN0IHNoYTI1NiA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpO1xuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHNoYTI1Ni51cGRhdGUobWVzc2FnZSk7XG4gIHJldHVybiBzaGEyNTYuZGlnZXN0KCk7XG59O1xuXG5uZWNjLnV0aWxzLmhtYWNTaGEyNTZTeW5jID0gKGtleTogVWludDhBcnJheSwgLi4ubWVzc2FnZXM6IFVpbnQ4QXJyYXlbXSk6IFVpbnQ4QXJyYXkgPT4ge1xuICBjb25zdCBoYXNoID0gY3JlYXRlSG1hYygnc2hhMjU2JywgQnVmZmVyLmZyb20oa2V5KSk7XG4gIG1lc3NhZ2VzLmZvckVhY2goKG0pID0+IGhhc2gudXBkYXRlKG0pKTtcbiAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShoYXNoLmRpZ2VzdCgpKTtcbn07XG5cbmNvbnN0IGRlZmF1bHRUcnVlID0gKHBhcmFtPzogYm9vbGVhbik6IGJvb2xlYW4gPT4gcGFyYW0gIT09IGZhbHNlO1xuXG5mdW5jdGlvbiB0aHJvd1RvTnVsbDxUeXBlPihmbjogKCkgPT4gVHlwZSk6IFR5cGUgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzUG9pbnQocDogVWludDhBcnJheSwgeE9ubHk6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgaWYgKChwLmxlbmd0aCA9PT0gMzIpICE9PSB4T25seSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIHJldHVybiAhIW5lY2MuUG9pbnQuZnJvbUhleChwKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0JpZ0ludChiOiBVaW50OEFycmF5IHwgQnVmZmVyKTogYmlnaW50IHtcbiAgY29uc3QgYnVmZiA9IEJ1ZmZlci5mcm9tKGIpO1xuICBpZiAoYnVmZi5sZW5ndGggIT09IDMyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNpemUgJHtidWZmLmxlbmd0aH0nKTtcbiAgfVxuICByZXR1cm4gQmlnSW50KGAweCR7YnVmZi50b1N0cmluZygnaGV4Jyl9YCk7XG59XG5cbmNvbnN0IGVjYzogU2VjcDI1NmsxSW50ZXJmYWNlID0ge1xuICBpc1BvaW50OiAocDogVWludDhBcnJheSk6IGJvb2xlYW4gPT4gaXNQb2ludChwLCBmYWxzZSksXG4gIGlzUHJpdmF0ZTogKGQ6IFVpbnQ4QXJyYXkpOiBib29sZWFuID0+IG5lY2MudXRpbHMuaXNWYWxpZFByaXZhdGVLZXkoZCksXG4gIGlzWE9ubHlQb2ludDogKHA6IFVpbnQ4QXJyYXkpOiBib29sZWFuID0+IGlzUG9pbnQocCwgdHJ1ZSksXG5cbiAgeE9ubHlQb2ludEFkZFR3ZWFrOiAocDogVWludDhBcnJheSwgdHdlYWs6IFVpbnQ4QXJyYXkpOiB7IHBhcml0eTogMCB8IDE7IHhPbmx5UHVia2V5OiBVaW50OEFycmF5IH0gfCBudWxsID0+XG4gICAgdGhyb3dUb051bGwoKCkgPT4ge1xuICAgICAgY29uc3QgUCA9IG5lY2MudXRpbHMucG9pbnRBZGRTY2FsYXIocCwgdHdlYWssIHRydWUpO1xuICAgICAgY29uc3QgcGFyaXR5ID0gUFswXSAlIDIgPT09IDEgPyAxIDogMDtcbiAgICAgIHJldHVybiB7IHBhcml0eSwgeE9ubHlQdWJrZXk6IFAuc2xpY2UoMSkgfTtcbiAgICB9KSxcblxuICBwb2ludEZyb21TY2FsYXI6IChzazogVWludDhBcnJheSwgY29tcHJlc3NlZD86IGJvb2xlYW4pOiBVaW50OEFycmF5IHwgbnVsbCA9PlxuICAgIHRocm93VG9OdWxsKCgpID0+IG5lY2MuZ2V0UHVibGljS2V5KHNrLCBkZWZhdWx0VHJ1ZShjb21wcmVzc2VkKSkpLFxuXG4gIHBvaW50Q29tcHJlc3M6IChwOiBVaW50OEFycmF5LCBjb21wcmVzc2VkPzogYm9vbGVhbik6IFVpbnQ4QXJyYXkgPT4ge1xuICAgIHJldHVybiBuZWNjLlBvaW50LmZyb21IZXgocCkudG9SYXdCeXRlcyhkZWZhdWx0VHJ1ZShjb21wcmVzc2VkKSk7XG4gIH0sXG5cbiAgcG9pbnRNdWx0aXBseTogKGE6IFVpbnQ4QXJyYXksIHR3ZWFrOiBVaW50OEFycmF5LCBjb21wcmVzc2VkPzogYm9vbGVhbik6IFVpbnQ4QXJyYXkgfCBudWxsID0+XG4gICAgdGhyb3dUb051bGwoKCkgPT4gbmVjYy51dGlscy5wb2ludE11bHRpcGx5KGEsIHR3ZWFrLCBkZWZhdWx0VHJ1ZShjb21wcmVzc2VkKSkpLFxuXG4gIHBvaW50QWRkOiAoYTogVWludDhBcnJheSwgYjogVWludDhBcnJheSwgY29tcHJlc3NlZD86IGJvb2xlYW4pOiBVaW50OEFycmF5IHwgbnVsbCA9PlxuICAgIHRocm93VG9OdWxsKCgpID0+IHtcbiAgICAgIGNvbnN0IEEgPSBuZWNjLlBvaW50LmZyb21IZXgoYSk7XG4gICAgICBjb25zdCBCID0gbmVjYy5Qb2ludC5mcm9tSGV4KGIpO1xuICAgICAgcmV0dXJuIEEuYWRkKEIpLnRvUmF3Qnl0ZXMoZGVmYXVsdFRydWUoY29tcHJlc3NlZCkpO1xuICAgIH0pLFxuXG4gIHBvaW50QWRkU2NhbGFyOiAocDogVWludDhBcnJheSwgdHdlYWs6IFVpbnQ4QXJyYXksIGNvbXByZXNzZWQ/OiBib29sZWFuKTogVWludDhBcnJheSB8IG51bGwgPT5cbiAgICB0aHJvd1RvTnVsbCgoKSA9PiBuZWNjLnV0aWxzLnBvaW50QWRkU2NhbGFyKHAsIHR3ZWFrLCBkZWZhdWx0VHJ1ZShjb21wcmVzc2VkKSkpLFxuXG4gIHByaXZhdGVBZGQ6IChkOiBVaW50OEFycmF5LCB0d2VhazogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkgfCBudWxsID0+XG4gICAgdGhyb3dUb051bGwoKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gbmVjYy51dGlscy5wcml2YXRlQWRkKGQsIHR3ZWFrKTtcbiAgICAgIC8vIHRpbnktc2VjcDI1NmsxIHJldHVybnMgbnVsbCByYXRoZXIgdGhhbiBhbGxvd2luZyBhIDAgcHJpdmF0ZSBrZXkgdG8gYmUgcmV0dXJuZWRcbiAgICAgIC8vIEVDUGFpci50ZXN0RWNjKCkgcmVxdWlyZXMgdGhhdCBiZWhhdmlvci5cbiAgICAgIGlmIChyZXM/LmV2ZXJ5KChpKSA9PiBpID09PSAwKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pLFxuXG4gIHByaXZhdGVOZWdhdGU6IChkOiBVaW50OEFycmF5KTogVWludDhBcnJheSA9PiBuZWNjLnV0aWxzLnByaXZhdGVOZWdhdGUoZCksXG5cbiAgc2lnbjogKGg6IFVpbnQ4QXJyYXksIGQ6IFVpbnQ4QXJyYXksIGU/OiBVaW50OEFycmF5KTogVWludDhBcnJheSA9PiB7XG4gICAgcmV0dXJuIG5lY2Muc2lnblN5bmMoaCwgZCwgeyBkZXI6IGZhbHNlLCBleHRyYUVudHJvcHk6IGUgfSk7XG4gIH0sXG5cbiAgc2lnblNjaG5vcnI6IChoOiBVaW50OEFycmF5LCBkOiBVaW50OEFycmF5LCBlOiBVaW50OEFycmF5ID0gQnVmZmVyLmFsbG9jKDMyLCAweDAwKSk6IFVpbnQ4QXJyYXkgPT4ge1xuICAgIHJldHVybiBuZWNjLnNjaG5vcnIuc2lnblN5bmMoaCwgZCwgZSk7XG4gIH0sXG5cbiAgdmVyaWZ5OiAoaDogVWludDhBcnJheSwgUTogVWludDhBcnJheSwgc2lnbmF0dXJlOiBVaW50OEFycmF5LCBzdHJpY3Q/OiBib29sZWFuKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIG5lY2MudmVyaWZ5KHNpZ25hdHVyZSwgaCwgUSwgeyBzdHJpY3QgfSk7XG4gIH0sXG5cbiAgdmVyaWZ5U2Nobm9ycjogKGg6IFVpbnQ4QXJyYXksIFE6IFVpbnQ4QXJyYXksIHNpZ25hdHVyZTogVWludDhBcnJheSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBuZWNjLnNjaG5vcnIudmVyaWZ5U3luYyhzaWduYXR1cmUsIGgsIFEpO1xuICB9LFxufTtcblxuY29uc3QgY3J5cHRvOiBDcnlwdG8gPSB7XG4gIC4uLmJhc2VDcnlwdG8sXG4gIHBvaW50TXVsdGlwbHlVbnNhZmUocDogVWludDhBcnJheSwgYTogVWludDhBcnJheSwgY29tcHJlc3M6IGJvb2xlYW4pOiBVaW50OEFycmF5IHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb2R1Y3QgPSBuZWNjLlBvaW50LmZyb21IZXgocCkubXVsdGlwbHlBbmRBZGRVbnNhZmUobmVjYy5Qb2ludC5aRVJPLCB0b0JpZ0ludChhKSwgQmlnSW50KDEpKTtcbiAgICAgIGlmICghcHJvZHVjdCkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gcHJvZHVjdC50b1Jhd0J5dGVzKGNvbXByZXNzKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSxcbiAgcG9pbnRNdWx0aXBseUFuZEFkZFVuc2FmZShwMTogVWludDhBcnJheSwgYTogVWludDhBcnJheSwgcDI6IFVpbnQ4QXJyYXksIGNvbXByZXNzOiBib29sZWFuKTogVWludDhBcnJheSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwMnAgPSBuZWNjLlBvaW50LmZyb21IZXgocDIpO1xuICAgICAgY29uc3QgcCA9IG5lY2MuUG9pbnQuZnJvbUhleChwMSkubXVsdGlwbHlBbmRBZGRVbnNhZmUocDJwLCB0b0JpZ0ludChhKSwgQmlnSW50KDEpKTtcbiAgICAgIGlmICghcCkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gcC50b1Jhd0J5dGVzKGNvbXByZXNzKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSxcbiAgcG9pbnRBZGQoYTogVWludDhBcnJheSwgYjogVWludDhBcnJheSwgY29tcHJlc3M6IGJvb2xlYW4pOiBVaW50OEFycmF5IHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZWNjLlBvaW50LmZyb21IZXgoYSkuYWRkKG5lY2MuUG9pbnQuZnJvbUhleChiKSkudG9SYXdCeXRlcyhjb21wcmVzcyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sXG4gIHBvaW50QWRkVHdlYWsocDogVWludDhBcnJheSwgdHdlYWs6IFVpbnQ4QXJyYXksIGNvbXByZXNzOiBib29sZWFuKTogVWludDhBcnJheSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBQID0gbmVjYy5Qb2ludC5mcm9tSGV4KHApO1xuICAgICAgY29uc3QgdCA9IGJhc2VDcnlwdG8ucmVhZFNlY3JldCh0d2Vhayk7XG4gICAgICBjb25zdCBRID0gbmVjYy5Qb2ludC5CQVNFLm11bHRpcGx5QW5kQWRkVW5zYWZlKFAsIHQsIEJpZ0ludCgxKSk7XG4gICAgICBpZiAoIVEpIHRocm93IG5ldyBFcnJvcignVHdlYWtlZCBwb2ludCBhdCBpbmZpbml0eScpO1xuICAgICAgcmV0dXJuIFEudG9SYXdCeXRlcyhjb21wcmVzcyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sXG4gIHBvaW50Q29tcHJlc3MocDogVWludDhBcnJheSwgY29tcHJlc3MgPSB0cnVlKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIG5lY2MuUG9pbnQuZnJvbUhleChwKS50b1Jhd0J5dGVzKGNvbXByZXNzKTtcbiAgfSxcbiAgbGlmdFgocDogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5lY2MuUG9pbnQuZnJvbUhleChwKS50b1Jhd0J5dGVzKGZhbHNlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSxcbiAgZ2V0UHVibGljS2V5KHM6IFVpbnQ4QXJyYXksIGNvbXByZXNzOiBib29sZWFuKTogVWludDhBcnJheSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmVjYy5nZXRQdWJsaWNLZXkocywgY29tcHJlc3MpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LFxuICB0YWdnZWRIYXNoOiBuZWNjLnV0aWxzLnRhZ2dlZEhhc2hTeW5jLFxuICBzaGEyNTYoLi4ubWVzc2FnZXM6IFVpbnQ4QXJyYXlbXSk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHNoYTI1NiA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpO1xuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBtZXNzYWdlcykgc2hhMjU2LnVwZGF0ZShtZXNzYWdlKTtcbiAgICByZXR1cm4gc2hhMjU2LmRpZ2VzdCgpO1xuICB9LFxufTtcblxuY29uc3QgZWNQYWlyQXBpOiBFQ1BhaXJBUEkgPSBFQ1BhaXJGYWN0b3J5KGVjYyk7XG5jb25zdCBiaXAzMkFwaTogQklQMzJBUEkgPSBCSVAzMkZhY3RvcnkoZWNjKTtcbmNvbnN0IG11c2lnQXBpOiBNdVNpZyA9IE11U2lnRmFjdG9yeShjcnlwdG8pO1xuXG5leHBvcnQgeyBlY2MsIGVjUGFpckFwaSwgRUNQYWlyQVBJLCBFQ1BhaXJJbnRlcmZhY2UsIGJpcDMyQXBpLCBCSVAzMkFQSSwgQklQMzJJbnRlcmZhY2UsIG11c2lnQXBpLCBNdVNpZyB9O1xuIl19
@@ -1,37 +0,0 @@
1
- import { BaseCurve, SplitSecret } from './types';
2
- export declare class Shamir {
3
- curve: BaseCurve;
4
- constructor(curve: BaseCurve);
5
- /**
6
- * Perform Shamir sharing on the secret `secret` to the degree `threshold - 1` split `numShares`
7
- * ways. The split secret requires `threshold` shares to be reconstructed.
8
- *
9
- * @param secret secret to split
10
- * @param threshold share threshold required to reconstruct secret
11
- * @param numShares total number of shares to split secret into
12
- * @param indices optional indices which can be used while generating the shares
13
- * @param salt optional salt which could be used while generating the shares
14
- * @returns Dictionary containing `shares`, a dictionary where each key is an int
15
- * in the range 1<=x<=numShares representing that share's free term, and `v`, an
16
- * array of proofs to be shared with all participants.
17
- */
18
- split(secret: bigint, threshold: number, numShares: number, indices?: Array<number>, salt?: bigint): SplitSecret;
19
- /**
20
- * Verify a VSS share.
21
- *
22
- * @param u Secret share received from other party.
23
- * @param v Verification values received from other party.
24
- * @param index Verifier's index.
25
- * @returns True on success; otherwise throws Error.
26
- */
27
- verify(u: bigint, v: Array<bigint>, index: number): boolean;
28
- /**
29
- * Reconstitute a secret from a dictionary of shares. The number of shares must
30
- * be equal to `t` to reconstitute the original secret.
31
- *
32
- * @param shares dictionary of shares. each key is the free term of the share
33
- * @returns secret
34
- */
35
- combine(shares: Record<number, bigint>): bigint;
36
- }
37
- //# sourceMappingURL=shamir.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shamir.d.ts","sourceRoot":"","sources":["../../../src/curves/shamir.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,qBAAa,MAAM;IACjB,KAAK,EAAE,SAAS,CAAC;gBAEL,KAAK,EAAE,SAAS;IAI5B;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,SAAY,GAAG,WAAW;IA8CnH;;;;;;;OAOG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAsB3D;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CA+BhD"}