@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.
Files changed (42) hide show
  1. package/dist/src/account-lib/baseCoin/iface.d.ts +1 -28
  2. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  3. package/dist/src/account-lib/baseCoin/iface.js +1 -18
  4. package/dist/src/account-lib/baseCoin/index.d.ts +0 -1
  5. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
  6. package/dist/src/account-lib/baseCoin/index.js +2 -4
  7. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +2 -2
  8. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  9. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  10. package/dist/src/bitgo/keychain/iKeychains.d.ts +1 -1
  11. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  12. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  13. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  14. package/dist/src/bitgo/keychain/keychains.js +1 -7
  15. package/dist/src/bitgo/utils/index.d.ts +0 -2
  16. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  17. package/dist/src/bitgo/utils/index.js +1 -3
  18. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +2 -1
  19. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  20. package/dist/src/bitgo/utils/tss/baseTypes.js +2 -1
  21. package/dist/src/bitgo/wallet/iWallet.d.ts +1 -0
  22. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  23. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  24. package/dist/src/bitgo/wallet/iWallets.d.ts +1 -1
  25. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  26. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  27. package/dist/src/bitgo/wallet/wallet.d.ts +1 -1
  28. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  29. package/dist/src/bitgo/wallet/wallet.js +26 -5
  30. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  31. package/dist/src/bitgo/wallet/wallets.js +1 -16
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +8 -9
  34. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -76
  35. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
  36. package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -223
  37. package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
  38. package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
  39. package/dist/src/bitgo/utils/blsUtils.js +0 -237
  40. package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
  41. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
  42. 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.833",
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/bls-dkg": "1.1.1-beta.1073",
41
- "@bitgo-beta/sdk-lib-mpc": "8.2.0-beta.825",
42
- "@bitgo-beta/secp256k1": "1.0.2-beta.859",
43
- "@bitgo-beta/sjcl": "1.0.2-beta.1071",
44
- "@bitgo-beta/statics": "15.1.1-beta.836",
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.386",
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": "396ca4585e9612eb906f4f9898aa785719e3023d"
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"}