@bitgo-beta/sdk-core 8.2.1-beta.13 → 8.2.1-beta.130
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 +432 -0
- package/dist/src/account-lib/baseCoin/enum.d.ts +6 -1
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +11 -1
- package/dist/src/account-lib/mpc/curves/ed25519.d.ts +4 -18
- package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/curves/ed25519.js +6 -60
- package/dist/src/account-lib/mpc/index.d.ts +4 -4
- package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/index.js +6 -6
- package/dist/src/account-lib/mpc/shamir.d.ts +5 -37
- package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/shamir.js +6 -130
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +57 -9
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +581 -57
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +97 -55
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +0 -3
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +16 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +15 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +20 -4
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/bitgoBase.d.ts +2 -1
- package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
- package/dist/src/bitgo/bitgoBase.js +1 -1
- package/dist/src/bitgo/enterprise/enterprise.d.ts +13 -1
- package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprise.js +29 -1
- package/dist/src/bitgo/enterprise/enterprises.d.ts +6 -0
- package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprises.js +26 -1
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts +4 -1
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
- package/dist/src/bitgo/enterprise/iEnterprises.d.ts +2 -0
- package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/iEnterprises.js +1 -1
- package/dist/src/bitgo/environments.d.ts +7 -0
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +17 -3
- package/dist/src/bitgo/keychain/iKeychains.d.ts +6 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +1 -1
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +30 -24
- package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +124 -89
- package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/ovcJsonCodec.js +31 -24
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +2 -0
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/iPendingApproval.js +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +13 -1
- package/dist/src/bitgo/recovery/initiate.d.ts +7 -1
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
- package/dist/src/bitgo/recovery/initiate.js +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +11 -1
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts +7 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +9 -1
- package/dist/src/bitgo/tss/common.d.ts +15 -4
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +26 -11
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +11 -8
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +36 -33
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +2 -2
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +6 -5
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.js +20 -9
- package/dist/src/bitgo/tss/types.d.ts +19 -0
- package/dist/src/bitgo/tss/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/types.js +1 -1
- package/dist/src/bitgo/utils/codecProps.d.ts +7 -0
- package/dist/src/bitgo/utils/codecProps.d.ts.map +1 -0
- package/dist/src/bitgo/utils/codecProps.js +41 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/opengpgUtils.js +7 -10
- package/dist/src/bitgo/utils/postWithCodec.d.ts +18 -0
- package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -0
- package/dist/src/bitgo/utils/postWithCodec.js +59 -0
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +59 -12
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +71 -9
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +174 -9
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +27 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +47 -7
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +247 -119
- package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +9 -0
- package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +18 -5
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +79 -25
- package/dist/src/bitgo/wallet/BuildParams.d.ts +112 -0
- package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/BuildParams.js +121 -0
- package/dist/src/bitgo/wallet/SendTransactionRequest.d.ts +93 -0
- package/dist/src/bitgo/wallet/SendTransactionRequest.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/SendTransactionRequest.js +41 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts +14 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +11 -2
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +140 -82
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/openssl/index.d.ts +4 -1
- package/dist/src/openssl/index.d.ts.map +1 -1
- package/dist/src/openssl/index.js +7 -12
- package/dist/test/node.utils.d.ts +2 -0
- package/dist/test/node.utils.d.ts.map +1 -0
- package/dist/test/node.utils.js +5 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +185 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts +3 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts.map +1 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.js +24 -0
- package/dist/test/unit/bitgo/utils/postWithCodec.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/postWithCodec.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/postWithCodec.js +79 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +49 -0
- package/dist/test/unit/openssl.d.ts +2 -0
- package/dist/test/unit/openssl.d.ts.map +1 -0
- package/dist/test/unit/openssl.js +39 -0
- package/dist/test/unit/units.d.ts +2 -0
- package/dist/test/unit/units.d.ts.map +1 -0
- package/dist/test/unit/units.js +98 -0
- package/dist/tsconfig.tsbuildinfo +1 -8279
- package/package.json +14 -13
- package/dist/src/account-lib/mpc/hdTree.d.ts +0 -31
- package/dist/src/account-lib/mpc/hdTree.d.ts.map +0 -1
- package/dist/src/account-lib/mpc/hdTree.js +0 -141
- package/dist/src/account-lib/mpc/types.d.ts +0 -5
- package/dist/src/account-lib/mpc/types.d.ts.map +0 -1
- package/dist/src/account-lib/mpc/types.js +0 -3
- package/dist/src/openssl/openssl.d.ts +0 -12
- package/dist/src/openssl/openssl.d.ts.map +0 -1
- package/dist/src/openssl/openssl.js +0 -48
- package/dist/src/openssl/opensslbytes.d.ts +0 -4
- package/dist/src/openssl/opensslbytes.d.ts.map +0 -1
- package/dist/src/openssl/opensslbytes.js +0 -20
|
@@ -1,63 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Ed25519Curve = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
await sodium.ready;
|
|
11
|
-
Ed25519Curve.initialized = true;
|
|
12
|
-
}
|
|
13
|
-
return new Ed25519Curve();
|
|
14
|
-
}
|
|
15
|
-
scalarRandom() {
|
|
16
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_core_ed25519_scalar_reduce(util_1.bigIntFromBufferLE(crypto_1.randomBytes(64)))));
|
|
17
|
-
}
|
|
18
|
-
scalarReduce(s) {
|
|
19
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_core_ed25519_scalar_reduce(util_1.bigIntToBufferLE(s, 64))));
|
|
20
|
-
}
|
|
21
|
-
scalarNegate(s) {
|
|
22
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_core_ed25519_scalar_negate(util_1.bigIntToBufferLE(s, 32))));
|
|
23
|
-
}
|
|
24
|
-
scalarInvert(s) {
|
|
25
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_core_ed25519_scalar_invert(util_1.bigIntToBufferLE(s, 32))));
|
|
26
|
-
}
|
|
27
|
-
scalarAdd(x, y) {
|
|
28
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_core_ed25519_scalar_add(util_1.bigIntToBufferLE(x, 32), util_1.bigIntToBufferLE(y, 32))));
|
|
29
|
-
}
|
|
30
|
-
scalarSub(x, y) {
|
|
31
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_core_ed25519_scalar_sub(util_1.bigIntToBufferLE(x, 32), util_1.bigIntToBufferLE(y, 32))));
|
|
32
|
-
}
|
|
33
|
-
scalarMult(x, y) {
|
|
34
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_core_ed25519_scalar_mul(util_1.bigIntToBufferLE(x, 32), util_1.bigIntToBufferLE(y, 32))));
|
|
35
|
-
}
|
|
36
|
-
basePointMult(n) {
|
|
37
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_scalarmult_ed25519_base_noclamp(util_1.bigIntToBufferLE(n, 32))));
|
|
38
|
-
}
|
|
39
|
-
pointAdd(p, q) {
|
|
40
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_core_ed25519_add(util_1.bigIntToBufferLE(p, 32), util_1.bigIntToBufferLE(q, 32))));
|
|
41
|
-
}
|
|
42
|
-
pointMultiply(p, s) {
|
|
43
|
-
return util_1.bigIntFromBufferLE(Buffer.from(sodium.crypto_scalarmult_ed25519_noclamp(util_1.bigIntToBufferLE(s, 32), util_1.bigIntToBufferLE(p, 32))));
|
|
44
|
-
}
|
|
45
|
-
verify(message, signature, publicKey) {
|
|
46
|
-
const signedMessage = Buffer.concat([signature, message]);
|
|
47
|
-
try {
|
|
48
|
-
// Returns the message which was signed if the signature is valid
|
|
49
|
-
const result = Buffer.from(sodium.crypto_sign_open(signedMessage, util_1.bigIntToBufferLE(publicKey, 32)));
|
|
50
|
-
return Buffer.compare(message, result) === 0;
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
// Invalid signature causes an exception
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
order() {
|
|
58
|
-
return BigInt('0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed') * BigInt('0x08');
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.Ed25519Curve = Ed25519Curve;
|
|
62
|
-
Ed25519Curve.initialized = false;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWQyNTUxOS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9tcGMvY3VydmVzL2VkMjU1MTkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDbEQsbUNBQXFDO0FBQ3JDLGtDQUErRDtBQUcvRCxNQUFhLFlBQVk7SUFHdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFO1lBQzdCLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNuQixZQUFZLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUNqQztRQUVELE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8seUJBQWtCLENBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLHlCQUFrQixDQUFDLG9CQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLENBQVM7UUFDcEIsT0FBTyx5QkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyx1QkFBZ0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFTO1FBQ3BCLE9BQU8seUJBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUNBQWlDLENBQUMsdUJBQWdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUztRQUNwQixPQUFPLHlCQUFrQixDQUFDLE1BQU0s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c29kaXVtLXdyYXBwZXJzLXN1bW8nKTtcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGJpZ0ludEZyb21CdWZmZXJMRSwgYmlnSW50VG9CdWZmZXJMRSB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IEJhc2VDdXJ2ZSBmcm9tICcuL2Jhc2VDdXJ2ZSc7XG5cbmV4cG9ydCBjbGFzcyBFZDI1NTE5Q3VydmUgaW1wbGVtZW50cyBCYXNlQ3VydmUge1xuICBzdGF0aWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBzdGF0aWMgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPEVkMjU1MTlDdXJ2ZT4ge1xuICAgIGlmICghRWQyNTUxOUN1cnZlLmluaXRpYWxpemVkKSB7XG4gICAgICBhd2FpdCBzb2RpdW0ucmVhZHk7XG4gICAgICBFZDI1NTE5Q3VydmUuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRWQyNTUxOUN1cnZlKCk7XG4gIH1cblxuICBzY2FsYXJSYW5kb20oKTogYmlnaW50IHtcbiAgICByZXR1cm4gYmlnSW50RnJvbUJ1ZmZlckxFKFxuICAgICAgQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX3JlZHVjZShiaWdJbnRGcm9tQnVmZmVyTEUocmFuZG9tQnl0ZXMoNjQpKSkpXG4gICAgKTtcbiAgfVxuXG4gIHNjYWxhclJlZHVjZShzOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX3JlZHVjZShiaWdJbnRUb0J1ZmZlckxFKHMsIDY0KSkpKTtcbiAgfVxuXG4gIHNjYWxhck5lZ2F0ZShzOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX25lZ2F0ZShiaWdJbnRUb0J1ZmZlckxFKHMsIDMyKSkpKTtcbiAgfVxuXG4gIHNjYWxhckludmVydChzOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX2ludmVydChiaWdJbnRUb0J1ZmZlckxFKHMsIDMyKSkpKTtcbiAgfVxuXG4gIHNjYWxhckFkZCh4OiBiaWdpbnQsIHk6IGJpZ2ludCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIGJpZ0ludEZyb21CdWZmZXJMRShcbiAgICAgIEJ1ZmZlci5mcm9tKHNvZGl1bS5jcnlwdG9fY29yZV9lZDI1NTE5X3NjYWxhcl9hZGQoYmlnSW50VG9CdWZmZXJMRSh4LCAzMiksIGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpKSlcbiAgICApO1xuICB9XG5cbiAgc2NhbGFyU3ViKHg6IGJpZ2ludCwgeTogYmlnaW50KTogYmlnaW50IHtcbiAgICByZXR1cm4gYmlnSW50RnJvbUJ1ZmZlckxFKFxuICAgICAgQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX3N1YihiaWdJbnRUb0J1ZmZlckxFKHgsIDMyKSwgYmlnSW50VG9CdWZmZXJMRSh5LCAzMikpKVxuICAgICk7XG4gIH1cblxuICBzY2FsYXJNdWx0KHg6IGJpZ2ludCwgeTogYmlnaW50KTogYmlnaW50IHtcbiAgICByZXR1cm4gYmlnSW50RnJvbUJ1ZmZlckxFKFxuICAgICAgQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX211bChiaWdJbnRUb0J1ZmZlckxFKHgsIDMyKSwgYmlnSW50VG9CdWZmZXJMRSh5LCAzMikpKVxuICAgICk7XG4gIH1cblxuICBiYXNlUG9pbnRNdWx0KG46IGJpZ2ludCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzb2RpdW0uY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlX25vY2xhbXAoYmlnSW50VG9CdWZmZXJMRShuLCAzMikpKSk7XG4gIH1cblxuICBwb2ludEFkZChwOiBiaWdpbnQsIHE6IGJpZ2ludCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIGJpZ0ludEZyb21CdWZmZXJMRShcbiAgICAgIEJ1ZmZlci5mcm9tKHNvZGl1bS5jcnlwdG9fY29yZV9lZDI1NTE5X2FkZChiaWdJbnRUb0J1ZmZlckxFKHAsIDMyKSwgYmlnSW50VG9CdWZmZXJMRShxLCAzMikpKVxuICAgICk7XG4gIH1cblxuICBwb2ludE11bHRpcGx5KHA6IGJpZ2ludCwgczogYmlnaW50KTogYmlnaW50IHtcbiAgICByZXR1cm4gYmlnSW50RnJvbUJ1ZmZlckxFKFxuICAgICAgQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfbm9jbGFtcChiaWdJbnRUb0J1ZmZlckxFKHMsIDMyKSwgYmlnSW50VG9CdWZmZXJMRShwLCAzMikpKVxuICAgICk7XG4gIH1cblxuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlciwgcHVibGljS2V5OiBiaWdpbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gQnVmZmVyLmNvbmNhdChbc2lnbmF0dXJlLCBtZXNzYWdlXSk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFJldHVybnMgdGhlIG1lc3NhZ2Ugd2hpY2ggd2FzIHNpZ25lZCBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkXG4gICAgICBjb25zdCByZXN1bHQgPSBCdWZmZXIuZnJvbShzb2RpdW0uY3J5cHRvX3NpZ25fb3BlbihzaWduZWRNZXNzYWdlLCBiaWdJbnRUb0J1ZmZlckxFKHB1YmxpY0tleSwgMzIpKSk7XG4gICAgICByZXR1cm4gQnVmZmVyLmNvbXBhcmUobWVzc2FnZSwgcmVzdWx0KSA9PT0gMDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSW52YWxpZCBzaWduYXR1cmUgY2F1c2VzIGFuIGV4Y2VwdGlvblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9yZGVyKCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIEJpZ0ludCgnMHgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE0ZGVmOWRlYTJmNzljZDY1ODEyNjMxYTVjZjVkM2VkJykgKiBCaWdJbnQoJzB4MDgnKTtcbiAgfVxufVxuIl19
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated use Ed25519Curve from sdk-lib-mpc instead
|
|
6
|
+
*/
|
|
7
|
+
var sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
|
|
8
|
+
Object.defineProperty(exports, "Ed25519Curve", { enumerable: true, get: function () { return sdk_lib_mpc_1.Ed25519Curve; } });
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWQyNTUxOS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9tcGMvY3VydmVzL2VkMjU1MTkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCx1REFBdUQ7QUFBOUMsMkdBQUEsWUFBWSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgRWQyNTUxOUN1cnZlIGZyb20gc2RrLWxpYi1tcGMgaW5zdGVhZFxuICovXG5leHBvcnQgeyBFZDI1NTE5Q3VydmUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import HDTree,
|
|
1
|
+
import { HDTree, Ed25519Bip32HdTree, Secp256k1Bip32HdTree } from '@bitgo-beta/sdk-lib-mpc';
|
|
2
2
|
import { EDDSA } from './tss';
|
|
3
3
|
import ShamirSecret from './shamir';
|
|
4
|
-
|
|
4
|
+
declare type KeyShare = EDDSA.KeyShare;
|
|
5
5
|
export * from './curves';
|
|
6
6
|
export * from './util';
|
|
7
|
-
|
|
8
|
-
export { Ed25519BIP32, HDTree, KeyShare, ShamirSecret, BIP32 };
|
|
7
|
+
export { Ecdsa, ECDSA, Eddsa, EDDSA, rangeProof } from './tss';
|
|
8
|
+
export { Ed25519Bip32HdTree as Ed25519BIP32, HDTree, KeyShare, ShamirSecret, Secp256k1Bip32HdTree as BIP32 };
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/mpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/mpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,YAAY,MAAM,UAAU,CAAC;AAEpC,aAAK,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAE/B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,IAAI,KAAK,EAAE,CAAC"}
|
|
@@ -14,17 +14,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.BIP32 = exports.ShamirSecret = exports.Ed25519BIP32 = exports.rangeProof = exports.EDDSA = exports.Eddsa = exports.ECDSA = exports.Ecdsa = void 0;
|
|
17
|
-
const
|
|
18
|
-
Object.defineProperty(exports, "Ed25519BIP32", { enumerable: true, get: function () { return
|
|
19
|
-
Object.defineProperty(exports, "BIP32", { enumerable: true, get: function () { return
|
|
17
|
+
const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
|
|
18
|
+
Object.defineProperty(exports, "Ed25519BIP32", { enumerable: true, get: function () { return sdk_lib_mpc_1.Ed25519Bip32HdTree; } });
|
|
19
|
+
Object.defineProperty(exports, "BIP32", { enumerable: true, get: function () { return sdk_lib_mpc_1.Secp256k1Bip32HdTree; } });
|
|
20
20
|
const shamir_1 = __importDefault(require("./shamir"));
|
|
21
21
|
exports.ShamirSecret = shamir_1.default;
|
|
22
|
+
__exportStar(require("./curves"), exports);
|
|
23
|
+
__exportStar(require("./util"), exports);
|
|
22
24
|
var tss_1 = require("./tss");
|
|
23
25
|
Object.defineProperty(exports, "Ecdsa", { enumerable: true, get: function () { return tss_1.Ecdsa; } });
|
|
24
26
|
Object.defineProperty(exports, "ECDSA", { enumerable: true, get: function () { return tss_1.ECDSA; } });
|
|
25
27
|
Object.defineProperty(exports, "Eddsa", { enumerable: true, get: function () { return tss_1.Eddsa; } });
|
|
26
28
|
Object.defineProperty(exports, "EDDSA", { enumerable: true, get: function () { return tss_1.EDDSA; } });
|
|
27
29
|
Object.defineProperty(exports, "rangeProof", { enumerable: true, get: function () { return tss_1.rangeProof; } });
|
|
28
|
-
|
|
29
|
-
__exportStar(require("./util"), exports);
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0FBdUQ7QUFXOUMsNkZBWFEscUJBQVksT0FXUjtBQUFrQyxzRkFYeEIsY0FBSyxPQVd3QjtBQVQ1RCxzREFBb0M7QUFTSyx1QkFUbEMsZ0JBQVksQ0FTa0M7QUFQckQsNkJBQStEO0FBQXRELDRGQUFBLEtBQUssT0FBQTtBQUFFLDRGQUFBLEtBQUssT0FBQTtBQUFFLDRGQUFBLEtBQUssT0FBQTtBQUFFLDRGQUFBLEtBQUssT0FBQTtBQUFFLGlHQUFBLFVBQVUsT0FBQTtBQUUvQywyQ0FBeUI7QUFDekIseUNBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEhEVHJlZSwgeyBFZDI1NTE5QklQMzIsIEJJUDMyIH0gZnJvbSAnLi9oZFRyZWUnO1xuaW1wb3J0IHsgRUREU0EgfSBmcm9tICcuL3Rzcyc7XG5pbXBvcnQgU2hhbWlyU2VjcmV0IGZyb20gJy4vc2hhbWlyJztcblxuZXhwb3J0IHsgRWNkc2EsIEVDRFNBLCBFZGRzYSwgRUREU0EsIHJhbmdlUHJvb2YgfSBmcm9tICcuL3Rzcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY3VydmVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbCc7XG5cbnR5cGUgS2V5U2hhcmUgPSBFRERTQS5LZXlTaGFyZTtcblxuZXhwb3J0IHsgRWQyNTUxOUJJUDMyLCBIRFRyZWUsIEtleVNoYXJlLCBTaGFtaXJTZWNyZXQsIEJJUDMyIH07XG4iXX0=
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBMkY7QUFTNUQsNkZBVGQsZ0NBQWtCLE9BU1E7QUFBMEQsc0ZBVGhFLGtDQUFvQixPQVNpRDtBQVAxRyxzREFBb0M7QUFPMkIsdUJBUHhELGdCQUFZLENBT3dEO0FBSDNFLDJDQUF5QjtBQUN6Qix5Q0FBdUI7QUFDdkIsNkJBQStEO0FBQXRELDRGQUFBLEtBQUssT0FBQTtBQUFFLDRGQUFBLEtBQUssT0FBQTtBQUFFLDRGQUFBLEtBQUssT0FBQTtBQUFFLDRGQUFBLEtBQUssT0FBQTtBQUFFLGlHQUFBLFVBQVUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhEVHJlZSwgRWQyNTUxOUJpcDMySGRUcmVlLCBTZWNwMjU2azFCaXAzMkhkVHJlZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItbXBjJztcbmltcG9ydCB7IEVERFNBIH0gZnJvbSAnLi90c3MnO1xuaW1wb3J0IFNoYW1pclNlY3JldCBmcm9tICcuL3NoYW1pcic7XG5cbnR5cGUgS2V5U2hhcmUgPSBFRERTQS5LZXlTaGFyZTtcblxuZXhwb3J0ICogZnJvbSAnLi9jdXJ2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsJztcbmV4cG9ydCB7IEVjZHNhLCBFQ0RTQSwgRWRkc2EsIEVERFNBLCByYW5nZVByb29mIH0gZnJvbSAnLi90c3MnO1xuZXhwb3J0IHsgRWQyNTUxOUJpcDMySGRUcmVlIGFzIEVkMjU1MTlCSVAzMiwgSERUcmVlLCBLZXlTaGFyZSwgU2hhbWlyU2VjcmV0LCBTZWNwMjU2azFCaXAzMkhkVHJlZSBhcyBCSVAzMiB9O1xuIl19
|
|
@@ -1,38 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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 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
|
-
}
|
|
1
|
+
import { Shamir } from '@bitgo-beta/sdk-lib-mpc';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated use Shamir from sdk-lib-mpc instead
|
|
4
|
+
*/
|
|
5
|
+
export default Shamir;
|
|
38
6
|
//# sourceMappingURL=shamir.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shamir.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/mpc/shamir.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shamir.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/mpc/shamir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD;;GAEG;AACH,eAAe,MAAM,CAAC"}
|
|
@@ -1,132 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Perform Shamir sharing on the secret `secret` to the degree `threshold - 1` split `numShares`
|
|
11
|
-
* ways. The split secret requires `threshold` shares to be reconstructed.
|
|
12
|
-
*
|
|
13
|
-
* @param secret secret to split
|
|
14
|
-
* @param threshold share threshold required to reconstruct secret
|
|
15
|
-
* @param numShares total number of shares to split to split secret into
|
|
16
|
-
* @param indices optional indices which can be used while generating the shares
|
|
17
|
-
* @param salt optional salt which could be used while generating the shares
|
|
18
|
-
* @returns Dictionary containing `shares`, a dictionary where each key is an int
|
|
19
|
-
* in the range 1<=x<=numShares representing that share's free term, and `v`, an
|
|
20
|
-
* array of proofs to be shared with all participants.
|
|
21
|
-
*/
|
|
22
|
-
split(secret, threshold, numShares, indices, salt = BigInt(0)) {
|
|
23
|
-
let bigIndices;
|
|
24
|
-
if (indices) {
|
|
25
|
-
bigIndices = indices.map((i) => {
|
|
26
|
-
if (i < 1) {
|
|
27
|
-
throw new Error('Invalid value supplied for indices');
|
|
28
|
-
}
|
|
29
|
-
return BigInt(i);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
// make range(1, n + 1)
|
|
34
|
-
bigIndices = Array(numShares)
|
|
35
|
-
.fill(null)
|
|
36
|
-
.map((_, i) => BigInt(i + 1));
|
|
37
|
-
}
|
|
38
|
-
if (threshold < 2) {
|
|
39
|
-
throw new Error('Threshold cannot be less than two');
|
|
40
|
-
}
|
|
41
|
-
if (threshold > numShares) {
|
|
42
|
-
throw new Error('Threshold cannot be greater than the total number of shares');
|
|
43
|
-
}
|
|
44
|
-
const coefs = [];
|
|
45
|
-
const v = [];
|
|
46
|
-
for (let ind = 0; ind < threshold - 1; ind++) {
|
|
47
|
-
const coeff = util_1.clamp(util_1.bigIntFromBufferLE(crypto.createHmac('sha256', ind.toString(10)).update(util_1.bigIntToBufferLE(secret, 32)).digest()));
|
|
48
|
-
coefs.push(coeff);
|
|
49
|
-
v.unshift(this.curve.basePointMult(coeff));
|
|
50
|
-
}
|
|
51
|
-
coefs.push(secret);
|
|
52
|
-
const shares = {};
|
|
53
|
-
for (let ind = 0; ind < bigIndices.length; ind++) {
|
|
54
|
-
const x = bigIndices[ind];
|
|
55
|
-
let partial = coefs[0];
|
|
56
|
-
for (let other = 1; other < coefs.length; other++) {
|
|
57
|
-
partial = this.curve.scalarAdd(coefs[other], this.curve.scalarMult(partial, x));
|
|
58
|
-
}
|
|
59
|
-
shares[parseInt(x.toString(), 10)] = partial;
|
|
60
|
-
}
|
|
61
|
-
return { shares, v };
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Verify a VSS share.
|
|
65
|
-
*
|
|
66
|
-
* @param u Secret share received from other party.
|
|
67
|
-
* @param v Verification values received from other party.
|
|
68
|
-
* @param index Verifier's index.
|
|
69
|
-
* @returns True on success; otherwise throws Error.
|
|
70
|
-
*/
|
|
71
|
-
verify(u, v, index) {
|
|
72
|
-
if (v.length < 2) {
|
|
73
|
-
throw new Error('Threshold cannot be less than two');
|
|
74
|
-
}
|
|
75
|
-
if (index < 1) {
|
|
76
|
-
throw new Error('Invalid value supplied for index');
|
|
77
|
-
}
|
|
78
|
-
const i = BigInt(index);
|
|
79
|
-
let x = v[0];
|
|
80
|
-
let t = BigInt(1);
|
|
81
|
-
for (const vsj of v.slice(1)) {
|
|
82
|
-
t = this.curve.scalarMult(t, i);
|
|
83
|
-
const vjt = this.curve.pointMultiply(vsj, t);
|
|
84
|
-
x = this.curve.pointAdd(x, vjt);
|
|
85
|
-
}
|
|
86
|
-
const sigmaG = this.curve.basePointMult(u);
|
|
87
|
-
if (x !== sigmaG) {
|
|
88
|
-
throw new Error('Could not verify share');
|
|
89
|
-
}
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Reconstitute a secret from a dictionary of shares. The number of shares must
|
|
94
|
-
* be equal to `t` to reconstitute the original secret.
|
|
95
|
-
*
|
|
96
|
-
* @param shares dictionary of shares. each key is the free term of the share
|
|
97
|
-
* @returns secret
|
|
98
|
-
*/
|
|
99
|
-
combine(shares) {
|
|
100
|
-
try {
|
|
101
|
-
let s = BigInt(0);
|
|
102
|
-
for (const i in shares) {
|
|
103
|
-
const yi = shares[i];
|
|
104
|
-
const xi = BigInt(i);
|
|
105
|
-
let num = BigInt(1);
|
|
106
|
-
let denum = BigInt(1);
|
|
107
|
-
for (const j in shares) {
|
|
108
|
-
const xj = BigInt(j);
|
|
109
|
-
if (xi !== xj) {
|
|
110
|
-
num = this.curve.scalarMult(num, xj);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
for (const j in shares) {
|
|
114
|
-
const xj = BigInt(j);
|
|
115
|
-
if (xi !== xj) {
|
|
116
|
-
denum = this.curve.scalarMult(denum, this.curve.scalarSub(xj, xi));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
const inverted = this.curve.scalarInvert(denum);
|
|
120
|
-
const innerMultiplied = this.curve.scalarMult(num, inverted);
|
|
121
|
-
const multiplied = this.curve.scalarMult(innerMultiplied, yi);
|
|
122
|
-
s = this.curve.scalarAdd(multiplied, s);
|
|
123
|
-
}
|
|
124
|
-
return s;
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
throw new Error('Failed to combine Shamir shares , ' + error);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.default = Shamir;
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhbWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL21wYy9zaGFtaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFakMsaUNBQXFFO0FBR3JFLE1BQXFCLE1BQU07SUFHekIsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxLQUFLLENBQUMsTUFBYyxFQUFFLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxPQUF1QixFQUFFLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ25HLElBQUksVUFBeUIsQ0FBQztRQUM5QixJQUFJLE9BQU8sRUFBRTtZQUNYLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDVCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7aUJBQ3ZEO2dCQUNELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLHVCQUF1QjtZQUN2QixVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztpQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQztpQkFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQ3REO1FBRUQsSUFBSSxTQUFTLEdBQUcsU0FBUyxF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QU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUQsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN6QztZQUNELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0NBQ0Y7QUF0SUQseUJBc0lDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG5pbXBvcnQgQ3VydmUgZnJvbSAnLi9jdXJ2ZXMnO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckxFLCBiaWdJbnRUb0J1ZmZlckxFLCBjbGFtcCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBTcGxpdFNlY3JldCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGFtaXIge1xuICBjdXJ2ZTogQ3VydmU7XG5cbiAgY29uc3RydWN0b3IoY3VydmU6IEN1cnZlKSB7XG4gICAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gU2hhbWlyIHNoYXJpbmcgb24gdGhlIHNlY3JldCBgc2VjcmV0YCB0byB0aGUgZGVncmVlIGB0aHJlc2hvbGQgLSAxYCBzcGxpdCBgbnVtU2hhcmVzYFxuICAgKiB3YXlzLiBUaGUgc3BsaXQgc2VjcmV0IHJlcXVpcmVzIGB0aHJlc2hvbGRgIHNoYXJlcyB0byBiZSByZWNvbnN0cnVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gc2VjcmV0IHNlY3JldCB0byBzcGxpdFxuICAgKiBAcGFyYW0gdGhyZXNob2xkIHNoYXJlIHRocmVzaG9sZCByZXF1aXJlZCB0byByZWNvbnN0cnVjdCBzZWNyZXRcbiAgICogQHBhcmFtIG51bVNoYXJlcyB0b3RhbCBudW1iZXIgb2Ygc2hhcmVzIHRvIHNwbGl0IHRvIHNwbGl0IHNlY3JldCBpbnRvXG4gICAqIEBwYXJhbSBpbmRpY2VzIG9wdGlvbmFsIGluZGljZXMgd2hpY2ggY2FuIGJlIHVzZWQgd2hpbGUgZ2VuZXJhdGluZyB0aGUgc2hhcmVzXG4gICAqIEBwYXJhbSBzYWx0IG9wdGlvbmFsIHNhbHQgd2hpY2ggY291bGQgYmUgdXNlZCB3aGlsZSBnZW5lcmF0aW5nIHRoZSBzaGFyZXNcbiAgICogQHJldHVybnMgRGljdGlvbmFyeSBjb250YWluaW5nIGBzaGFyZXNgLCBhIGRpY3Rpb25hcnkgd2hlcmUgZWFjaCBrZXkgaXMgYW4gaW50XG4gICAqIGluIHRoZSByYW5nZSAxPD14PD1udW1TaGFyZXMgcmVwcmVzZW50aW5nIHRoYXQgc2hhcmUncyBmcmVlIHRlcm0sIGFuZCBgdmAsIGFuXG4gICAqIGFycmF5IG9mIHByb29mcyB0byBiZSBzaGFyZWQgd2l0aCBhbGwgcGFydGljaXBhbnRzLlxuICAgKi9cbiAgc3BsaXQoc2VjcmV0OiBiaWdpbnQsIHRocmVzaG9sZDogbnVtYmVyLCBudW1TaGFyZXM6IG51bWJlciwgaW5kaWNlcz86IEFycmF5PG51bWJlcj4sIHNhbHQgPSBCaWdJbnQoMCkpOiBTcGxpdFNlY3JldCB7XG4gICAgbGV0IGJpZ0luZGljZXM6IEFycmF5PGJpZ2ludD47XG4gICAgaWYgKGluZGljZXMpIHtcbiAgICAgIGJpZ0luZGljZXMgPSBpbmRpY2VzLm1hcCgoaSkgPT4ge1xuICAgICAgICBpZiAoaSA8IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgc3VwcGxpZWQgZm9yIGluZGljZXMnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQmlnSW50KGkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG1ha2UgcmFuZ2UoMSwgbiArIDEpXG4gICAgICBiaWdJbmRpY2VzID0gQXJyYXkobnVtU2hhcmVzKVxuICAgICAgICAuZmlsbChudWxsKVxuICAgICAgICAubWFwKChfLCBpKSA9PiBCaWdJbnQoaSArIDEpKTtcbiAgICB9XG4gICAgaWYgKHRocmVzaG9sZCA8IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhyZXNob2xkIGNhbm5vdCBiZSBsZXNzIHRoYW4gdHdvJyk7XG4gICAgfVxuXG4gICAgaWYgKHRocmVzaG9sZCA+IG51bVNoYXJlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaHJlc2hvbGQgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJlcycpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZWZzOiBiaWdpbnRbXSA9IFtdO1xuICAgIGNvbnN0IHY6IEFycmF5PGJpZ2ludD4gPSBbXTtcbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCB0aHJlc2hvbGQgLSAxOyBpbmQrKykge1xuICAgICAgY29uc3QgY29lZmYgPSBjbGFtcChcbiAgICAgICAgYmlnSW50RnJvbUJ1ZmZlckxFKGNyeXB0by5jcmVhdGVIbWFjKCdzaGEyNTYnLCBpbmQudG9TdHJpbmcoMTApKS51cGRhdGUoYmlnSW50VG9CdWZmZXJMRShzZWNyZXQsIDMyKSkuZGlnZXN0KCkpXG4gICAgICApO1xuICAgICAgY29lZnMucHVzaChjb2VmZik7XG4gICAgICB2LnVuc2hpZnQodGhpcy5jdXJ2ZS5iYXNlUG9pbnRNdWx0KGNvZWZmKSk7XG4gICAgfVxuICAgIGNvZWZzLnB1c2goc2VjcmV0KTtcblxuICAgIGNvbnN0IHNoYXJlczogUmVjb3JkPG51bWJlciwgYmlnaW50PiA9IHt9O1xuICAgIGZvciAobGV0IGluZCA9IDA7IGluZCA8IGJpZ0luZGljZXMubGVuZ3RoOyBpbmQrKykge1xuICAgICAgY29uc3QgeCA9IGJpZ0luZGljZXNbaW5kXTtcbiAgICAgIGxldCBwYXJ0aWFsID0gY29lZnNbMF07XG4gICAgICBmb3IgKGxldCBvdGhlciA9IDE7IG90aGVyIDwgY29lZnMubGVuZ3RoOyBvdGhlcisrKSB7XG4gICAgICAgIHBhcnRpYWwgPSB0aGlzLmN1cnZlLnNjYWxhckFkZChjb2Vmc1tvdGhlcl0sIHRoaXMuY3VydmUuc2NhbGFyTXVsdChwYXJ0aWFsLCB4KSk7XG4gICAgICB9XG4gICAgICBzaGFyZXNbcGFyc2VJbnQoeC50b1N0cmluZygpLCAxMCldID0gcGFydGlhbDtcbiAgICB9XG4gICAgcmV0dXJuIHsgc2hhcmVzLCB2IH07XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IGEgVlNTIHNoYXJlLlxuICAgKlxuICAgKiBAcGFyYW0gdSBTZWNyZXQgc2hhcmUgcmVjZWl2ZWQgZnJvbSBvdGhlciBwYXJ0eS5cbiAgICogQHBhcmFtIHYgVmVyaWZpY2F0aW9uIHZhbHVlcyByZWNlaXZlZCBmcm9tIG90aGVyIHBhcnR5LlxuICAgKiBAcGFyYW0gaW5kZXggVmVyaWZpZXIncyBpbmRleC5cbiAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzOyBvdGhlcndpc2UgdGhyb3dzIEVycm9yLlxuICAgKi9cbiAgdmVyaWZ5KHU6IGJpZ2ludCwgdjogQXJyYXk8YmlnaW50PiwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh2Lmxlbmd0aCA8IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhyZXNob2xkIGNhbm5vdCBiZSBsZXNzIHRoYW4gdHdvJyk7XG4gICAgfVxuICAgIGlmIChpbmRleCA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBzdXBwbGllZCBmb3IgaW5kZXgnKTtcbiAgICB9XG4gICAgY29uc3QgaSA9IEJpZ0ludChpbmRleCk7XG4gICAgbGV0IHggPSB2WzBdO1xuICAgIGxldCB0ID0gQmlnSW50KDEpO1xuICAgIGZvciAoY29uc3QgdnNqIG9mIHYuc2xpY2UoMSkpIHtcbiAgICAgIHQgPSB0aGlzLmN1cnZlLnNjYWxhck11bHQodCwgaSk7XG4gICAgICBjb25zdCB2anQgPSB0aGlzLmN1cnZlLnBvaW50TXVsdGlwbHkodnNqLCB0KTtcbiAgICAgIHggPSB0aGlzLmN1cnZlLnBvaW50QWRkKHgsIHZqdCk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ21hRyA9IHRoaXMuY3VydmUuYmFzZVBvaW50TXVsdCh1KTtcbiAgICBpZiAoeCAhPT0gc2lnbWFHKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB2ZXJpZnkgc2hhcmUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmVjb25zdGl0dXRlIGEgc2VjcmV0IGZyb20gYSBkaWN0aW9uYXJ5IG9mIHNoYXJlcy4gVGhlIG51bWJlciBvZiBzaGFyZXMgbXVzdFxuICAgKiBiZSBlcXVhbCB0byBgdGAgdG8gcmVjb25zdGl0dXRlIHRoZSBvcmlnaW5hbCBzZWNyZXQuXG4gICAqXG4gICAqIEBwYXJhbSBzaGFyZXMgZGljdGlvbmFyeSBvZiBzaGFyZXMuIGVhY2gga2V5IGlzIHRoZSBmcmVlIHRlcm0gb2YgdGhlIHNoYXJlXG4gICAqIEByZXR1cm5zIHNlY3JldFxuICAgKi9cbiAgY29tYmluZShzaGFyZXM6IFJlY29yZDxudW1iZXIsIGJpZ2ludD4pOiBiaWdpbnQge1xuICAgIHRyeSB7XG4gICAgICBsZXQgcyA9IEJpZ0ludCgwKTtcbiAgICAgIGZvciAoY29uc3QgaSBpbiBzaGFyZXMpIHtcbiAgICAgICAgY29uc3QgeWkgPSBzaGFyZXNbaV07XG4gICAgICAgIGNvbnN0IHhpID0gQmlnSW50KGkpO1xuICAgICAgICBsZXQgbnVtID0gQmlnSW50KDEpO1xuICAgICAgICBsZXQgZGVudW0gPSBCaWdJbnQoMSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBqIGluIHNoYXJlcykge1xuICAgICAgICAgIGNvbnN0IHhqID0gQmlnSW50KGopO1xuICAgICAgICAgIGlmICh4aSAhPT0geGopIHtcbiAgICAgICAgICAgIG51bSA9IHRoaXMuY3VydmUuc2NhbGFyTXVsdChudW0sIHhqKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBqIGluIHNoYXJlcykge1xuICAgICAgICAgIGNvbnN0IHhqID0gQmlnSW50KGopO1xuICAgICAgICAgIGlmICh4aSAhPT0geGopIHtcbiAgICAgICAgICAgIGRlbnVtID0gdGhpcy5jdXJ2ZS5zY2FsYXJNdWx0KGRlbnVtLCB0aGlzLmN1cnZlLnNjYWxhclN1Yih4aiwgeGkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW52ZXJ0ZWQgPSB0aGlzLmN1cnZlLnNjYWxhckludmVydChkZW51bSk7XG4gICAgICAgIGNvbnN0IGlubmVyTXVsdGlwbGllZCA9IHRoaXMuY3VydmUuc2NhbGFyTXVsdChudW0sIGludmVydGVkKTtcbiAgICAgICAgY29uc3QgbXVsdGlwbGllZCA9IHRoaXMuY3VydmUuc2NhbGFyTXVsdChpbm5lck11bHRpcGxpZWQsIHlpKTtcbiAgICAgICAgcyA9IHRoaXMuY3VydmUuc2NhbGFyQWRkKG11bHRpcGxpZWQsIHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHM7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNvbWJpbmUgU2hhbWlyIHNoYXJlcyAsICcgKyBlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
3
|
+
const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated use Shamir from sdk-lib-mpc instead
|
|
6
|
+
*/
|
|
7
|
+
exports.default = sdk_lib_mpc_1.Shamir;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhbWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL21wYy9zaGFtaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5REFBaUQ7QUFDakQ7O0dBRUc7QUFDSCxrQkFBZSxvQkFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhbWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgU2hhbWlyIGZyb20gc2RrLWxpYi1tcGMgaW5zdGVhZFxuICovXG5leHBvcnQgZGVmYXVsdCBTaGFtaXI7XG4iXX0=
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import HDTree from '../../hdTree';
|
|
3
2
|
import { Hash } from 'crypto';
|
|
4
3
|
import { Secp256k1Curve } from '../../curves';
|
|
5
4
|
import Shamir from '../../shamir';
|
|
6
|
-
import { EcdsaTypes } from '@bitgo-beta/sdk-lib-mpc';
|
|
7
|
-
import { DShare, KeyCombined, KeyShare, NShare, OShare, PShare, Signature, SignCombine, SignCombineRT, SignConvert, SignConvertRT, SignShareRT, SShare, SubkeyShare,
|
|
5
|
+
import { EcdsaTypes, HDTree } from '@bitgo-beta/sdk-lib-mpc';
|
|
6
|
+
import { DShare, KeyCombined, KeyShare, NShare, OShare, PShare, PublicUTShare, Signature, SignCombine, SignCombineRT, SignConvert, SignConvertRT, SignConvertStep1, SignConvertStep1Response, SignConvertStep2, SignConvertStep2Response, SignConvertStep3, SignConvertStep3Response, SignShareRT, SShare, SubkeyShare, UTShare, VAShareWithProofs, VAShare, XShareWithChallenges, YShareWithChallenges, PublicVAShareWithProofs } from './types';
|
|
8
7
|
/**
|
|
9
8
|
* ECDSA TSS implementation supporting 2:n Threshold
|
|
10
9
|
*/
|
|
@@ -52,10 +51,11 @@ export default class Ecdsa {
|
|
|
52
51
|
* Appends a given range proof challenge to the shares previously created
|
|
53
52
|
* by #keyCombine. Generates a new challenge if not provided.
|
|
54
53
|
* @param {XShare | YShare} share Private xShare or yShare of the signing operation
|
|
55
|
-
* @param
|
|
54
|
+
* @param rangeProofChallenge - challenge generated via generateNtilde
|
|
55
|
+
* @param paillierProofChallenge
|
|
56
56
|
* @returns {KeyCombined} The share with amended challenge values
|
|
57
57
|
*/
|
|
58
|
-
appendChallenge<T
|
|
58
|
+
appendChallenge<T>(share: T, rangeProofChallenge: EcdsaTypes.SerializedNtilde, paillierProofChallenge: EcdsaTypes.SerializedPaillierChallenge): T & EcdsaTypes.SerializedEcdsaChallenges;
|
|
59
59
|
/**
|
|
60
60
|
* Create signing shares.
|
|
61
61
|
* @param {xShare} xShare Private xShare of current participant signer
|
|
@@ -63,11 +63,36 @@ export default class Ecdsa {
|
|
|
63
63
|
* @returns {SignShareRT} Returns the participant private w-share
|
|
64
64
|
* and k-share to be distributed to other participant signer
|
|
65
65
|
*/
|
|
66
|
-
signShare(xShare:
|
|
66
|
+
signShare(xShare: XShareWithChallenges, yShare: YShareWithChallenges): Promise<SignShareRT>;
|
|
67
|
+
/**
|
|
68
|
+
* Perform multiplicitive-to-additive (MtA) share conversion with another signer.
|
|
69
|
+
* Connection 1.2 in https://lucid.app/lucidchart/7061785b-bc5c-4002-b546-3f4a3612fc62/edit?page=IAVmvYO4FvKc#
|
|
70
|
+
* If signer A completed signShare initially (input to this fn), then this step is completed by signer B.
|
|
71
|
+
* @param {SignConvert} shares
|
|
72
|
+
* @returns {SignConvertRT}
|
|
73
|
+
*/
|
|
74
|
+
signConvertStep1(shares: SignConvertStep1): Promise<SignConvertStep1Response>;
|
|
67
75
|
/**
|
|
68
76
|
* Perform multiplicitive-to-additive (MtA) share conversion with another
|
|
69
77
|
* signer.
|
|
70
|
-
*
|
|
78
|
+
* Connection 2.1 in https://lucid.app/lucidchart/7061785b-bc5c-4002-b546-3f4a3612fc62/edit?page=IAVmvYO4FvKc#
|
|
79
|
+
* If signer B completed signConvertStep1, then this step is completed by signer A.
|
|
80
|
+
* @param {SignConvert} shares
|
|
81
|
+
* @returns {SignConvertRT}
|
|
82
|
+
*/
|
|
83
|
+
signConvertStep2(shares: SignConvertStep2): Promise<SignConvertStep2Response>;
|
|
84
|
+
/**
|
|
85
|
+
* Perform multiplicitive-to-additive (MtA) share conversion with another signer.
|
|
86
|
+
* Connection 2.2 in https://lucid.app/lucidchart/7061785b-bc5c-4002-b546-3f4a3612fc62/edit?page=IAVmvYO4FvKc#
|
|
87
|
+
* If signer A completed signConvertStep2, then this step is completed by signer B.
|
|
88
|
+
* @param {SignConvert} shares
|
|
89
|
+
* @returns {SignConvertRT}
|
|
90
|
+
*/
|
|
91
|
+
signConvertStep3(shares: SignConvertStep3): Promise<SignConvertStep3Response>;
|
|
92
|
+
/**
|
|
93
|
+
* Perform multiplicitive-to-additive (MtA) share conversion with another signer.
|
|
94
|
+
* @deprecated - use one of [signConvertStep1, signConvertStep2, signConvertStep3] instead
|
|
95
|
+
* @param {SignConvert} shares
|
|
71
96
|
* @returns {SignConvertRT}
|
|
72
97
|
*/
|
|
73
98
|
signConvert(shares: SignConvert): Promise<SignConvertRT>;
|
|
@@ -84,9 +109,32 @@ export default class Ecdsa {
|
|
|
84
109
|
* @param {DShare} dShare delta share received from the other participant
|
|
85
110
|
* @param {Hash} hash hashing algorithm implementing Node`s standard crypto hash interface
|
|
86
111
|
* @param {boolean} shouldHash if true, we hash the provided buffer before signing
|
|
87
|
-
* @returns {
|
|
112
|
+
* @returns {VAShare}
|
|
113
|
+
*/
|
|
114
|
+
sign(M: Buffer, oShare: OShare, dShare: DShare, hash?: Hash, shouldHash?: boolean): VAShare;
|
|
115
|
+
/**
|
|
116
|
+
* Generate proofs of V_i and A_i values.
|
|
117
|
+
* @param {Buffer} M Message to commit to as part of the context of the proof.
|
|
118
|
+
* This doesn't need to be the same message that was signed in the sign function above.
|
|
119
|
+
* But it should be the same for all participants for the purpose of providing proof context.
|
|
120
|
+
* @param {VAShare} vaShare The VAShare to prove.
|
|
121
|
+
* @returns {VAShareWithProofs}
|
|
122
|
+
*/
|
|
123
|
+
generateVAProofs(M: Buffer, vaShare: VAShare): VAShareWithProofs;
|
|
124
|
+
/**
|
|
125
|
+
* Verify V_i and A_i values of all other participants during signing phase 5 steps 5A and 5B.
|
|
126
|
+
* @param {VAShareWithProofs} vaShare V_i, A_i info including SShare values of the currenct participant
|
|
127
|
+
* @param {PublicVAShareWithProofs[]} publicVAShares public V_i, A_i info of all other participants
|
|
128
|
+
* @returns {UTShare} U_i, T_i info of the current participant if all verifications pass
|
|
129
|
+
*/
|
|
130
|
+
verifyVAShares(vaShare: VAShareWithProofs, publicVAShares: PublicVAShareWithProofs[]): UTShare;
|
|
131
|
+
/**
|
|
132
|
+
* Verify U_i and V_i values of all other participants during signing phase 5 steps 5C and 5D.
|
|
133
|
+
* @param {UTShare} utShare U_i, T_i info including SShare values of the currenct participant
|
|
134
|
+
* @param {PublicUTShare[]} publicUTShares public U_i, T_i info of all other participants
|
|
135
|
+
* @returns {SShare} SShare of the current participant if all verifications pass
|
|
88
136
|
*/
|
|
89
|
-
|
|
137
|
+
verifyUTShares(utShare: UTShare, publicUTShares: PublicUTShare[]): SShare;
|
|
90
138
|
/**
|
|
91
139
|
* Construct full signature by combining Sign Shares
|
|
92
140
|
* @param {SShare[]} shares
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":";AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"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"}
|