@bitgo-beta/sdk-lib-mpc 8.2.1-alpha.5 → 8.2.1-alpha.50
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.
- package/CHANGELOG.md +288 -0
- package/dist/src/curves/constant.d.ts +2 -0
- package/dist/src/curves/constant.d.ts.map +1 -0
- package/dist/src/curves/constant.js +6 -0
- package/dist/src/curves/{baseCurve.d.ts → ed25519.d.ts} +9 -7
- package/dist/src/curves/ed25519.d.ts.map +1 -0
- package/dist/src/curves/ed25519.js +72 -0
- package/dist/src/curves/ed25519Bip32HdTree.d.ts +10 -0
- package/dist/src/curves/ed25519Bip32HdTree.d.ts.map +1 -0
- package/dist/src/curves/ed25519Bip32HdTree.js +85 -0
- package/dist/src/curves/index.d.ts +6 -1
- package/dist/src/curves/index.d.ts.map +1 -1
- package/dist/src/curves/index.js +7 -2
- package/dist/src/curves/secp256k1.d.ts +3 -1
- package/dist/src/curves/secp256k1.d.ts.map +1 -1
- package/dist/src/curves/secp256k1.js +14 -7
- package/dist/src/curves/secp256k1Bip32HdTree.d.ts +8 -0
- package/dist/src/curves/secp256k1Bip32HdTree.d.ts.map +1 -0
- package/dist/src/curves/secp256k1Bip32HdTree.js +54 -0
- package/dist/src/curves/types.d.ts +36 -0
- package/dist/src/curves/types.d.ts.map +1 -0
- package/dist/src/curves/types.js +3 -0
- package/dist/src/curves/util.d.ts +2 -0
- package/dist/src/curves/util.d.ts.map +1 -0
- package/dist/src/curves/util.js +11 -0
- package/dist/src/hashCommitment.d.ts +17 -0
- package/dist/src/hashCommitment.d.ts.map +1 -0
- package/dist/src/hashCommitment.js +45 -0
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +20 -2
- package/dist/src/schnorrProof.d.ts +22 -0
- package/dist/src/schnorrProof.d.ts.map +1 -0
- package/dist/src/schnorrProof.js +62 -0
- package/dist/src/shamir/index.d.ts +3 -0
- package/dist/src/shamir/index.d.ts.map +1 -0
- package/dist/src/shamir/index.js +15 -0
- package/dist/src/shamir/shamir.d.ts +38 -0
- package/dist/src/shamir/shamir.d.ts.map +1 -0
- package/dist/src/shamir/shamir.js +136 -0
- package/dist/src/shamir/types.d.ts +5 -0
- package/dist/src/shamir/types.d.ts.map +1 -0
- package/dist/src/shamir/types.js +3 -0
- package/dist/src/tss/ecdsa/index.d.ts +3 -0
- package/dist/src/tss/ecdsa/index.d.ts.map +1 -1
- package/dist/src/tss/ecdsa/index.js +5 -2
- package/dist/src/tss/ecdsa/paillierproof.d.ts +24 -0
- package/dist/src/tss/ecdsa/paillierproof.d.ts.map +1 -0
- package/dist/src/tss/ecdsa/paillierproof.js +86 -0
- package/dist/src/tss/ecdsa/primes.d.ts +2 -0
- package/dist/src/tss/ecdsa/primes.d.ts.map +1 -0
- package/dist/src/tss/ecdsa/primes.js +1846 -0
- package/dist/src/tss/ecdsa/rangeproof.d.ts +1 -1
- package/dist/src/tss/ecdsa/rangeproof.d.ts.map +1 -1
- package/dist/src/tss/ecdsa/rangeproof.js +24 -23
- package/dist/src/tss/ecdsa/types.d.ts +71 -13
- package/dist/src/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/tss/ecdsa/types.js +76 -14
- package/dist/src/tss/ecdsa/zkVProof.d.ts +25 -0
- package/dist/src/tss/ecdsa/zkVProof.d.ts.map +1 -0
- package/dist/src/tss/ecdsa/zkVProof.js +71 -0
- package/dist/src/types.d.ts +14 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/src/util.d.ts +21 -6
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +56 -14
- package/dist/tsconfig.tsbuildinfo +1 -3621
- package/package.json +4 -4
- package/dist/src/curves/baseCurve.d.ts.map +0 -1
- package/dist/src/curves/baseCurve.js +0 -6
|
@@ -23,12 +23,19 @@ exports.Secp256k1Curve = void 0;
|
|
|
23
23
|
const util_1 = require("../util");
|
|
24
24
|
const secp = __importStar(require("@noble/secp256k1"));
|
|
25
25
|
const order = secp.CURVE.n;
|
|
26
|
+
const privateKeySize = 32;
|
|
27
|
+
const publicKeySize = 33;
|
|
26
28
|
class Secp256k1Curve {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.scalarBytes = privateKeySize;
|
|
31
|
+
// Always use compressed points.
|
|
32
|
+
this.pointBytes = publicKeySize;
|
|
33
|
+
}
|
|
27
34
|
scalarRandom() {
|
|
28
35
|
return util_1.bigIntFromU8ABE(secp.utils.randomPrivateKey());
|
|
29
36
|
}
|
|
30
37
|
scalarAdd(x, y) {
|
|
31
|
-
return util_1.bigIntFromU8ABE(secp.utils.privateAdd(x, util_1.bigIntToBufferBE(y,
|
|
38
|
+
return util_1.bigIntFromU8ABE(secp.utils.privateAdd(x, util_1.bigIntToBufferBE(y, privateKeySize)));
|
|
32
39
|
}
|
|
33
40
|
scalarSub(x, y) {
|
|
34
41
|
const negatedY = secp.utils.privateNegate(y);
|
|
@@ -47,24 +54,24 @@ class Secp256k1Curve {
|
|
|
47
54
|
return secp.utils.invert(s, order);
|
|
48
55
|
}
|
|
49
56
|
pointAdd(a, b) {
|
|
50
|
-
const pointA = secp.Point.fromHex(util_1.bigIntToBufferBE(a,
|
|
51
|
-
const pointB = secp.Point.fromHex(util_1.bigIntToBufferBE(b,
|
|
57
|
+
const pointA = secp.Point.fromHex(util_1.bigIntToBufferBE(a, privateKeySize));
|
|
58
|
+
const pointB = secp.Point.fromHex(util_1.bigIntToBufferBE(b, privateKeySize));
|
|
52
59
|
return util_1.bigIntFromU8ABE(pointA.add(pointB).toRawBytes(true));
|
|
53
60
|
}
|
|
54
61
|
pointMultiply(p, s) {
|
|
55
|
-
const pointA = secp.Point.fromHex(util_1.bigIntToBufferBE(p,
|
|
62
|
+
const pointA = secp.Point.fromHex(util_1.bigIntToBufferBE(p, privateKeySize));
|
|
56
63
|
return util_1.bigIntFromU8ABE(pointA.multiply(s).toRawBytes(true));
|
|
57
64
|
}
|
|
58
65
|
basePointMult(n) {
|
|
59
|
-
const point = util_1.bigIntToBufferBE(n,
|
|
66
|
+
const point = util_1.bigIntToBufferBE(n, privateKeySize);
|
|
60
67
|
return util_1.bigIntFromU8ABE(secp.getPublicKey(point, true));
|
|
61
68
|
}
|
|
62
69
|
verify(message, signature, publicKey) {
|
|
63
|
-
return Buffer.from(secp.recoverPublicKey(message, signature.subarray(1), signature[0], true)).equals(util_1.bigIntToBufferBE(publicKey,
|
|
70
|
+
return Buffer.from(secp.recoverPublicKey(message, signature.subarray(1), signature[0], true)).equals(util_1.bigIntToBufferBE(publicKey, publicKeySize));
|
|
64
71
|
}
|
|
65
72
|
order() {
|
|
66
73
|
return order;
|
|
67
74
|
}
|
|
68
75
|
}
|
|
69
76
|
exports.Secp256k1Curve = Secp256k1Curve;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1cnZlcy9zZWNwMjU2azEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtDQUE0RDtBQUU1RCx1REFBeUM7QUFFekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUV6QixNQUFhLGNBQWM7SUFBM0I7UUF3REUsZ0JBQVcsR0FBRyxjQUFjLENBQUM7UUFFN0IsZ0NBQWdDO1FBQ2hDLGVBQVUsR0FBRyxhQUFhLENBQUM7SUFDN0IsQ0FBQztJQTNEQyxZQUFZO1FBQ1YsT0FBTyxzQkFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDNUIsT0FBTyxzQkFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSx1QkFBZ0IsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxzQkFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUztRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBWSxDQUFDLENBQVM7UUFDcEIsT0FBTyxzQkFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFTO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsdUJBQWdCLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsdUJBQWdCLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsT0FBTyxzQkFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyx1QkFBZ0IsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLHNCQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsYUFBYSxDQUFDLENBQVM7UUFDckIsTUFBTSxLQUFLLEdBQUcsdUJBQWdCLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sc0JBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsT0FBZSxFQUFFLFNBQWlCLEVBQUUsU0FBaUI7UUFDMUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ2xHLHVCQUFnQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBTUY7QUE1REQsd0NBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmlnSW50RnJvbVU4QUJFLCBiaWdJbnRUb0J1ZmZlckJFIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBCYXNlQ3VydmUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCAqIGFzIHNlY3AgZnJvbSAnQG5vYmxlL3NlY3AyNTZrMSc7XG5cbmNvbnN0IG9yZGVyID0gc2VjcC5DVVJWRS5uO1xuY29uc3QgcHJpdmF0ZUtleVNpemUgPSAzMjtcbmNvbnN0IHB1YmxpY0tleVNpemUgPSAzMztcblxuZXhwb3J0IGNsYXNzIFNlY3AyNTZrMUN1cnZlIGltcGxlbWVudHMgQmFzZUN1cnZlIHtcbiAgc2NhbGFyUmFuZG9tKCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIGJpZ0ludEZyb21VOEFCRShzZWNwLnV0aWxzLnJhbmRvbVByaXZhdGVLZXkoKSk7XG4gIH1cblxuICBzY2FsYXJBZGQoeDogYmlnaW50LCB5OiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBiaWdJbnRGcm9tVThBQkUoc2VjcC51dGlscy5wcml2YXRlQWRkKHgsIGJpZ0ludFRvQnVmZmVyQkUoeSwgcHJpdmF0ZUtleVNpemUpKSk7XG4gIH1cblxuICBzY2FsYXJTdWIoeDogYmlnaW50LCB5OiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIGNvbnN0IG5lZ2F0ZWRZID0gc2VjcC51dGlscy5wcml2YXRlTmVnYXRlKHkpO1xuICAgIHJldHVybiBiaWdJbnRGcm9tVThBQkUoc2VjcC51dGlscy5wcml2YXRlQWRkKHgsIG5lZ2F0ZWRZKSk7XG4gIH1cblxuICBzY2FsYXJNdWx0KHg6IGJpZ2ludCwgeTogYmlnaW50KTogYmlnaW50IHtcbiAgICByZXR1cm4gc2VjcC51dGlscy5tb2QoeCAqIHksIG9yZGVyKTtcbiAgfVxuXG4gIHNjYWxhclJlZHVjZShzOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBzZWNwLnV0aWxzLm1vZChzLCBvcmRlcik7XG4gIH1cblxuICBzY2FsYXJOZWdhdGUoczogYmlnaW50KTogYmlnaW50IHtcbiAgICByZXR1cm4gYmlnSW50RnJvbVU4QUJFKHNlY3AudXRpbHMucHJpdmF0ZU5lZ2F0ZShzKSk7XG4gIH1cblxuICBzY2FsYXJJbnZlcnQoczogYmlnaW50KTogYmlnaW50IHtcbiAgICByZXR1cm4gc2VjcC51dGlscy5pbnZlcnQocywgb3JkZXIpO1xuICB9XG5cbiAgcG9pbnRBZGQoYTogYmlnaW50LCBiOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIGNvbnN0IHBvaW50QSA9IHNlY3AuUG9pbnQuZnJvbUhleChiaWdJbnRUb0J1ZmZlckJFKGEsIHByaXZhdGVLZXlTaXplKSk7XG4gICAgY29uc3QgcG9pbnRCID0gc2VjcC5Qb2ludC5mcm9tSGV4KGJpZ0ludFRvQnVmZmVyQkUoYiwgcHJpdmF0ZUtleVNpemUpKTtcbiAgICByZXR1cm4gYmlnSW50RnJvbVU4QUJFKHBvaW50QS5hZGQocG9pbnRCKS50b1Jhd0J5dGVzKHRydWUpKTtcbiAgfVxuXG4gIHBvaW50TXVsdGlwbHkocDogYmlnaW50LCBzOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIGNvbnN0IHBvaW50QSA9IHNlY3AuUG9pbnQuZnJvbUhleChiaWdJbnRUb0J1ZmZlckJFKHAsIHByaXZhdGVLZXlTaXplKSk7XG4gICAgcmV0dXJuIGJpZ0ludEZyb21VOEFCRShwb2ludEEubXVsdGlwbHkocykudG9SYXdCeXRlcyh0cnVlKSk7XG4gIH1cblxuICBiYXNlUG9pbnRNdWx0KG46IGJpZ2ludCk6IGJpZ2ludCB7XG4gICAgY29uc3QgcG9pbnQgPSBiaWdJbnRUb0J1ZmZlckJFKG4sIHByaXZhdGVLZXlTaXplKTtcbiAgICByZXR1cm4gYmlnSW50RnJvbVU4QUJFKHNlY3AuZ2V0UHVibGljS2V5KHBvaW50LCB0cnVlKSk7XG4gIH1cblxuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlciwgcHVibGljS2V5OiBiaWdpbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oc2VjcC5yZWNvdmVyUHVibGljS2V5KG1lc3NhZ2UsIHNpZ25hdHVyZS5zdWJhcnJheSgxKSwgc2lnbmF0dXJlWzBdLCB0cnVlKSkuZXF1YWxzKFxuICAgICAgYmlnSW50VG9CdWZmZXJCRShwdWJsaWNLZXksIHB1YmxpY0tleVNpemUpXG4gICAgKTtcbiAgfVxuXG4gIG9yZGVyKCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIG9yZGVyO1xuICB9XG5cbiAgc2NhbGFyQnl0ZXMgPSBwcml2YXRlS2V5U2l6ZTtcblxuICAvLyBBbHdheXMgdXNlIGNvbXByZXNzZWQgcG9pbnRzLlxuICBwb2ludEJ5dGVzID0gcHVibGljS2V5U2l6ZTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PrivateKeychain, PublicKeychain } from './types';
|
|
2
|
+
import { Secp256k1Curve } from './secp256k1';
|
|
3
|
+
export declare class Secp256k1Bip32HdTree {
|
|
4
|
+
static curve: Secp256k1Curve;
|
|
5
|
+
publicDerive(keychain: PublicKeychain, path: string): PublicKeychain;
|
|
6
|
+
privateDerive(keychain: PrivateKeychain, path: string): PrivateKeychain;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=secp256k1Bip32HdTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secp256k1Bip32HdTree.d.ts","sourceRoot":"","sources":["../../../src/curves/secp256k1Bip32HdTree.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7C,qBAAa,oBAAoB;IAC/B,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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Secp256k1Bip32HdTree = 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 Secp256k1Bip32HdTree {
|
|
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 = Secp256k1Bip32HdTree.curve.pointAdd(pk, Secp256k1Bip32HdTree.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 = Secp256k1Bip32HdTree.curve.pointAdd(pk, Secp256k1Bip32HdTree.curve.basePointMult(il));
|
|
30
|
+
const left_sk = Secp256k1Bip32HdTree.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.Secp256k1Bip32HdTree = Secp256k1Bip32HdTree;
|
|
38
|
+
Secp256k1Bip32HdTree.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxQmlwMzJIZFRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VydmVzL3NlY3AyNTZrMUJpcDMySGRUcmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFvQztBQUdwQywyQ0FBNkM7QUFDN0Msa0NBQStEO0FBQy9ELGlDQUF1QztBQUV2QyxNQUFhLG9CQUFvQjtJQUcvQixZQUFZLENBQUMsUUFBd0IsRUFBRSxJQUFZO1FBQ2pELE1BQU0sT0FBTyxHQUFHLG9CQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsU0FBUyxXQUFXLENBQUMsR0FBYSxFQUFFLEtBQXlCO1lBQzNELE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsTUFBTSxFQUFFLEdBQUcseUJBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxNQUFNLEVBQUUsR0FBRyx5QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDcEMsV0FBVyxFQUNYLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNoRSxDQUFDO1FBQ0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQXlCLEVBQUUsSUFBWTtRQUNuRCxNQUFNLE9BQU8sR0FBRyxvQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLFNBQVMsV0FBVyxDQUFDLEdBQWEsRUFBRSxLQUF5QjtZQUMzRCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDaEMsTUFBTSxDQUFDLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUQsTUFBTSxFQUFFLEdBQUcseUJBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxNQUFNLEVBQUUsR0FBRyx5QkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RHLE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUN4QyxXQUFXLEVBQ1gsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDN0UsQ0FBQztRQUNGLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBcENILG9EQXFDQztBQXBDUSwwQkFBSyxHQUFtQixJQUFJLDBCQUFjLEVBQUUsQ0FBQztBQXNDdEQsU0FBUyxxQkFBcUIsQ0FBQyxRQUE0QixDQUFDLEVBQUUsU0FBaUIsRUFBRSxFQUFVLEVBQUUsRUFBVztJQUN0RyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3RDLHVCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckM7U0FBTTtRQUNMLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7U0FDNUU7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osdUJBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDeEM7SUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5QixPQUFPLG1CQUFVLENBQUMsUUFBUSxFQUFFLHVCQUFnQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSG1hYyB9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IFByaXZhdGVLZXljaGFpbiwgUHVibGljS2V5Y2hhaW4gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNlY3AyNTZrMUN1cnZlIH0gZnJvbSAnLi9zZWNwMjU2azEnO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBwYXRoVG9JbmRpY2VzIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGNsYXNzIFNlY3AyNTZrMUJpcDMySGRUcmVlIHtcbiAgc3RhdGljIGN1cnZlOiBTZWNwMjU2azFDdXJ2ZSA9IG5ldyBTZWNwMjU2azFDdXJ2ZSgpO1xuXG4gIHB1YmxpY0Rlcml2ZShrZXljaGFpbjogUHVibGljS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFB1YmxpY0tleWNoYWluIHtcbiAgICBjb25zdCBpbmRpY2VzID0gcGF0aFRvSW5kaWNlcyhwYXRoKTtcbiAgICBmdW5jdGlvbiBkZXJpdmVJbmRleChhY2M6IGJpZ2ludFtdLCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkKTogYmlnaW50W10ge1xuICAgICAgY29uc3QgW3BrLCBjaGFpbmNvZGVdID0gYWNjO1xuICAgICAgY29uc3QgSSA9IGRlcml2ZVNlY3AyNTZrMUhlbHBlcihpbmRleCwgY2hhaW5jb2RlLCBwayk7XG4gICAgICBjb25zdCBpbCA9IGJpZ0ludEZyb21CdWZmZXJCRShJLnNsaWNlKDAsIDMyKSk7XG4gICAgICBjb25zdCBpciA9IGJpZ0ludEZyb21CdWZmZXJCRShJLnNsaWNlKDMyKSk7XG4gICAgICBjb25zdCBsZWZ0X3BrID0gU2VjcDI1NmsxQmlwMzJIZFRyZWUuY3VydmUucG9pbnRBZGQocGssIFNlY3AyNTZrMUJpcDMySGRUcmVlLmN1cnZlLmJhc2VQb2ludE11bHQoaWwpKTtcbiAgICAgIHJldHVybiBbbGVmdF9waywgaXJdO1xuICAgIH1cbiAgICBjb25zdCBbcGssIGNoYWluY29kZV0gPSBpbmRpY2VzLnJlZHVjZShcbiAgICAgIGRlcml2ZUluZGV4LFxuICAgICAgZGVyaXZlSW5kZXgoW2tleWNoYWluLnBrLCBrZXljaGFpbi5jaGFpbmNvZGVdLCBpbmRpY2VzLnNoaWZ0KCkpXG4gICAgKTtcbiAgICByZXR1cm4geyBwaywgY2hhaW5jb2RlIH07XG4gIH1cblxuICBwcml2YXRlRGVyaXZlKGtleWNoYWluOiBQcml2YXRlS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFByaXZhdGVLZXljaGFpbiB7XG4gICAgY29uc3QgaW5kaWNlcyA9IHBhdGhUb0luZGljZXMocGF0aCk7XG4gICAgZnVuY3Rpb24gZGVyaXZlSW5kZXgoYWNjOiBiaWdpbnRbXSwgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCk6IGJpZ2ludFtdIHtcbiAgICAgIGNvbnN0IFtwaywgc2ssIGNoYWluY29kZV0gPSBhY2M7XG4gICAgICBjb25zdCBJID0gZGVyaXZlU2VjcDI1NmsxSGVscGVyKGluZGV4LCBjaGFpbmNvZGUsIHBrLCBzayk7XG4gICAgICBjb25zdCBpbCA9IGJpZ0ludEZyb21CdWZmZXJCRShJLnNsaWNlKDAsIDMyKSk7XG4gICAgICBjb25zdCBpciA9IGJpZ0ludEZyb21CdWZmZXJCRShJLnNsaWNlKDMyKSk7XG4gICAgICBjb25zdCBsZWZ0X3BrID0gU2VjcDI1NmsxQmlwMzJIZFRyZWUuY3VydmUucG9pbnRBZGQocGssIFNlY3AyNTZrMUJpcDMySGRUcmVlLmN1cnZlLmJhc2VQb2ludE11bHQoaWwpKTtcbiAgICAgIGNvbnN0IGxlZnRfc2sgPSBTZWNwMjU2azFCaXAzMkhkVHJlZS5jdXJ2ZS5zY2FsYXJBZGQoc2ssIGlsKTtcbiAgICAgIHJldHVybiBbbGVmdF9waywgbGVmdF9zaywgaXJdO1xuICAgIH1cbiAgICBjb25zdCBbcGssIHNrLCBjaGFpbmNvZGVdID0gaW5kaWNlcy5yZWR1Y2UoXG4gICAgICBkZXJpdmVJbmRleCxcbiAgICAgIGRlcml2ZUluZGV4KFtrZXljaGFpbi5waywga2V5Y2hhaW4uc2ssIGtleWNoYWluLmNoYWluY29kZV0sIGluZGljZXMuc2hpZnQoKSlcbiAgICApO1xuICAgIHJldHVybiB7IHBrLCBzaywgY2hhaW5jb2RlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVyaXZlU2VjcDI1NmsxSGVscGVyKGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSAwLCBjaGFpbmNvZGU6IGJpZ2ludCwgcGs6IGJpZ2ludCwgc2s/OiBiaWdpbnQpOiBCdWZmZXIge1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDMzICsgNCk7XG4gIGlmICgoKGluZGV4ID4+PiAwKSAmIDB4ODAwMDAwMDApID09PSAwKSB7XG4gICAgYmlnSW50VG9CdWZmZXJCRShwaywgMzMpLmNvcHkoZGF0YSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHBlcmZvcm1lZCBoYXJkZW5lZCBkZXJpdmF0aW9uIHdpdGhvdXQgcHJpdmF0ZSBrZXlcIik7XG4gICAgfVxuICAgIGRhdGFbMF0gPSAwO1xuICAgIGJpZ0ludFRvQnVmZmVyQkUoc2ssIDMyKS5jb3B5KGRhdGEsIDEpO1xuICB9XG4gIGRhdGEud3JpdGVVSW50MzJCRShpbmRleCwgMzMpO1xuICByZXR1cm4gY3JlYXRlSG1hYygnc2hhNTEyJywgYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKSkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpO1xufVxuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export declare type PublicKeychain = {
|
|
3
|
+
pk: bigint;
|
|
4
|
+
chaincode: bigint;
|
|
5
|
+
};
|
|
6
|
+
export declare type PrivateKeychain = PublicKeychain & {
|
|
7
|
+
sk: bigint;
|
|
8
|
+
prefix?: bigint;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* An interface for calculating a subkey in an HD key scheme.
|
|
12
|
+
*/
|
|
13
|
+
export interface HDTree {
|
|
14
|
+
publicDerive(keychain: PublicKeychain, path: string): PublicKeychain;
|
|
15
|
+
privateDerive(keychain: PrivateKeychain, path: string): PrivateKeychain;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Base Interface for supporting elliptic curve parameters
|
|
19
|
+
*/
|
|
20
|
+
export interface BaseCurve {
|
|
21
|
+
scalarReduce(s: bigint): bigint;
|
|
22
|
+
scalarNegate(s: bigint): bigint;
|
|
23
|
+
scalarInvert(s: bigint): bigint;
|
|
24
|
+
scalarRandom(): bigint;
|
|
25
|
+
scalarAdd(x: bigint, y: bigint): bigint;
|
|
26
|
+
scalarSub(x: bigint, y: bigint): bigint;
|
|
27
|
+
scalarMult(x: bigint, y: bigint): bigint;
|
|
28
|
+
basePointMult(n: bigint): bigint;
|
|
29
|
+
pointAdd(p: bigint, q: bigint): bigint;
|
|
30
|
+
pointMultiply(p: bigint, s: bigint): bigint;
|
|
31
|
+
verify(message: Buffer, signature: Buffer, publicKey: bigint): boolean;
|
|
32
|
+
order: () => bigint;
|
|
33
|
+
scalarBytes: number;
|
|
34
|
+
pointBytes: number;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/curves/types.ts"],"names":[],"mappings":";AAAA,oBAAY,cAAc,GAAG;IAE3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,eAAe,GAAG,cAAc,GAAG;IAE7C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC;IAErE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;CACzE;AAED;;GAEG;AACH,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;IAEpB,WAAW,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VydmVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQdWJsaWNLZXljaGFpbiA9IHtcbiAgLy8gcHVibGljIGtleVxuICBwazogYmlnaW50O1xuICBjaGFpbmNvZGU6IGJpZ2ludDtcbn07XG5cbmV4cG9ydCB0eXBlIFByaXZhdGVLZXljaGFpbiA9IFB1YmxpY0tleWNoYWluICYge1xuICAvLyBzZWNyZXQga2V5XG4gIHNrOiBiaWdpbnQ7XG4gIHByZWZpeD86IGJpZ2ludDtcbn07XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIGZvciBjYWxjdWxhdGluZyBhIHN1YmtleSBpbiBhbiBIRCBrZXkgc2NoZW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhEVHJlZSB7XG4gIHB1YmxpY0Rlcml2ZShrZXljaGFpbjogUHVibGljS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFB1YmxpY0tleWNoYWluO1xuXG4gIHByaXZhdGVEZXJpdmUoa2V5Y2hhaW46IFByaXZhdGVLZXljaGFpbiwgcGF0aDogc3RyaW5nKTogUHJpdmF0ZUtleWNoYWluO1xufVxuXG4vKipcbiAqIEJhc2UgSW50ZXJmYWNlIGZvciBzdXBwb3J0aW5nIGVsbGlwdGljIGN1cnZlIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlQ3VydmUge1xuICAvLyBGdW5jdGlvbiB0aGF0IHJlZHVjZXMgYSBzY2FsYXIgbW9kdWxvIHRoZSBvcmRlciBvZiB0aGVcbiAgLy8gY3VydmUuXG4gIHNjYWxhclJlZHVjZShzOiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmVnYXRlZCBmaWVsZCBlbGVtZW50IG1vZHVsb1xuICAvLyB0aGUgb3JkZXIgb2YgdGhlIGN1cnZlLlxuICBzY2FsYXJOZWdhdGUoczogYmlnaW50KTogYmlnaW50O1xuICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG1vZHVsYXIgbXVsdGlwbGljYXRpdmUgaW52ZXJzZVxuICAvLyBvZiBhIGZpZWxkIGVsZW1lbnQuXG4gIHNjYWxhckludmVydChzOiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHJhbmRvbSBmaWVsZCBlbGVtZW50LlxuICBzY2FsYXJSYW5kb20oKTogYmlnaW50O1xuICAvLyAgRnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzdW0gb2YgdHdvIGZpZWxkIGVsZW1lbnRzIG1vZHVsb1xuICAvLyAgdGhlIG9yZGVyIG9mIHRoZSBjdXJ2ZS5cbiAgc2NhbGFyQWRkKHg6IGJpZ2ludCwgeTogYmlnaW50KTogYmlnaW50O1xuICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdHdvIGZpZWxkIGVsZW1lbnRzXG4gIC8vIG1vZHVsbyB0aGUgb3JkZXIgb2YgdGhlIGN1cnZlLlxuICBzY2FsYXJTdWIoeDogYmlnaW50LCB5OiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcHJvZHVjdCBvZiB0d28gZmllbGQgZWxlbWVudHNcbiAgLy8gbW9kdWxvIHRoZSBvcmRlciBvZiB0aGUgY3VydmUuXG4gIHNjYWxhck11bHQoeDogYmlnaW50LCB5OiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgbXVsdGlwbGllcyBhIGdyb3VwIGVsZW1lbnQgYnkgYSBmaWVsZCBlbGVtZW50LlxuICBiYXNlUG9pbnRNdWx0KG46IGJpZ2ludCk6IGJpZ2ludDtcbiAgLy8gRnVuY3Rpb24gdGhhdCBhZGRzIHR3byBncm91cCBlbGVtZW50cy5cbiAgcG9pbnRBZGQocDogYmlnaW50LCBxOiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIE11bHRpcGx5IGEgcG9pbnQgYnkgYSBzY2FsYXIuXG4gIHBvaW50TXVsdGlwbHkocDogYmlnaW50LCBzOiBiaWdpbnQpOiBiaWdpbnQ7XG4gIC8vIEZ1bmN0aW9uIHRoYXQgdmVyaWZpZXMgYSBzaWduYXR1cmUuXG4gIHZlcmlmeShtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyLCBwdWJsaWNLZXk6IGJpZ2ludCk6IGJvb2xlYW47XG4gIC8vIG9yZGVyIG9mIHRoZSBjdXJ2ZVxuICBvcmRlcjogKCkgPT4gYmlnaW50O1xuICAvLyB0aGUgc2l6ZSBvZiBzY2FsYXIgb2YgdGhlIGN1cnZlIGluIGJ5dGVzXG4gIHNjYWxhckJ5dGVzOiBudW1iZXI7XG4gIC8vIHRoZSBzaXplIG9mIHBvaW50IG9mIHRoZSBjdXJ2ZSBpbiBieXRlc1xuICBwb2ludEJ5dGVzOiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/curves/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKpD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXJ2ZXMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFnQixhQUFhLENBQUMsSUFBWTtJQUN4QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNwQixLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUxELHNDQUtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBhdGhUb0luZGljZXMocGF0aDogc3RyaW5nKTogbnVtYmVyW10ge1xuICByZXR1cm4gcGF0aFxuICAgIC5yZXBsYWNlKC9ebT9cXC8vLCAnJylcbiAgICAuc3BsaXQoJy8nKVxuICAgIC5tYXAoKGluZGV4KSA9PiBwYXJzZUludChpbmRleCwgMTApKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { HashCommitDecommit, HashDecommitment } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Create hash commitment and decommietment of a secret value.
|
|
5
|
+
* @param secret The secret value/message.
|
|
6
|
+
* @param r The randomness/nonce to be added to the commmitment.
|
|
7
|
+
* @returns The created commitment and decommitment.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createCommitment(secret: Buffer, r?: Buffer): HashCommitDecommit;
|
|
10
|
+
/**
|
|
11
|
+
* Verify hash commitment and decommietment of a secret value.
|
|
12
|
+
* @param commitment The commitment.
|
|
13
|
+
* @param decommietment The decommitment.
|
|
14
|
+
* @returns True if verification succeeds.
|
|
15
|
+
*/
|
|
16
|
+
export declare function verifyCommitment(commitment: Buffer, decommietment: HashDecommitment): boolean;
|
|
17
|
+
//# sourceMappingURL=hashCommitment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashCommitment.d.ts","sourceRoot":"","sources":["../../src/hashCommitment.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAK/D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAE,MAAyC,GAAG,kBAAkB,CAWjH;AAaD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,OAAO,CAE7F"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyCommitment = exports.createCommitment = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const util_1 = require("./util");
|
|
6
|
+
const minRandomnessLength = 32;
|
|
7
|
+
/**
|
|
8
|
+
* Create hash commitment and decommietment of a secret value.
|
|
9
|
+
* @param secret The secret value/message.
|
|
10
|
+
* @param r The randomness/nonce to be added to the commmitment.
|
|
11
|
+
* @returns The created commitment and decommitment.
|
|
12
|
+
*/
|
|
13
|
+
function createCommitment(secret, r = crypto_1.randomBytes(minRandomnessLength)) {
|
|
14
|
+
if (r.length < minRandomnessLength) {
|
|
15
|
+
throw new Error(`randomness must be at least ${minRandomnessLength} bytes long`);
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
commitment: hash(secret, r),
|
|
19
|
+
decommitment: {
|
|
20
|
+
blindingFactor: r,
|
|
21
|
+
secret: secret,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
exports.createCommitment = createCommitment;
|
|
26
|
+
const bytesPerUint32 = 4;
|
|
27
|
+
function hash(secret, r) {
|
|
28
|
+
return crypto_1.createHash('sha256')
|
|
29
|
+
.update(util_1.bigIntToBufferBE(BigInt(secret.length), bytesPerUint32))
|
|
30
|
+
.update(secret)
|
|
31
|
+
.update(util_1.bigIntToBufferBE(BigInt(r.length), bytesPerUint32))
|
|
32
|
+
.update(r)
|
|
33
|
+
.digest();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Verify hash commitment and decommietment of a secret value.
|
|
37
|
+
* @param commitment The commitment.
|
|
38
|
+
* @param decommietment The decommitment.
|
|
39
|
+
* @returns True if verification succeeds.
|
|
40
|
+
*/
|
|
41
|
+
function verifyCommitment(commitment, decommietment) {
|
|
42
|
+
return hash(decommietment.secret, decommietment.blindingFactor).compare(commitment) === 0;
|
|
43
|
+
}
|
|
44
|
+
exports.verifyCommitment = verifyCommitment;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaENvbW1pdG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGFzaENvbW1pdG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlEO0FBRWpELGlDQUEwQztBQUUxQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUUvQjs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxJQUFZLG9CQUFXLENBQUMsbUJBQW1CLENBQUM7SUFDM0YsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLG1CQUFtQixFQUFFO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLG1CQUFtQixhQUFhLENBQUMsQ0FBQztLQUNsRjtJQUNELE9BQU87UUFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDM0IsWUFBWSxFQUFFO1lBQ1osY0FBYyxFQUFFLENBQUM7WUFDakIsTUFBTSxFQUFFLE1BQU07U0FDZjtLQUNGLENBQUM7QUFDSixDQUFDO0FBWEQsNENBV0M7QUFFRCxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFFekIsU0FBUyxJQUFJLENBQUMsTUFBYyxFQUFFLENBQVM7SUFDckMsT0FBTyxtQkFBVSxDQUFDLFFBQVEsQ0FBQztTQUN4QixNQUFNLENBQUMsdUJBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUMvRCxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ2QsTUFBTSxDQUFDLHVCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDMUQsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNULE1BQU0sRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxhQUErQjtJQUNsRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVGLENBQUM7QUFGRCw0Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2gsIHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IEhhc2hDb21taXREZWNvbW1pdCwgSGFzaERlY29tbWl0bWVudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYmlnSW50VG9CdWZmZXJCRSB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IG1pblJhbmRvbW5lc3NMZW5ndGggPSAzMjtcblxuLyoqXG4gKiBDcmVhdGUgaGFzaCBjb21taXRtZW50IGFuZCBkZWNvbW1pZXRtZW50IG9mIGEgc2VjcmV0IHZhbHVlLlxuICogQHBhcmFtIHNlY3JldCBUaGUgc2VjcmV0IHZhbHVlL21lc3NhZ2UuXG4gKiBAcGFyYW0gciBUaGUgcmFuZG9tbmVzcy9ub25jZSB0byBiZSBhZGRlZCB0byB0aGUgY29tbW1pdG1lbnQuXG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb21taXRtZW50IGFuZCBkZWNvbW1pdG1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21taXRtZW50KHNlY3JldDogQnVmZmVyLCByOiBCdWZmZXIgPSByYW5kb21CeXRlcyhtaW5SYW5kb21uZXNzTGVuZ3RoKSk6IEhhc2hDb21taXREZWNvbW1pdCB7XG4gIGlmIChyLmxlbmd0aCA8IG1pblJhbmRvbW5lc3NMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHJhbmRvbW5lc3MgbXVzdCBiZSBhdCBsZWFzdCAke21pblJhbmRvbW5lc3NMZW5ndGh9IGJ5dGVzIGxvbmdgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNvbW1pdG1lbnQ6IGhhc2goc2VjcmV0LCByKSxcbiAgICBkZWNvbW1pdG1lbnQ6IHtcbiAgICAgIGJsaW5kaW5nRmFjdG9yOiByLFxuICAgICAgc2VjcmV0OiBzZWNyZXQsXG4gICAgfSxcbiAgfTtcbn1cblxuY29uc3QgYnl0ZXNQZXJVaW50MzIgPSA0O1xuXG5mdW5jdGlvbiBoYXNoKHNlY3JldDogQnVmZmVyLCByOiBCdWZmZXIpOiBCdWZmZXIge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAudXBkYXRlKGJpZ0ludFRvQnVmZmVyQkUoQmlnSW50KHNlY3JldC5sZW5ndGgpLCBieXRlc1BlclVpbnQzMikpXG4gICAgLnVwZGF0ZShzZWNyZXQpXG4gICAgLnVwZGF0ZShiaWdJbnRUb0J1ZmZlckJFKEJpZ0ludChyLmxlbmd0aCksIGJ5dGVzUGVyVWludDMyKSlcbiAgICAudXBkYXRlKHIpXG4gICAgLmRpZ2VzdCgpO1xufVxuXG4vKipcbiAqIFZlcmlmeSBoYXNoIGNvbW1pdG1lbnQgYW5kIGRlY29tbWlldG1lbnQgb2YgYSBzZWNyZXQgdmFsdWUuXG4gKiBAcGFyYW0gY29tbWl0bWVudCBUaGUgY29tbWl0bWVudC5cbiAqIEBwYXJhbSBkZWNvbW1pZXRtZW50IFRoZSBkZWNvbW1pdG1lbnQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHZlcmlmaWNhdGlvbiBzdWNjZWVkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUNvbW1pdG1lbnQoY29tbWl0bWVudDogQnVmZmVyLCBkZWNvbW1pZXRtZW50OiBIYXNoRGVjb21taXRtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBoYXNoKGRlY29tbWlldG1lbnQuc2VjcmV0LCBkZWNvbW1pZXRtZW50LmJsaW5kaW5nRmFjdG9yKS5jb21wYXJlKGNvbW1pdG1lbnQpID09PSAwO1xufVxuIl19
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
export * from './tss';
|
|
2
1
|
export * from './curves';
|
|
2
|
+
export * from './openssl';
|
|
3
|
+
export * from './shamir';
|
|
4
|
+
export * from './tss';
|
|
5
|
+
export * as HashCommitment from './hashCommitment';
|
|
6
|
+
export * as Schnorr from './schnorrProof';
|
|
7
|
+
export * from './types';
|
|
3
8
|
export * from './util';
|
|
4
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AAEtB,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -6,11 +6,29 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
6
6
|
if (k2 === undefined) k2 = k;
|
|
7
7
|
o[k2] = m[k];
|
|
8
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
|
+
});
|
|
9
14
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
16
|
};
|
|
17
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
18
|
+
if (mod && mod.__esModule) return mod;
|
|
19
|
+
var result = {};
|
|
20
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
21
|
+
__setModuleDefault(result, mod);
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
12
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
|
|
25
|
+
exports.Schnorr = exports.HashCommitment = void 0;
|
|
14
26
|
__exportStar(require("./curves"), exports);
|
|
27
|
+
__exportStar(require("./openssl"), exports);
|
|
28
|
+
__exportStar(require("./shamir"), exports);
|
|
29
|
+
__exportStar(require("./tss"), exports);
|
|
30
|
+
exports.HashCommitment = __importStar(require("./hashCommitment"));
|
|
31
|
+
exports.Schnorr = __importStar(require("./schnorrProof"));
|
|
32
|
+
__exportStar(require("./types"), exports);
|
|
15
33
|
__exportStar(require("./util"), exports);
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFDMUIsMkNBQXlCO0FBQ3pCLHdDQUFzQjtBQUV0QixtRUFBbUQ7QUFDbkQsMERBQTBDO0FBQzFDLDBDQUF3QjtBQUN4Qix5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2N1cnZlcyc7XG5leHBvcnQgKiBmcm9tICcuL29wZW5zc2wnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFtaXInO1xuZXhwb3J0ICogZnJvbSAnLi90c3MnO1xuXG5leHBvcnQgKiBhcyBIYXNoQ29tbWl0bWVudCBmcm9tICcuL2hhc2hDb21taXRtZW50JztcbmV4cG9ydCAqIGFzIFNjaG5vcnIgZnJvbSAnLi9zY2hub3JyUHJvb2YnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwnO1xuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BaseCurve as Curve } from './curves';
|
|
3
|
+
import { SchnorrProof } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Create a Schnorr Proof of knowledge of the discrete log of an Elliptic-curve point.
|
|
6
|
+
* @param A The curve point.
|
|
7
|
+
* @param a The discrete log of the curve point.
|
|
8
|
+
* @param curve The elliptic curve.
|
|
9
|
+
* @param additionalCtx Additional contextual information to associate with the proof.
|
|
10
|
+
* @returns The created proof.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createSchnorrProof(A: bigint, a: bigint, curve: Curve, additionalCtx?: Buffer): SchnorrProof;
|
|
13
|
+
/**
|
|
14
|
+
* Verify a Schnorr Proof of knowledge of the discrete log of an Elliptic-curve point.
|
|
15
|
+
* @param A The curve point.
|
|
16
|
+
* @param proof The schnorr proof.
|
|
17
|
+
* @param curve The elliptic curve.
|
|
18
|
+
* @param additionalCtx Additional contextual information that is supposed to associate with the proof.
|
|
19
|
+
* @returns True if the proof checks out.
|
|
20
|
+
*/
|
|
21
|
+
export declare function verifySchnorrProof(A: bigint, proof: SchnorrProof, curve: Curve, additionalCtx?: Buffer): boolean;
|
|
22
|
+
//# sourceMappingURL=schnorrProof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schnorrProof.d.ts","sourceRoot":"","sources":["../../src/schnorrProof.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,KAAK,EACZ,aAAa,GAAE,MAAwB,GACtC,YAAY,CAYd;AAuBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,KAAK,EACZ,aAAa,GAAE,MAAwB,GACtC,OAAO,CAQT"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifySchnorrProof = exports.createSchnorrProof = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Implementation of Schnorr Non-interactive Zero-Knowledge Proof.
|
|
6
|
+
* @see {@link https://datatracker.ietf.org/doc/rfc8235/}
|
|
7
|
+
*/
|
|
8
|
+
const crypto_1 = require("crypto");
|
|
9
|
+
const util_1 = require("./util");
|
|
10
|
+
/**
|
|
11
|
+
* Create a Schnorr Proof of knowledge of the discrete log of an Elliptic-curve point.
|
|
12
|
+
* @param A The curve point.
|
|
13
|
+
* @param a The discrete log of the curve point.
|
|
14
|
+
* @param curve The elliptic curve.
|
|
15
|
+
* @param additionalCtx Additional contextual information to associate with the proof.
|
|
16
|
+
* @returns The created proof.
|
|
17
|
+
*/
|
|
18
|
+
function createSchnorrProof(A, a, curve, additionalCtx = Buffer.from('')) {
|
|
19
|
+
const v = curve.scalarRandom();
|
|
20
|
+
const V = curve.basePointMult(v);
|
|
21
|
+
const c = nonInteractiveChallenge(V, A, curve, additionalCtx);
|
|
22
|
+
const r = curve.scalarSub(v, curve.scalarMult(a, c));
|
|
23
|
+
return {
|
|
24
|
+
vPoint: V,
|
|
25
|
+
r: r,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
exports.createSchnorrProof = createSchnorrProof;
|
|
29
|
+
/**
|
|
30
|
+
* Calculate challenge for NIZK schnorr proof using Fiat-Shamir transform.
|
|
31
|
+
*
|
|
32
|
+
* @param V The point/public value corresponding to the random scalar value v chosen by the prover.
|
|
33
|
+
* @param A The point to be proved.
|
|
34
|
+
* @param curve The elliptic curve.
|
|
35
|
+
* @param additionalCtx Additional contextual information to associate with the proof.
|
|
36
|
+
* @returns The calculated challenge.
|
|
37
|
+
*/
|
|
38
|
+
function nonInteractiveChallenge(V, A, curve, additionalCtx) {
|
|
39
|
+
const G = curve.basePointMult(BigInt(1));
|
|
40
|
+
const hash = crypto_1.createHash('sha256');
|
|
41
|
+
hash.update(util_1.bigIntToBufferBE(G, 32));
|
|
42
|
+
hash.update(util_1.bigIntToBufferBE(V, 32));
|
|
43
|
+
hash.update(util_1.bigIntToBufferBE(A, 32));
|
|
44
|
+
hash.update(additionalCtx);
|
|
45
|
+
return util_1.bigIntFromBufferBE(hash.digest());
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Verify a Schnorr Proof of knowledge of the discrete log of an Elliptic-curve point.
|
|
49
|
+
* @param A The curve point.
|
|
50
|
+
* @param proof The schnorr proof.
|
|
51
|
+
* @param curve The elliptic curve.
|
|
52
|
+
* @param additionalCtx Additional contextual information that is supposed to associate with the proof.
|
|
53
|
+
* @returns True if the proof checks out.
|
|
54
|
+
*/
|
|
55
|
+
function verifySchnorrProof(A, proof, curve, additionalCtx = Buffer.from('')) {
|
|
56
|
+
const c = nonInteractiveChallenge(proof.vPoint, A, curve, additionalCtx);
|
|
57
|
+
const rG = curve.basePointMult(proof.r);
|
|
58
|
+
const cA = curve.pointMultiply(A, curve.scalarReduce(c));
|
|
59
|
+
return proof.vPoint === curve.pointAdd(rG, cA);
|
|
60
|
+
}
|
|
61
|
+
exports.verifySchnorrProof = verifySchnorrProof;
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nobm9yclByb29mLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaG5vcnJQcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7O0dBR0c7QUFDSCxtQ0FBb0M7QUFHcEMsaUNBQThEO0FBRTlEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsQ0FBUyxFQUNULENBQVMsRUFDVCxLQUFZLEVBQ1osZ0JBQXdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBRXZDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpDLE1BQU0sQ0FBQyxHQUFHLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTlELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFckQsT0FBTztRQUNMLE1BQU0sRUFBRSxDQUFDO1FBQ1QsQ0FBQyxFQUFFLENBQUM7S0FDTCxDQUFDO0FBQ0osQ0FBQztBQWpCRCxnREFpQkM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsdUJBQXVCLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUFZLEVBQUUsYUFBcUI7SUFDeEYsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6QyxNQUFNLElBQUksR0FBRyxtQkFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQWdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUFnQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFM0IsT0FBTyx5QkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGtCQUFrQixDQUNoQyxDQUFTLEVBQ1QsS0FBbUIsRUFDbkIsS0FBWSxFQUNaLGdCQUF3QixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUV2QyxNQUFNLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFekUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXpELE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBYkQsZ0RBYUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIFNjaG5vcnIgTm9uLWludGVyYWN0aXZlIFplcm8tS25vd2xlZGdlIFByb29mLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvcmZjODIzNS99XG4gKi9cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgQmFzZUN1cnZlIGFzIEN1cnZlIH0gZnJvbSAnLi9jdXJ2ZXMnO1xuaW1wb3J0IHsgU2Nobm9yclByb29mIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIENyZWF0ZSBhIFNjaG5vcnIgUHJvb2Ygb2Yga25vd2xlZGdlIG9mIHRoZSBkaXNjcmV0ZSBsb2cgb2YgYW4gRWxsaXB0aWMtY3VydmUgcG9pbnQuXG4gKiBAcGFyYW0gQSBUaGUgY3VydmUgcG9pbnQuXG4gKiBAcGFyYW0gYSBUaGUgZGlzY3JldGUgbG9nIG9mIHRoZSBjdXJ2ZSBwb2ludC5cbiAqIEBwYXJhbSBjdXJ2ZSBUaGUgZWxsaXB0aWMgY3VydmUuXG4gKiBAcGFyYW0gYWRkaXRpb25hbEN0eCBBZGRpdGlvbmFsIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhlIHByb29mLlxuICogQHJldHVybnMgVGhlIGNyZWF0ZWQgcHJvb2YuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTY2hub3JyUHJvb2YoXG4gIEE6IGJpZ2ludCxcbiAgYTogYmlnaW50LFxuICBjdXJ2ZTogQ3VydmUsXG4gIGFkZGl0aW9uYWxDdHg6IEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKCcnKVxuKTogU2Nobm9yclByb29mIHtcbiAgY29uc3QgdiA9IGN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICBjb25zdCBWID0gY3VydmUuYmFzZVBvaW50TXVsdCh2KTtcblxuICBjb25zdCBjID0gbm9uSW50ZXJhY3RpdmVDaGFsbGVuZ2UoViwgQSwgY3VydmUsIGFkZGl0aW9uYWxDdHgpO1xuXG4gIGNvbnN0IHIgPSBjdXJ2ZS5zY2FsYXJTdWIodiwgY3VydmUuc2NhbGFyTXVsdChhLCBjKSk7XG5cbiAgcmV0dXJuIHtcbiAgICB2UG9pbnQ6IFYsXG4gICAgcjogcixcbiAgfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgY2hhbGxlbmdlIGZvciBOSVpLIHNjaG5vcnIgcHJvb2YgdXNpbmcgRmlhdC1TaGFtaXIgdHJhbnNmb3JtLlxuICpcbiAqIEBwYXJhbSBWIFRoZSBwb2ludC9wdWJsaWMgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgcmFuZG9tIHNjYWxhciB2YWx1ZSB2IGNob3NlbiBieSB0aGUgcHJvdmVyLlxuICogQHBhcmFtIEEgVGhlIHBvaW50IHRvIGJlIHByb3ZlZC5cbiAqIEBwYXJhbSBjdXJ2ZSBUaGUgZWxsaXB0aWMgY3VydmUuXG4gKiBAcGFyYW0gYWRkaXRpb25hbEN0eCBBZGRpdGlvbmFsIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhlIHByb29mLlxuICogQHJldHVybnMgVGhlIGNhbGN1bGF0ZWQgY2hhbGxlbmdlLlxuICovXG5mdW5jdGlvbiBub25JbnRlcmFjdGl2ZUNoYWxsZW5nZShWOiBiaWdpbnQsIEE6IGJpZ2ludCwgY3VydmU6IEN1cnZlLCBhZGRpdGlvbmFsQ3R4OiBCdWZmZXIpOiBiaWdpbnQge1xuICBjb25zdCBHID0gY3VydmUuYmFzZVBvaW50TXVsdChCaWdJbnQoMSkpO1xuXG4gIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKTtcbiAgaGFzaC51cGRhdGUoYmlnSW50VG9CdWZmZXJCRShHLCAzMikpO1xuICBoYXNoLnVwZGF0ZShiaWdJbnRUb0J1ZmZlckJFKFYsIDMyKSk7XG4gIGhhc2gudXBkYXRlKGJpZ0ludFRvQnVmZmVyQkUoQSwgMzIpKTtcbiAgaGFzaC51cGRhdGUoYWRkaXRpb25hbEN0eCk7XG5cbiAgcmV0dXJuIGJpZ0ludEZyb21CdWZmZXJCRShoYXNoLmRpZ2VzdCgpKTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBTY2hub3JyIFByb29mIG9mIGtub3dsZWRnZSBvZiB0aGUgZGlzY3JldGUgbG9nIG9mIGFuIEVsbGlwdGljLWN1cnZlIHBvaW50LlxuICogQHBhcmFtIEEgVGhlIGN1cnZlIHBvaW50LlxuICogQHBhcmFtIHByb29mIFRoZSBzY2hub3JyIHByb29mLlxuICogQHBhcmFtIGN1cnZlIFRoZSBlbGxpcHRpYyBjdXJ2ZS5cbiAqIEBwYXJhbSBhZGRpdGlvbmFsQ3R4IEFkZGl0aW9uYWwgY29udGV4dHVhbCBpbmZvcm1hdGlvbiB0aGF0IGlzIHN1cHBvc2VkIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBwcm9vZi5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHByb29mIGNoZWNrcyBvdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTY2hub3JyUHJvb2YoXG4gIEE6IGJpZ2ludCxcbiAgcHJvb2Y6IFNjaG5vcnJQcm9vZixcbiAgY3VydmU6IEN1cnZlLFxuICBhZGRpdGlvbmFsQ3R4OiBCdWZmZXIgPSBCdWZmZXIuZnJvbSgnJylcbik6IGJvb2xlYW4ge1xuICBjb25zdCBjID0gbm9uSW50ZXJhY3RpdmVDaGFsbGVuZ2UocHJvb2YudlBvaW50LCBBLCBjdXJ2ZSwgYWRkaXRpb25hbEN0eCk7XG5cbiAgY29uc3QgckcgPSBjdXJ2ZS5iYXNlUG9pbnRNdWx0KHByb29mLnIpO1xuXG4gIGNvbnN0IGNBID0gY3VydmUucG9pbnRNdWx0aXBseShBLCBjdXJ2ZS5zY2FsYXJSZWR1Y2UoYykpO1xuXG4gIHJldHVybiBwcm9vZi52UG9pbnQgPT09IGN1cnZlLnBvaW50QWRkKHJHLCBjQSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shamir/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./types"), exports);
|
|
14
|
+
__exportStar(require("./shamir"), exports);
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhbWlyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF3QjtBQUN4QiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhbWlyJztcbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BaseCurve } from '../curves';
|
|
2
|
+
import { SplitSecret } from './types';
|
|
3
|
+
export declare class Shamir {
|
|
4
|
+
curve: BaseCurve;
|
|
5
|
+
constructor(curve: BaseCurve);
|
|
6
|
+
/**
|
|
7
|
+
* Perform Shamir sharing on the secret `secret` to the degree `threshold - 1` split `numShares`
|
|
8
|
+
* ways. The split secret requires `threshold` shares to be reconstructed.
|
|
9
|
+
*
|
|
10
|
+
* @param secret secret to split
|
|
11
|
+
* @param threshold share threshold required to reconstruct secret
|
|
12
|
+
* @param numShares total number of shares to split secret into
|
|
13
|
+
* @param indices optional indices which can be used while generating the shares
|
|
14
|
+
* @param salt optional salt which could be used while generating the shares
|
|
15
|
+
* @returns Dictionary containing `shares`, a dictionary where each key is an int
|
|
16
|
+
* in the range 1<=x<=numShares representing that share's free term, and `v`, an
|
|
17
|
+
* array of proofs to be shared with all participants.
|
|
18
|
+
*/
|
|
19
|
+
split(secret: bigint, threshold: number, numShares: number, indices?: Array<number>, salt?: bigint): SplitSecret;
|
|
20
|
+
/**
|
|
21
|
+
* Verify a VSS share.
|
|
22
|
+
*
|
|
23
|
+
* @param u Secret share received from other party.
|
|
24
|
+
* @param v Verification values received from other party.
|
|
25
|
+
* @param index Verifier's index.
|
|
26
|
+
* @returns True on success; otherwise throws Error.
|
|
27
|
+
*/
|
|
28
|
+
verify(u: bigint, v: Array<bigint>, index: number): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Reconstitute a secret from a dictionary of shares. The number of shares must
|
|
31
|
+
* be equal to `t` to reconstitute the original secret.
|
|
32
|
+
*
|
|
33
|
+
* @param shares dictionary of shares. each key is the free term of the share
|
|
34
|
+
* @returns secret
|
|
35
|
+
*/
|
|
36
|
+
combine(shares: Record<number, bigint>): bigint;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=shamir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shamir.d.ts","sourceRoot":"","sources":["../../../src/shamir/shamir.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,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"}
|