@bitgo-beta/sdk-core 8.2.1-beta.833 → 8.2.1-beta.835
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/dist/src/account-lib/baseCoin/iface.d.ts +1 -28
- package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/iface.js +1 -18
- package/dist/src/account-lib/baseCoin/index.d.ts +0 -1
- package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/index.js +2 -4
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +2 -2
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/keychain/iKeychains.d.ts +1 -1
- 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 +1 -7
- package/dist/src/bitgo/utils/index.d.ts +0 -2
- package/dist/src/bitgo/utils/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/index.js +1 -3
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +2 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +2 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts +1 -0
- 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/iWallets.d.ts +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +26 -5
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +1 -16
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -9
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -76
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
- package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -223
- package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
- package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
- package/dist/src/bitgo/utils/blsUtils.js +0 -237
- package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
- package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
- package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/sdk-core",
|
|
3
|
-
"version": "8.2.1-beta.
|
|
3
|
+
"version": "8.2.1-beta.835",
|
|
4
4
|
"description": "core library functions for BitGoJS",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -37,12 +37,11 @@
|
|
|
37
37
|
]
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@bitgo-beta/
|
|
41
|
-
"@bitgo-beta/
|
|
42
|
-
"@bitgo-beta/
|
|
43
|
-
"@bitgo-beta/
|
|
44
|
-
"@bitgo-beta/
|
|
45
|
-
"@bitgo-beta/utxo-lib": "8.0.3-beta.834",
|
|
40
|
+
"@bitgo-beta/sdk-lib-mpc": "8.2.0-beta.827",
|
|
41
|
+
"@bitgo-beta/secp256k1": "1.0.2-beta.861",
|
|
42
|
+
"@bitgo-beta/sjcl": "1.0.2-beta.1073",
|
|
43
|
+
"@bitgo-beta/statics": "15.1.1-beta.838",
|
|
44
|
+
"@bitgo-beta/utxo-lib": "8.0.3-beta.836",
|
|
46
45
|
"@bitgo/public-types": "4.17.0",
|
|
47
46
|
"@noble/curves": "1.8.1",
|
|
48
47
|
"@stablelib/hex": "^1.0.0",
|
|
@@ -71,11 +70,11 @@
|
|
|
71
70
|
"uuid": "^8.3.2"
|
|
72
71
|
},
|
|
73
72
|
"devDependencies": {
|
|
74
|
-
"@bitgo-beta/sdk-opensslbytes": "1.0.0-beta.
|
|
73
|
+
"@bitgo-beta/sdk-opensslbytes": "1.0.0-beta.388",
|
|
75
74
|
"@openpgp/web-stream-tools": "0.0.14",
|
|
76
75
|
"@types/keccak": "^3.0.5",
|
|
77
76
|
"@types/lodash": "^4.14.151",
|
|
78
77
|
"nyc": "^15.0.0"
|
|
79
78
|
},
|
|
80
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "da05b57c9c953bc8f2830945c0f59763e9819a43"
|
|
81
80
|
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { BaseKeyPair } from './baseKeyPair';
|
|
2
|
-
import { AddressFormat } from './enum';
|
|
3
|
-
import { BlsKeys, KeyPairOptions } from './iface';
|
|
4
|
-
/**
|
|
5
|
-
* Base class for BLS keypairs.
|
|
6
|
-
*/
|
|
7
|
-
export declare abstract class BlsKeyPair implements BaseKeyPair {
|
|
8
|
-
protected keyPair: BlsKeys;
|
|
9
|
-
/**
|
|
10
|
-
* Public constructor. By default, creates a key pair with a random polynomial.
|
|
11
|
-
*
|
|
12
|
-
* @param {KeyPairOptions} source Either a dkg options, a public and secret shares, or a private key
|
|
13
|
-
*/
|
|
14
|
-
protected constructor(source?: KeyPairOptions);
|
|
15
|
-
createShares(threshold: number, participants: number): void;
|
|
16
|
-
/**
|
|
17
|
-
* Note - this is not possible using BLS. BLS does not support prvkey derived key gen
|
|
18
|
-
*
|
|
19
|
-
* @param {string[]} prv a hexadecimal private key
|
|
20
|
-
*/
|
|
21
|
-
recordKeysFromPrivateKey(prv: string): void;
|
|
22
|
-
/**
|
|
23
|
-
* Note - this is not possible using BLS. BLS does not support pubkey derived key gen
|
|
24
|
-
*
|
|
25
|
-
* @param {string} pub - An extended, compressed, or uncompressed public key
|
|
26
|
-
*/
|
|
27
|
-
recordKeysFromPublicKey(pub: string): void;
|
|
28
|
-
getAddress(format?: AddressFormat): string;
|
|
29
|
-
getKeys(): any;
|
|
30
|
-
/**
|
|
31
|
-
* Signs bytes using the key pair
|
|
32
|
-
*
|
|
33
|
-
* @param msg The message bytes to sign
|
|
34
|
-
* @return signature of the bytes using this keypair
|
|
35
|
-
*/
|
|
36
|
-
sign(msg: Buffer): Promise<string>;
|
|
37
|
-
static keyDerive(seed: string, pk: string, chaincode: string, path: string): BlsKeys;
|
|
38
|
-
/**
|
|
39
|
-
* Aggregates the secret shares of different key pairs into one private key
|
|
40
|
-
*
|
|
41
|
-
* @param prvKeys an array of secret shares
|
|
42
|
-
* @returns a private key
|
|
43
|
-
*/
|
|
44
|
-
static aggregatePrvkeys(prvKeys: string[]): string;
|
|
45
|
-
/**
|
|
46
|
-
* Aggregates the public shares of different key pairs into a common public key
|
|
47
|
-
*
|
|
48
|
-
* @param pubKeys an array of public shares
|
|
49
|
-
* @returns a common public key
|
|
50
|
-
*/
|
|
51
|
-
static aggregatePubkeys(pubKeys: string[]): string;
|
|
52
|
-
static aggregateChaincodes(chaincodeContributions: string[]): string;
|
|
53
|
-
/**
|
|
54
|
-
* Aggregates the message signed by different key pairs into one sign
|
|
55
|
-
*
|
|
56
|
-
* @param signatures the message signed by different key pairs. The signer id is relevant to ensure a valid signature.
|
|
57
|
-
* @example <caption> E.g., the message is signed by user and wallet, then signatures would be:</caption>
|
|
58
|
-
* {
|
|
59
|
-
* 1: BigInt(messageSignedWithUserPrv),
|
|
60
|
-
* 3: BigInt(messageSignedWithWalletPrv),
|
|
61
|
-
* }
|
|
62
|
-
* @returns a signature combining all the provided signed messages
|
|
63
|
-
*/
|
|
64
|
-
static aggregateSignatures(signatures: {
|
|
65
|
-
[n: number]: bigint;
|
|
66
|
-
}): string;
|
|
67
|
-
/**
|
|
68
|
-
* Verifies the signature for this key pair
|
|
69
|
-
* @param pub The public key with which to verify the signature
|
|
70
|
-
* @param msg The message to verify the signature with
|
|
71
|
-
* @param signature the signature to verify
|
|
72
|
-
* @return true if the signature is valid, else false
|
|
73
|
-
*/
|
|
74
|
-
static verifySignature(pub: string, msg: Buffer, signature: string): Promise<boolean>;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=blsKeyPair.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blsKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/blsKeyPair.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAiC,MAAM,SAAS,CAAC;AAMjF;;GAEG;AACH,8BAAsB,UAAW,YAAW,WAAW;IACrD,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,SAAS,aAAa,MAAM,CAAC,EAAE,cAAc;IAsB7C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAe3D;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1C,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,GAAG;IAId;;;;;OAKG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAQ1B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAiB3F;;;;;OAKG;WACW,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAWzD;;;;;OAKG;WACW,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;WAU3C,mBAAmB,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,MAAM;IAU3E;;;;;;;;;;OAUG;WACW,mBAAmB,CAAC,UAAU,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM;IAS9E;;;;;;OAMG;WACiB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAInG"}
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.BlsKeyPair = void 0;
|
|
40
|
-
const assert_1 = __importDefault(require("assert"));
|
|
41
|
-
const crypto_1 = require("crypto");
|
|
42
|
-
const BLS = __importStar(require("@bitgo-beta/bls-dkg"));
|
|
43
|
-
const errors_1 = require("./errors");
|
|
44
|
-
const iface_1 = require("./iface");
|
|
45
|
-
const crypto_2 = require("../util/crypto");
|
|
46
|
-
const DEFAULT_SIGNATURE_THRESHOLD = 2;
|
|
47
|
-
const DEFAULT_SIGNATURE_PARTICIPANTS = 3;
|
|
48
|
-
/**
|
|
49
|
-
* Base class for BLS keypairs.
|
|
50
|
-
*/
|
|
51
|
-
class BlsKeyPair {
|
|
52
|
-
/**
|
|
53
|
-
* Public constructor. By default, creates a key pair with a random polynomial.
|
|
54
|
-
*
|
|
55
|
-
* @param {KeyPairOptions} source Either a dkg options, a public and secret shares, or a private key
|
|
56
|
-
*/
|
|
57
|
-
constructor(source) {
|
|
58
|
-
if (!source) {
|
|
59
|
-
this.createShares(DEFAULT_SIGNATURE_THRESHOLD, DEFAULT_SIGNATURE_PARTICIPANTS);
|
|
60
|
-
}
|
|
61
|
-
else if ((0, iface_1.isDkg)(source)) {
|
|
62
|
-
this.createShares(source.threshold, source.participants);
|
|
63
|
-
}
|
|
64
|
-
else if ((0, iface_1.isBlsKey)(source)) {
|
|
65
|
-
(0, assert_1.default)(source.secretShares.every(crypto_2.isValidBLSPrivateKey), 'Invalid private keys');
|
|
66
|
-
(0, assert_1.default)((0, crypto_2.isValidBLSPublicKey)(source.publicShare), 'Invalid public key');
|
|
67
|
-
this.keyPair = source;
|
|
68
|
-
}
|
|
69
|
-
else if ((0, iface_1.isPrivateKey)(source)) {
|
|
70
|
-
this.keyPair = {
|
|
71
|
-
prv: source.prv,
|
|
72
|
-
publicShare: '',
|
|
73
|
-
secretShares: [],
|
|
74
|
-
seed: '',
|
|
75
|
-
chaincode: '',
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
throw new Error('Invalid key pair options');
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
createShares(threshold, participants) {
|
|
83
|
-
if (participants < threshold) {
|
|
84
|
-
throw new Error('Participants should be greater than threshold');
|
|
85
|
-
}
|
|
86
|
-
const polynomial = BLS.generatePolynomial(threshold);
|
|
87
|
-
const keySecretShares = BLS.secretShares(polynomial, participants);
|
|
88
|
-
const keyPublicShare = BLS.publicShare(polynomial);
|
|
89
|
-
this.keyPair = {
|
|
90
|
-
seed: (0, crypto_2.bigIntToHex)(polynomial[0], 64),
|
|
91
|
-
chaincode: (0, crypto_1.randomBytes)(32).toString('hex'),
|
|
92
|
-
secretShares: keySecretShares.map((secretShare) => (0, crypto_2.bigIntToHex)(secretShare, 64)),
|
|
93
|
-
publicShare: (0, crypto_2.bigIntToHex)(keyPublicShare),
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Note - this is not possible using BLS. BLS does not support prvkey derived key gen
|
|
98
|
-
*
|
|
99
|
-
* @param {string[]} prv a hexadecimal private key
|
|
100
|
-
*/
|
|
101
|
-
recordKeysFromPrivateKey(prv) {
|
|
102
|
-
throw new errors_1.NotImplementedError('Private key derivation is not supported in bls');
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Note - this is not possible using BLS. BLS does not support pubkey derived key gen
|
|
106
|
-
*
|
|
107
|
-
* @param {string} pub - An extended, compressed, or uncompressed public key
|
|
108
|
-
*/
|
|
109
|
-
recordKeysFromPublicKey(pub) {
|
|
110
|
-
throw new errors_1.NotImplementedError('Public key derivation is not supported in bls');
|
|
111
|
-
}
|
|
112
|
-
getAddress(format) {
|
|
113
|
-
throw new errors_1.NotImplementedError('getAddress not implemented');
|
|
114
|
-
}
|
|
115
|
-
getKeys() {
|
|
116
|
-
throw new errors_1.NotImplementedError('getKeys not implemented');
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Signs bytes using the key pair
|
|
120
|
-
*
|
|
121
|
-
* @param msg The message bytes to sign
|
|
122
|
-
* @return signature of the bytes using this keypair
|
|
123
|
-
*/
|
|
124
|
-
async sign(msg) {
|
|
125
|
-
if (this.keyPair.prv) {
|
|
126
|
-
const signedMessage = await BLS.sign(msg, BigInt('0x' + this.keyPair.prv));
|
|
127
|
-
return '0x' + (0, crypto_2.bigIntToHex)(signedMessage);
|
|
128
|
-
}
|
|
129
|
-
throw new Error('Missing private key');
|
|
130
|
-
}
|
|
131
|
-
static keyDerive(seed, pk, chaincode, path) {
|
|
132
|
-
const seedBI = BigInt('0x' + seed);
|
|
133
|
-
const pkBI = BigInt('0x' + pk);
|
|
134
|
-
const chaincodeBI = BigInt('0x' + chaincode);
|
|
135
|
-
const childKey = BLS.privateDerive(seedBI, pkBI, chaincodeBI, path);
|
|
136
|
-
const childChaincode = (0, crypto_2.bigIntToHex)(childKey.chaincode);
|
|
137
|
-
const entropy = BigInt('0x' + (0, crypto_1.randomBytes)(32).toString('hex'));
|
|
138
|
-
const secretShares = BLS.secretShares([childKey.sk, entropy], DEFAULT_SIGNATURE_PARTICIPANTS);
|
|
139
|
-
const publicShare = BLS.publicShare([childKey.sk]);
|
|
140
|
-
return {
|
|
141
|
-
seed,
|
|
142
|
-
chaincode: childChaincode,
|
|
143
|
-
secretShares: secretShares.map((secretShare) => (0, crypto_2.bigIntToHex)(secretShare)),
|
|
144
|
-
publicShare: (0, crypto_2.bigIntToHex)(publicShare),
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Aggregates the secret shares of different key pairs into one private key
|
|
149
|
-
*
|
|
150
|
-
* @param prvKeys an array of secret shares
|
|
151
|
-
* @returns a private key
|
|
152
|
-
*/
|
|
153
|
-
static aggregatePrvkeys(prvKeys) {
|
|
154
|
-
(0, assert_1.default)(prvKeys.every(crypto_2.isValidBLSPrivateKey), 'Invalid private keys');
|
|
155
|
-
try {
|
|
156
|
-
const secretShares = prvKeys.map((secretShare) => BigInt('0x' + secretShare));
|
|
157
|
-
const prv = BLS.mergeSecretShares(secretShares);
|
|
158
|
-
return (0, crypto_2.bigIntToHex)(prv);
|
|
159
|
-
}
|
|
160
|
-
catch (e) {
|
|
161
|
-
throw new Error('Error aggregating prvkeys: ' + e);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Aggregates the public shares of different key pairs into a common public key
|
|
166
|
-
*
|
|
167
|
-
* @param pubKeys an array of public shares
|
|
168
|
-
* @returns a common public key
|
|
169
|
-
*/
|
|
170
|
-
static aggregatePubkeys(pubKeys) {
|
|
171
|
-
try {
|
|
172
|
-
const publicShares = pubKeys.map((publicShare) => BigInt('0x' + publicShare));
|
|
173
|
-
const commonPubKey = BLS.mergePublicShares(publicShares);
|
|
174
|
-
return (0, crypto_2.bigIntToHex)(commonPubKey);
|
|
175
|
-
}
|
|
176
|
-
catch (e) {
|
|
177
|
-
throw new Error('Error aggregating pubkeys: ' + e);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
static aggregateChaincodes(chaincodeContributions) {
|
|
181
|
-
try {
|
|
182
|
-
const chaincodes = chaincodeContributions.map((chaincode) => BigInt('0x' + chaincode));
|
|
183
|
-
const commonChaincode = BLS.mergeChaincodes(chaincodes);
|
|
184
|
-
return (0, crypto_2.bigIntToHex)(commonChaincode, 64);
|
|
185
|
-
}
|
|
186
|
-
catch (e) {
|
|
187
|
-
throw new Error('Error aggregating chaincodes: ' + e);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Aggregates the message signed by different key pairs into one sign
|
|
192
|
-
*
|
|
193
|
-
* @param signatures the message signed by different key pairs. The signer id is relevant to ensure a valid signature.
|
|
194
|
-
* @example <caption> E.g., the message is signed by user and wallet, then signatures would be:</caption>
|
|
195
|
-
* {
|
|
196
|
-
* 1: BigInt(messageSignedWithUserPrv),
|
|
197
|
-
* 3: BigInt(messageSignedWithWalletPrv),
|
|
198
|
-
* }
|
|
199
|
-
* @returns a signature combining all the provided signed messages
|
|
200
|
-
*/
|
|
201
|
-
static aggregateSignatures(signatures) {
|
|
202
|
-
try {
|
|
203
|
-
const signature = BLS.mergeSignatures(signatures);
|
|
204
|
-
return '0x' + (0, crypto_2.bigIntToHex)(signature);
|
|
205
|
-
}
|
|
206
|
-
catch (e) {
|
|
207
|
-
throw new Error('Error aggregating signatures: ' + e);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Verifies the signature for this key pair
|
|
212
|
-
* @param pub The public key with which to verify the signature
|
|
213
|
-
* @param msg The message to verify the signature with
|
|
214
|
-
* @param signature the signature to verify
|
|
215
|
-
* @return true if the signature is valid, else false
|
|
216
|
-
*/
|
|
217
|
-
static async verifySignature(pub, msg, signature) {
|
|
218
|
-
(0, assert_1.default)((0, crypto_2.isValidBLSPublicKey)(pub), `Invalid public key: ${pub}`);
|
|
219
|
-
return await BLS.verify(BigInt(signature), msg, BigInt('0x' + pub));
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
exports.BlsKeyPair = BlsKeyPair;
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxzS2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9iYXNlQ29pbi9ibHNLZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixtQ0FBcUM7QUFDckMseURBQTJDO0FBRzNDLHFDQUErQztBQUMvQyxtQ0FBaUY7QUFDakYsMkNBQXdGO0FBRXhGLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBRXpDOztHQUVHO0FBQ0gsTUFBc0IsVUFBVTtJQUc5Qjs7OztPQUlHO0lBQ0gsWUFBc0IsTUFBdUI7UUFDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7YUFBTSxJQUFJLElBQUEsYUFBSyxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzRCxDQUFDO2FBQU0sSUFBSSxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsNkJBQW9CLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBQ2hGLElBQUEsZ0JBQU0sRUFBQyxJQUFBLDRCQUFtQixFQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxJQUFJLElBQUEsb0JBQVksRUFBQyxNQUFNLENBQUMs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QUMsbUJBQW1CLENBQUMsVUFBbUM7UUFDbkUsSUFBSSxDQUFDO1lBQ0gsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsRCxPQUFPLElBQUksR0FBRyxJQUFBLG9CQUFXLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxTQUFpQjtRQUM3RSxJQUFBLGdCQUFNLEVBQUMsSUFBQSw0QkFBbUIsRUFBQyxHQUFHLENBQUMsRUFBRSx1QkFBdUIsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvRCxPQUFPLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0Y7QUFoTEQsZ0NBZ0xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgQkxTIGZyb20gJ0BiaXRnby1iZXRhL2Jscy1ka2cnO1xuaW1wb3J0IHsgQmFzZUtleVBhaXIgfSBmcm9tICcuL2Jhc2VLZXlQYWlyJztcbmltcG9ydCB7IEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuL2VudW0nO1xuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IEJsc0tleXMsIEtleVBhaXJPcHRpb25zLCBpc0RrZywgaXNCbHNLZXksIGlzUHJpdmF0ZUtleSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgaXNWYWxpZEJMU1B1YmxpY0tleSwgaXNWYWxpZEJMU1ByaXZhdGVLZXksIGJpZ0ludFRvSGV4IH0gZnJvbSAnLi4vdXRpbC9jcnlwdG8nO1xuXG5jb25zdCBERUZBVUxUX1NJR05BVFVSRV9USFJFU0hPTEQgPSAyO1xuY29uc3QgREVGQVVMVF9TSUdOQVRVUkVfUEFSVElDSVBBTlRTID0gMztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBCTFMga2V5cGFpcnMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbHNLZXlQYWlyIGltcGxlbWVudHMgQmFzZUtleVBhaXIge1xuICBwcm90ZWN0ZWQga2V5UGFpcjogQmxzS2V5cztcblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBwb2x5bm9taWFsLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJPcHRpb25zfSBzb3VyY2UgRWl0aGVyIGEgZGtnIG9wdGlvbnMsIGEgcHVibGljIGFuZCBzZWNyZXQgc2hhcmVzLCBvciBhIHByaXZhdGUga2V5XG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgdGhpcy5jcmVhdGVTaGFyZXMoREVGQVVMVF9TSUdOQVRVUkVfVEhSRVNIT0xELCBERUZBVUxUX1NJR05BVFVSRV9QQVJUSUNJUEFOVFMpO1xuICAgIH0gZWxzZSBpZiAoaXNEa2coc291cmNlKSkge1xuICAgICAgdGhpcy5jcmVhdGVTaGFyZXMoc291cmNlLnRocmVzaG9sZCwgc291cmNlLnBhcnRpY2lwYW50cyk7XG4gICAgfSBlbHNlIGlmIChpc0Jsc0tleShzb3VyY2UpKSB7XG4gICAgICBhc3NlcnQoc291cmNlLnNlY3JldFNoYXJlcy5ldmVyeShpc1ZhbGlkQkxTUHJpdmF0ZUtleSksICdJbnZhbGlkIHByaXZhdGUga2V5cycpO1xuICAgICAgYXNzZXJ0KGlzVmFsaWRCTFNQdWJsaWNLZXkoc291cmNlLnB1YmxpY1NoYXJlKSwgJ0ludmFsaWQgcHVibGljIGtleScpO1xuICAgICAgdGhpcy5rZXlQYWlyID0gc291cmNlO1xuICAgIH0gZWxzZSBpZiAoaXNQcml2YXRlS2V5KHNvdXJjZSkpIHtcbiAgICAgIHRoaXMua2V5UGFpciA9IHtcbiAgICAgICAgcHJ2OiBzb3VyY2UucHJ2LFxuICAgICAgICBwdWJsaWNTaGFyZTogJycsXG4gICAgICAgIHNlY3JldFNoYXJlczogW10sXG4gICAgICAgIHNlZWQ6ICcnLFxuICAgICAgICBjaGFpbmNvZGU6ICcnLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleSBwYWlyIG9wdGlvbnMnKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVTaGFyZXModGhyZXNob2xkOiBudW1iZXIsIHBhcnRpY2lwYW50czogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHBhcnRpY2lwYW50cyA8IHRocmVzaG9sZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJ0aWNpcGFudHMgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aHJlc2hvbGQnKTtcbiAgICB9XG4gICAgY29uc3QgcG9seW5vbWlhbCA9IEJMUy5nZW5lcmF0ZVBvbHlub21pYWwodGhyZXNob2xkKTtcbiAgICBjb25zdCBrZXlTZWNyZXRTaGFyZXMgPSBCTFMuc2VjcmV0U2hhcmVzKHBvbHlub21pYWwsIHBhcnRpY2lwYW50cyk7XG4gICAgY29uc3Qga2V5UHVibGljU2hhcmUgPSBCTFMucHVibGljU2hhcmUocG9seW5vbWlhbCk7XG4gICAgdGhpcy5rZXlQYWlyID0ge1xuICAgICAgc2VlZDogYmlnSW50VG9IZXgocG9seW5vbWlhbFswXSwgNjQpLFxuICAgICAgY2hhaW5jb2RlOiByYW5kb21CeXRlcygzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgc2VjcmV0U2hhcmVzOiBrZXlTZWNyZXRTaGFyZXMubWFwKChzZWNyZXRTaGFyZSkgPT4gYmlnSW50VG9IZXgoc2VjcmV0U2hhcmUsIDY0KSksXG4gICAgICBwdWJsaWNTaGFyZTogYmlnSW50VG9IZXgoa2V5UHVibGljU2hhcmUpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTm90ZSAtIHRoaXMgaXMgbm90IHBvc3NpYmxlIHVzaW5nIEJMUy4gQkxTIGRvZXMgbm90IHN1cHBvcnQgcHJ2a2V5IGRlcml2ZWQga2V5IGdlblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwcnYgYSBoZXhhZGVjaW1hbCBwcml2YXRlIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ1ByaXZhdGUga2V5IGRlcml2YXRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBibHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlIC0gdGhpcyBpcyBub3QgcG9zc2libGUgdXNpbmcgQkxTLiBCTFMgZG9lcyBub3Qgc3VwcG9ydCBwdWJrZXkgZGVyaXZlZCBrZXkgZ2VuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSBBbiBleHRlbmRlZCwgY29tcHJlc3NlZCwgb3IgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ1B1YmxpYyBrZXkgZGVyaXZhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGJscycpO1xuICB9XG5cbiAgZ2V0QWRkcmVzcyhmb3JtYXQ/OiBBZGRyZXNzRm9ybWF0KTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0QWRkcmVzcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldEtleXMoKTogYW55IHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0S2V5cyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBieXRlcyB1c2luZyB0aGUga2V5IHBhaXJcbiAgICpcbiAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSBieXRlcyB0byBzaWduXG4gICAqIEByZXR1cm4gc2lnbmF0dXJlIG9mIHRoZSBieXRlcyB1c2luZyB0aGlzIGtleXBhaXJcbiAgICovXG4gIGFzeW5jIHNpZ24obXNnOiBCdWZmZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmtleVBhaXIucHJ2KSB7XG4gICAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gYXdhaXQgQkxTLnNpZ24obXNnLCBCaWdJbnQoJzB4JyArIHRoaXMua2V5UGFpci5wcnYpKTtcbiAgICAgIHJldHVybiAnMHgnICsgYmlnSW50VG9IZXgoc2lnbmVkTWVzc2FnZSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBrZXlEZXJpdmUoc2VlZDogc3RyaW5nLCBwazogc3RyaW5nLCBjaGFpbmNvZGU6IHN0cmluZywgcGF0aDogc3RyaW5nKTogQmxzS2V5cyB7XG4gICAgY29uc3Qgc2VlZEJJID0gQmlnSW50KCcweCcgKyBzZWVkKTtcbiAgICBjb25zdCBwa0JJID0gQmlnSW50KCcweCcgKyBwayk7XG4gICAgY29uc3QgY2hhaW5jb2RlQkkgPSBCaWdJbnQoJzB4JyArIGNoYWluY29kZSk7XG4gICAgY29uc3QgY2hpbGRLZXkgPSBCTFMucHJpdmF0ZURlcml2ZShzZWVkQkksIHBrQkksIGNoYWluY29kZUJJLCBwYXRoKTtcbiAgICBjb25zdCBjaGlsZENoYWluY29kZSA9IGJpZ0ludFRvSGV4KGNoaWxkS2V5LmNoYWluY29kZSk7XG4gICAgY29uc3QgZW50cm9weSA9IEJpZ0ludCgnMHgnICsgcmFuZG9tQnl0ZXMoMzIpLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgY29uc3Qgc2VjcmV0U2hhcmVzID0gQkxTLnNlY3JldFNoYXJlcyhbY2hpbGRLZXkuc2ssIGVudHJvcHldLCBERUZBVUxUX1NJR05BVFVSRV9QQVJUSUNJUEFOVFMpO1xuICAgIGNvbnN0IHB1YmxpY1NoYXJlID0gQkxTLnB1YmxpY1NoYXJlKFtjaGlsZEtleS5za10pO1xuICAgIHJldHVybiB7XG4gICAgICBzZWVkLFxuICAgICAgY2hhaW5jb2RlOiBjaGlsZENoYWluY29kZSxcbiAgICAgIHNlY3JldFNoYXJlczogc2VjcmV0U2hhcmVzLm1hcCgoc2VjcmV0U2hhcmUpID0+IGJpZ0ludFRvSGV4KHNlY3JldFNoYXJlKSksXG4gICAgICBwdWJsaWNTaGFyZTogYmlnSW50VG9IZXgocHVibGljU2hhcmUpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWdncmVnYXRlcyB0aGUgc2VjcmV0IHNoYXJlcyBvZiBkaWZmZXJlbnQga2V5IHBhaXJzIGludG8gb25lIHByaXZhdGUga2V5XG4gICAqXG4gICAqIEBwYXJhbSBwcnZLZXlzIGFuIGFycmF5IG9mIHNlY3JldCBzaGFyZXNcbiAgICogQHJldHVybnMgYSBwcml2YXRlIGtleVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZ2dyZWdhdGVQcnZrZXlzKHBydktleXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBhc3NlcnQocHJ2S2V5cy5ldmVyeShpc1ZhbGlkQkxTUHJpdmF0ZUtleSksICdJbnZhbGlkIHByaXZhdGUga2V5cycpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZWNyZXRTaGFyZXMgPSBwcnZLZXlzLm1hcCgoc2VjcmV0U2hhcmUpID0+IEJpZ0ludCgnMHgnICsgc2VjcmV0U2hhcmUpKTtcbiAgICAgIGNvbnN0IHBydiA9IEJMUy5tZXJnZVNlY3JldFNoYXJlcyhzZWNyZXRTaGFyZXMpO1xuICAgICAgcmV0dXJuIGJpZ0ludFRvSGV4KHBydik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBhZ2dyZWdhdGluZyBwcnZrZXlzOiAnICsgZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFnZ3JlZ2F0ZXMgdGhlIHB1YmxpYyBzaGFyZXMgb2YgZGlmZmVyZW50IGtleSBwYWlycyBpbnRvIGEgY29tbW9uIHB1YmxpYyBrZXlcbiAgICpcbiAgICogQHBhcmFtIHB1YktleXMgYW4gYXJyYXkgb2YgcHVibGljIHNoYXJlc1xuICAgKiBAcmV0dXJucyBhIGNvbW1vbiBwdWJsaWMga2V5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFnZ3JlZ2F0ZVB1YmtleXMocHViS2V5czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwdWJsaWNTaGFyZXMgPSBwdWJLZXlzLm1hcCgocHVibGljU2hhcmUpID0+IEJpZ0ludCgnMHgnICsgcHVibGljU2hhcmUpKTtcbiAgICAgIGNvbnN0IGNvbW1vblB1YktleSA9IEJMUy5tZXJnZVB1YmxpY1NoYXJlcyhwdWJsaWNTaGFyZXMpO1xuICAgICAgcmV0dXJuIGJpZ0ludFRvSGV4KGNvbW1vblB1YktleSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBhZ2dyZWdhdGluZyBwdWJrZXlzOiAnICsgZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhZ2dyZWdhdGVDaGFpbmNvZGVzKGNoYWluY29kZUNvbnRyaWJ1dGlvbnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2hhaW5jb2RlcyA9IGNoYWluY29kZUNvbnRyaWJ1dGlvbnMubWFwKChjaGFpbmNvZGUpID0+IEJpZ0ludCgnMHgnICsgY2hhaW5jb2RlKSk7XG4gICAgICBjb25zdCBjb21tb25DaGFpbmNvZGUgPSBCTFMubWVyZ2VDaGFpbmNvZGVzKGNoYWluY29kZXMpO1xuICAgICAgcmV0dXJuIGJpZ0ludFRvSGV4KGNvbW1vbkNoYWluY29kZSwgNjQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgYWdncmVnYXRpbmcgY2hhaW5jb2RlczogJyArIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZ2dyZWdhdGVzIHRoZSBtZXNzYWdlIHNpZ25lZCBieSBkaWZmZXJlbnQga2V5IHBhaXJzIGludG8gb25lIHNpZ25cbiAgICpcbiAgICogQHBhcmFtIHNpZ25hdHVyZXMgdGhlIG1lc3NhZ2Ugc2lnbmVkIGJ5IGRpZmZlcmVudCBrZXkgcGFpcnMuIFRoZSBzaWduZXIgaWQgaXMgcmVsZXZhbnQgdG8gZW5zdXJlIGEgdmFsaWQgc2lnbmF0dXJlLlxuICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj4gRS5nLiwgdGhlIG1lc3NhZ2UgaXMgc2lnbmVkIGJ5IHVzZXIgYW5kIHdhbGxldCwgdGhlbiBzaWduYXR1cmVzIHdvdWxkIGJlOjwvY2FwdGlvbj5cbiAgICoge1xuICAgKiAgIDE6IEJpZ0ludChtZXNzYWdlU2lnbmVkV2l0aFVzZXJQcnYpLFxuICAgKiAgIDM6IEJpZ0ludChtZXNzYWdlU2lnbmVkV2l0aFdhbGxldFBydiksXG4gICAqIH1cbiAgICogQHJldHVybnMgYSBzaWduYXR1cmUgY29tYmluaW5nIGFsbCB0aGUgcHJvdmlkZWQgc2lnbmVkIG1lc3NhZ2VzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFnZ3JlZ2F0ZVNpZ25hdHVyZXMoc2lnbmF0dXJlczogeyBbbjogbnVtYmVyXTogYmlnaW50IH0pOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBCTFMubWVyZ2VTaWduYXR1cmVzKHNpZ25hdHVyZXMpO1xuICAgICAgcmV0dXJuICcweCcgKyBiaWdJbnRUb0hleChzaWduYXR1cmUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgYWdncmVnYXRpbmcgc2lnbmF0dXJlczogJyArIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgc2lnbmF0dXJlIGZvciB0aGlzIGtleSBwYWlyXG4gICAqIEBwYXJhbSBwdWIgVGhlIHB1YmxpYyBrZXkgd2l0aCB3aGljaCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIHdpdGhcbiAgICogQHBhcmFtIHNpZ25hdHVyZSB0aGUgc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCwgZWxzZSBmYWxzZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyB2ZXJpZnlTaWduYXR1cmUocHViOiBzdHJpbmcsIG1zZzogQnVmZmVyLCBzaWduYXR1cmU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGFzc2VydChpc1ZhbGlkQkxTUHVibGljS2V5KHB1YiksIGBJbnZhbGlkIHB1YmxpYyBrZXk6ICR7cHVifWApO1xuICAgIHJldHVybiBhd2FpdCBCTFMudmVyaWZ5KEJpZ0ludChzaWduYXR1cmUpLCBtc2csIEJpZ0ludCgnMHgnICsgcHViKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { SerializedKeyPair } from 'openpgp';
|
|
2
|
-
import { IBaseCoin, IBlsKeyPair, KeychainsTriplet } from '../baseCoin';
|
|
3
|
-
import { BitGoBase } from '../bitgoBase';
|
|
4
|
-
import { Keychain } from '../keychain';
|
|
5
|
-
import { IBlsUtils } from './iBlsUtils';
|
|
6
|
-
import { MpcUtils } from './mpcUtils';
|
|
7
|
-
/**
|
|
8
|
-
* Utility functions for BLS-DKG work flows.
|
|
9
|
-
*/
|
|
10
|
-
export declare class BlsUtils extends MpcUtils implements IBlsUtils {
|
|
11
|
-
constructor(bitgo: BitGoBase, baseCoin: IBaseCoin);
|
|
12
|
-
/**
|
|
13
|
-
* Creates a Keychain containing the User's BLS-DKG signing materials.
|
|
14
|
-
*
|
|
15
|
-
* @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
|
|
16
|
-
* @param userKeyShare - user's BLS-DKG key share
|
|
17
|
-
* @param backupKeyShare - backup's BLS-DKG key share
|
|
18
|
-
* @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
|
|
19
|
-
* @param passphrase - wallet passphrase used to encrypt user's signing materials
|
|
20
|
-
*/
|
|
21
|
-
createUserKeychain(userGpgKey: SerializedKeyPair<string>, userKeyShare: IBlsKeyPair, backupKeyShare: IBlsKeyPair, bitgoKeychain: Keychain, passphrase: string, originalPasscodeEncryptionCode?: string): Promise<Keychain>;
|
|
22
|
-
/**
|
|
23
|
-
* Creates a Keychain containing the Backup party's BLS-DKG signing materials.
|
|
24
|
-
*
|
|
25
|
-
* @param backupGpgKey - ephemeral GPG key to encrypt / decrypt sensitive data exchanged between backup and server
|
|
26
|
-
* @param userKeyShare - User's BLS-DKG Keyshare
|
|
27
|
-
* @param backupKeyShare - Backup's BLS-DKG Keyshare
|
|
28
|
-
* @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
|
|
29
|
-
* @param passphrase - wallet passphrase used to encrypt user's signing materials
|
|
30
|
-
*/
|
|
31
|
-
createBackupKeychain(backupGpgKey: SerializedKeyPair<string>, userKeyShare: IBlsKeyPair, backupKeyShare: IBlsKeyPair, bitgoKeychain: Keychain, passphrase: string): Promise<Keychain>;
|
|
32
|
-
/**
|
|
33
|
-
* Creates a Keychain containing BitGo's BLS-DKG signing materials.
|
|
34
|
-
*
|
|
35
|
-
* @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
|
|
36
|
-
* @param backupGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between backup and server
|
|
37
|
-
* @param userKeyShare - user's BLS-DKG key share
|
|
38
|
-
* @param backupKeyShare - backup's BLS-DKG key share
|
|
39
|
-
*/
|
|
40
|
-
createBitgoKeychain(userGpgKey: SerializedKeyPair<string>, backupGpgKey: SerializedKeyPair<string>, userKeyShare: IBlsKeyPair, backupKeyShare: IBlsKeyPair, enterprise?: string): Promise<Keychain>;
|
|
41
|
-
/**
|
|
42
|
-
* Creates User, Backup, and BitGo BLS-DKG Keychains.
|
|
43
|
-
*
|
|
44
|
-
* @param params.passphrase - passphrase used to encrypt signing materials created for User and Backup
|
|
45
|
-
*/
|
|
46
|
-
createKeychains(params: {
|
|
47
|
-
passphrase: string;
|
|
48
|
-
enterprise?: string;
|
|
49
|
-
originalPasscodeEncryptionCode?: string;
|
|
50
|
-
}): Promise<KeychainsTriplet>;
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=blsUtils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blsUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/blsUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAetC;;GAEG;AACH,qBAAa,QAAS,SAAQ,QAAS,YAAW,SAAS;gBAC7C,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;IAIjD;;;;;;;;OAQG;IACG,kBAAkB,CACtB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,8BAA8B,CAAC,EAAE,MAAM,GACtC,OAAO,CAAC,QAAQ,CAAC;IAiEpB;;;;;;;;OAQG;IACG,oBAAoB,CACxB,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC;IAoEpB;;;;;;;OAOG;IACG,mBAAmB,CACvB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IA6CpB;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;KACzC,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA0D9B"}
|