@bitgo/sdk-core 1.1.0-rc.4 → 1.1.0-rc.7

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 (39) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/src/account-lib/mpc/index.d.ts +4 -3
  3. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  4. package/dist/src/account-lib/mpc/index.js +7 -7
  5. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +25 -0
  6. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
  7. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +112 -0
  8. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts +4 -0
  9. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts.map +1 -0
  10. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +29 -0
  11. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +37 -0
  12. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -0
  13. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +3 -0
  14. package/dist/src/account-lib/mpc/tss/index.d.ts +2 -1
  15. package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -1
  16. package/dist/src/account-lib/mpc/tss/index.js +5 -2
  17. package/dist/src/bitgo/coinFactory.d.ts +31 -0
  18. package/dist/src/bitgo/coinFactory.d.ts.map +1 -0
  19. package/dist/src/bitgo/coinFactory.js +59 -0
  20. package/dist/src/bitgo/{tss.d.ts → tss/eddsa/eddsa.d.ts} +21 -46
  21. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -0
  22. package/dist/src/bitgo/tss/eddsa/eddsa.js +256 -0
  23. package/dist/src/bitgo/tss/eddsa/index.d.ts +2 -0
  24. package/dist/src/bitgo/tss/eddsa/index.d.ts.map +1 -0
  25. package/dist/src/bitgo/tss/eddsa/index.js +14 -0
  26. package/dist/src/bitgo/tss/index.d.ts +3 -0
  27. package/dist/src/bitgo/tss/index.d.ts.map +1 -0
  28. package/dist/src/bitgo/tss/index.js +16 -0
  29. package/dist/src/bitgo/tss/types.d.ts +28 -0
  30. package/dist/src/bitgo/tss/types.d.ts.map +1 -0
  31. package/dist/src/bitgo/tss/types.js +10 -0
  32. package/dist/tsconfig.tsbuildinfo +278 -132
  33. package/package.json +6 -4
  34. package/LICENSE +0 -191
  35. package/dist/src/bigojsError.d.ts +0 -4
  36. package/dist/src/bigojsError.d.ts.map +0 -1
  37. package/dist/src/bigojsError.js +0 -11
  38. package/dist/src/bitgo/tss.d.ts.map +0 -1
  39. package/dist/src/bitgo/tss.js +0 -261
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.encryptYShare = exports.sendSignatureShare = exports.getTxRequest = exports.sendUserToBitgoGShare = exports.getBitgoToUserRShare = exports.offerUserToBitgoRShare = exports.createUserToBitGoGShare = exports.createUserSignShare = exports.createCombinedKey = void 0;
7
+ const tss_1 = __importDefault(require("./../../../account-lib/mpc/tss"));
8
+ const types_1 = require("./../types");
9
+ const utils_1 = require("./../../utils");
10
+ const _ = require("lodash");
11
+ /**
12
+ * Combines YShares to combine the final TSS key
13
+ * This can only be used to create the User or Backup key since it requires the common keychain from BitGo first
14
+ *
15
+ * @param params.keyShare - TSS key share
16
+ * @param params.encryptedYShares - encrypted YShares with information on how to decrypt
17
+ * @param params.commonKeychain - expected common keychain of the combined key
18
+ * @returns {CombinedKey} combined TSS key
19
+ */
20
+ async function createCombinedKey(params) {
21
+ await tss_1.default.initialize();
22
+ const MPC = new tss_1.default();
23
+ const { keyShare, encryptedYShares, commonKeychain } = params;
24
+ const yShares = [];
25
+ let bitgoYShare;
26
+ let userYShare;
27
+ let backupYShare;
28
+ for (const encryptedYShare of encryptedYShares) {
29
+ const privateShare = await utils_1.readSignedMessage(encryptedYShare.yShare.encryptedPrivateShare, encryptedYShare.senderPublicArmor, encryptedYShare.recipientPrivateArmor);
30
+ const yShare = {
31
+ i: encryptedYShare.yShare.i,
32
+ j: encryptedYShare.yShare.j,
33
+ y: encryptedYShare.yShare.publicShare.slice(0, 64),
34
+ u: privateShare.slice(0, 64),
35
+ chaincode: privateShare.slice(64),
36
+ };
37
+ switch (encryptedYShare.yShare.j) {
38
+ case 1:
39
+ userYShare = yShare;
40
+ break;
41
+ case 2:
42
+ backupYShare = yShare;
43
+ break;
44
+ case 3:
45
+ bitgoYShare = yShare;
46
+ break;
47
+ default:
48
+ throw new Error('Invalid YShare index');
49
+ }
50
+ yShares.push(yShare);
51
+ }
52
+ const combinedKey = MPC.keyCombine(keyShare.uShare, yShares);
53
+ if (combinedKey.pShare.y + combinedKey.pShare.chaincode !== commonKeychain) {
54
+ throw new Error('Common keychains do not match');
55
+ }
56
+ if (!bitgoYShare) {
57
+ throw new Error('Missing BitGo Y Share');
58
+ }
59
+ const signingMaterial = {
60
+ uShare: keyShare.uShare,
61
+ bitgoYShare,
62
+ backupYShare,
63
+ userYShare,
64
+ };
65
+ return {
66
+ signingMaterial,
67
+ commonKeychain,
68
+ };
69
+ }
70
+ exports.createCombinedKey = createCombinedKey;
71
+ /**
72
+ * Creates the User Sign Share containing the User XShare and the User to Bitgo RShare
73
+ *
74
+ * @param {Buffer} signablePayload - the signablePayload as a buffer
75
+ * @param {PShare} pShare - User's signing material
76
+ * @returns {Promise<SignShare>} - User Sign Share
77
+ */
78
+ async function createUserSignShare(signablePayload, pShare) {
79
+ const MPC = await tss_1.default.initialize();
80
+ if (pShare.i !== types_1.ShareKeyPosition.USER) {
81
+ throw new Error('Invalid PShare, PShare doesnt belong to the User');
82
+ }
83
+ const jShare = { i: types_1.ShareKeyPosition.BITGO, j: types_1.ShareKeyPosition.USER };
84
+ return MPC.signShare(signablePayload, pShare, [jShare]);
85
+ }
86
+ exports.createUserSignShare = createUserSignShare;
87
+ /**
88
+ * Creates the User to Bitgo GShare
89
+ *
90
+ * @param {SignShare} userSignShare - the User Sign Share
91
+ * @param {SignatureShareRecord} bitgoToUserRShare - the Bitgo to User RShare
92
+ * @param {YShare} backupToUserYShare - the backup key Y share received during wallet creation
93
+ * @param {Buffer} signablePayload - the signable payload from a tx
94
+ * @returns {Promise<GShare>} - the User to Bitgo GShare
95
+ */
96
+ async function createUserToBitGoGShare(userSignShare, bitgoToUserRShare, backupToUserYShare, bitgoToUserYShare, signablePayload) {
97
+ if (userSignShare.xShare.i !== types_1.ShareKeyPosition.USER) {
98
+ throw new Error('Invalid XShare, doesnt belong to the User');
99
+ }
100
+ if (bitgoToUserRShare.from !== utils_1.SignatureShareType.BITGO || bitgoToUserRShare.to !== utils_1.SignatureShareType.USER) {
101
+ throw new Error('Invalid RShare, is not from Bitgo to User');
102
+ }
103
+ if (backupToUserYShare.i !== types_1.ShareKeyPosition.USER) {
104
+ throw new Error('Invalid YShare, doesnt belong to the User');
105
+ }
106
+ if (backupToUserYShare.j !== types_1.ShareKeyPosition.BACKUP) {
107
+ throw new Error('Invalid YShare, is not backup key');
108
+ }
109
+ const RShare = {
110
+ i: types_1.ShareKeyPosition.USER,
111
+ j: types_1.ShareKeyPosition.BITGO,
112
+ u: bitgoToUserYShare.u,
113
+ r: bitgoToUserRShare.share.substring(0, 64),
114
+ R: bitgoToUserRShare.share.substring(64, 128),
115
+ };
116
+ const MPC = await tss_1.default.initialize();
117
+ return MPC.sign(signablePayload, userSignShare.xShare, [RShare], [backupToUserYShare]);
118
+ }
119
+ exports.createUserToBitGoGShare = createUserToBitGoGShare;
120
+ /**
121
+ * Sends the User to Bitgo RShare to Bitgo
122
+ * @param {BitGoBase} bitgo - the bitgo instance
123
+ * @param {String} walletId - the wallet id
124
+ * @param {String} txRequestId - the txRequest Id
125
+ * @param {SignShare} userSignShare - the user Sign Share
126
+ * @param {String} encryptedSignerShare - signer share encrypted to bitgo key
127
+ * @returns {Promise<void>}
128
+ */
129
+ async function offerUserToBitgoRShare(bitgo, walletId, txRequestId, userSignShare, encryptedSignerShare) {
130
+ const rShare = userSignShare.rShares[types_1.ShareKeyPosition.BITGO];
131
+ if (_.isNil(rShare)) {
132
+ throw new Error('userToBitgo RShare not found');
133
+ }
134
+ if (rShare.i !== types_1.ShareKeyPosition.BITGO || rShare.j !== types_1.ShareKeyPosition.USER) {
135
+ throw new Error('Invalid RShare, is not from User to Bitgo');
136
+ }
137
+ const signatureShare = {
138
+ from: utils_1.SignatureShareType.USER,
139
+ to: utils_1.SignatureShareType.BITGO,
140
+ share: rShare.r + rShare.R,
141
+ };
142
+ await sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, encryptedSignerShare);
143
+ }
144
+ exports.offerUserToBitgoRShare = offerUserToBitgoRShare;
145
+ /**
146
+ * Gets the Bitgo to User RShare from Bitgo
147
+ *
148
+ * @param {BitGoBase} bitgo - the bitgo instance
149
+ * @param {String} walletId - the wallet id
150
+ * @param {String} txRequestId - the txRequest Id
151
+ * @returns {Promise<SignatureShareRecord>} - a Signature Share
152
+ */
153
+ async function getBitgoToUserRShare(bitgo, walletId, txRequestId) {
154
+ const txRequest = await getTxRequest(bitgo, walletId, txRequestId);
155
+ const signatureShares = txRequest.signatureShares;
156
+ if (_.isNil(signatureShares) || _.isEmpty(signatureShares)) {
157
+ throw new Error(`No signatures shares found for id: ${txRequestId}`);
158
+ }
159
+ // at this point we expect the only share to be the RShare
160
+ const bitgoToUserRShare = signatureShares.find((sigShare) => sigShare.from === utils_1.SignatureShareType.BITGO && sigShare.to === utils_1.SignatureShareType.USER);
161
+ if (_.isNil(bitgoToUserRShare)) {
162
+ throw new Error(`Bitgo to User RShare not found for id: ${txRequestId}`);
163
+ }
164
+ return bitgoToUserRShare;
165
+ }
166
+ exports.getBitgoToUserRShare = getBitgoToUserRShare;
167
+ /**
168
+ * Sends the User to Bitgo GShare to Bitgo
169
+ *
170
+ * @param {BitGoBase} bitgo - the bitgo instance
171
+ * @param {String} walletId - the wallet id
172
+ * @param {String} txRequestId - the txRequest Id
173
+ * @param {GShare} userToBitgoGShare - the User to Bitgo GShare
174
+ * @returns {Promise<void>}
175
+ */
176
+ async function sendUserToBitgoGShare(bitgo, walletId, txRequestId, userToBitgoGShare) {
177
+ if (userToBitgoGShare.i !== types_1.ShareKeyPosition.USER) {
178
+ throw new Error('Invalid GShare, doesnt belong to the User');
179
+ }
180
+ const signatureShare = {
181
+ from: utils_1.SignatureShareType.USER,
182
+ to: utils_1.SignatureShareType.BITGO,
183
+ share: userToBitgoGShare.R + userToBitgoGShare.gamma,
184
+ };
185
+ await sendSignatureShare(bitgo, walletId, txRequestId, signatureShare);
186
+ }
187
+ exports.sendUserToBitgoGShare = sendUserToBitgoGShare;
188
+ /**
189
+ * Gets the latest Tx Request by id
190
+ *
191
+ * @param {BitGoBase} bitgo - the bitgo instance
192
+ * @param {String} walletId - the wallet id
193
+ * @param {String} txRequestId - the txRequest Id
194
+ * @returns {Promise<TxRequest>}
195
+ */
196
+ async function getTxRequest(bitgo, walletId, txRequestId) {
197
+ const txRequestRes = await bitgo
198
+ .get(bitgo.url('/wallet/' + walletId + '/txrequests', 2))
199
+ .query({ txRequestIds: txRequestId, latest: 'true' })
200
+ .result();
201
+ if (txRequestRes.txRequests.length <= 0) {
202
+ throw new Error(`Unable to find TxRequest with id ${txRequestId}`);
203
+ }
204
+ return txRequestRes.txRequests[0];
205
+ }
206
+ exports.getTxRequest = getTxRequest;
207
+ /**
208
+ * Sends a Signature Share
209
+ *
210
+ * @param {BitGoBase} bitgo - the bitgo instance
211
+ * @param {String} walletId - the wallet id *
212
+ * @param {String} txRequestId - the txRequest Id
213
+ * @param {SignatureShareRecord} signatureShare - a Signature Share
214
+ * @returns {Promise<SignatureShareRecord>} - a Signature Share
215
+ */
216
+ async function sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, signerShare) {
217
+ return bitgo
218
+ .post(bitgo.url('/wallet/' + walletId + '/txrequests/' + txRequestId + '/signatureshares', 2))
219
+ .send({
220
+ signatureShare,
221
+ signerShare,
222
+ })
223
+ .result();
224
+ }
225
+ exports.sendSignatureShare = sendSignatureShare;
226
+ /**
227
+ * Prepares a YShare to be exchanged with other key holders.
228
+ * Output is in a format that is usable within BitGo's ecosystem.
229
+ *
230
+ * @param params.keyShare - TSS key share of the party preparing exchange materials
231
+ * @param params.recipientIndex - index of the recipient (1, 2, or 3)
232
+ * @param params.recipientGpgPublicArmor - recipient's public gpg key in armor format
233
+ * @param params.senderGpgPrivateArmor - sender's private gpg key in armor format
234
+ * @returns { EncryptedYShare } encrypted Y Share
235
+ */
236
+ async function encryptYShare(params) {
237
+ const { keyShare, recipientIndex, recipientGpgPublicArmor, senderGpgPrivateArmor } = params;
238
+ const yShare = keyShare.yShares[recipientIndex];
239
+ if (!yShare) {
240
+ throw new Error('Invalid recipient');
241
+ }
242
+ const publicShare = Buffer.concat([
243
+ Buffer.from(keyShare.uShare.y, 'hex'),
244
+ Buffer.from(keyShare.uShare.chaincode, 'hex'),
245
+ ]).toString('hex');
246
+ const privateShare = Buffer.concat([Buffer.from(yShare.u, 'hex'), Buffer.from(yShare.chaincode, 'hex')]).toString('hex');
247
+ const encryptedPrivateShare = await utils_1.encryptAndSignText(privateShare, recipientGpgPublicArmor, senderGpgPrivateArmor);
248
+ return {
249
+ i: yShare.i,
250
+ j: yShare.j,
251
+ publicShare,
252
+ encryptedPrivateShare,
253
+ };
254
+ }
255
+ exports.encryptYShare = encryptYShare;
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VkZHNhL2VkZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlFQUFvSDtBQUVwSCxzQ0FBZ0g7QUFDaEgseUNBTXVCO0FBQ3ZCLDRCQUE2QjtBQUU3Qjs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxNQUl2QztJQUNDLE1BQU0sYUFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksYUFBSyxFQUFFLENBQUM7SUFFeEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDOUQsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0lBRTdCLElBQUksV0FBK0IsQ0FBQztJQUNwQyxJQUFJLFVBQThCLENBQUM7SUFDbkMsSUFBSSxZQUFnQyxDQUFDO0lBRXJDLEtBQUssTUFBTSxlQUFlLElBQUksZ0JBQWdCLEVBQUU7UUFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSx5QkFBaUIsQ0FDMUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFDNUMsZUFBZSxDQUFDLGlCQUFpQixFQUNqQyxlQUFlLENBQUMscUJBQXFCLENBQ3RDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBVztZQUNyQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xELENBQUMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUIsU0FBUyxFQUFFLFlBQVksQ0FBQyxLQUFLLENB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QUFDO0lBRXJILE9BQU87UUFDTCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDWCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDWCxXQUFXO1FBQ1gscUJBQXFCO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBOUJELHNDQThCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFZGRzYSwgeyBHU2hhcmUsIEpTaGFyZSwgS2V5U2hhcmUsIFBTaGFyZSwgUlNoYXJlLCBTaWduU2hhcmUsIFlTaGFyZSB9IGZyb20gJy4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLy4uLy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBEZWNyeXB0YWJsZVlTaGFyZSwgQ29tYmluZWRLZXksIFNpZ25pbmdNYXRlcmlhbCwgU2hhcmVLZXlQb3NpdGlvbiwgRW5jcnlwdGVkWVNoYXJlIH0gZnJvbSAnLi8uLi90eXBlcyc7XG5pbXBvcnQge1xuICBlbmNyeXB0QW5kU2lnblRleHQsXG4gIHJlYWRTaWduZWRNZXNzYWdlLFxuICBTaWduYXR1cmVTaGFyZVJlY29yZCxcbiAgU2lnbmF0dXJlU2hhcmVUeXBlLFxuICBUeFJlcXVlc3QsXG59IGZyb20gJy4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IF8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcblxuLyoqXG4gKiBDb21iaW5lcyBZU2hhcmVzIHRvIGNvbWJpbmUgdGhlIGZpbmFsIFRTUyBrZXlcbiAqIFRoaXMgY2FuIG9ubHkgYmUgdXNlZCB0byBjcmVhdGUgdGhlIFVzZXIgb3IgQmFja3VwIGtleSBzaW5jZSBpdCByZXF1aXJlcyB0aGUgY29tbW9uIGtleWNoYWluIGZyb20gQml0R28gZmlyc3RcbiAqXG4gKiBAcGFyYW0gcGFyYW1zLmtleVNoYXJlIC0gVFNTIGtleSBzaGFyZVxuICogQHBhcmFtIHBhcmFtcy5lbmNyeXB0ZWRZU2hhcmVzIC0gZW5jcnlwdGVkIFlTaGFyZXMgd2l0aCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZGVjcnlwdFxuICogQHBhcmFtIHBhcmFtcy5jb21tb25LZXljaGFpbiAtIGV4cGVjdGVkIGNvbW1vbiBrZXljaGFpbiBvZiB0aGUgY29tYmluZWQga2V5XG4gKiBAcmV0dXJucyB7Q29tYmluZWRLZXl9IGNvbWJpbmVkIFRTUyBrZXlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbWJpbmVkS2V5KHBhcmFtczoge1xuICBrZXlTaGFyZTogS2V5U2hhcmU7XG4gIGVuY3J5cHRlZFlTaGFyZXM6IERlY3J5cHRhYmxlWVNoYXJlW107XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG59KTogUHJvbWlzZTxDb21iaW5lZEtleT4ge1xuICBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG4gIGNvbnN0IE1QQyA9IG5ldyBFZGRzYSgpO1xuXG4gIGNvbnN0IHsga2V5U2hhcmUsIGVuY3J5cHRlZFlTaGFyZXMsIGNvbW1vbktleWNoYWluIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHlTaGFyZXM6IFlTaGFyZVtdID0gW107XG5cbiAgbGV0IGJpdGdvWVNoYXJlOiBZU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCB1c2VyWVNoYXJlOiBZU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCBiYWNrdXBZU2hhcmU6IFlTaGFyZSB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGVuY3J5cHRlZFlTaGFyZSBvZiBlbmNyeXB0ZWRZU2hhcmVzKSB7XG4gICAgY29uc3QgcHJpdmF0ZVNoYXJlID0gYXdhaXQgcmVhZFNpZ25lZE1lc3NhZ2UoXG4gICAgICBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICAgIGVuY3J5cHRlZFlTaGFyZS5zZW5kZXJQdWJsaWNBcm1vcixcbiAgICAgIGVuY3J5cHRlZFlTaGFyZS5yZWNpcGllbnRQcml2YXRlQXJtb3JcbiAgICApO1xuXG4gICAgY29uc3QgeVNoYXJlOiBZU2hhcmUgPSB7XG4gICAgICBpOiBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLmksXG4gICAgICBqOiBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLmosXG4gICAgICB5OiBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLnB1YmxpY1NoYXJlLnNsaWNlKDAsIDY0KSxcbiAgICAgIHU6IHByaXZhdGVTaGFyZS5zbGljZSgwLCA2NCksXG4gICAgICBjaGFpbmNvZGU6IHByaXZhdGVTaGFyZS5zbGljZSg2NCksXG4gICAgfTtcblxuICAgIHN3aXRjaCAoZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5qKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHVzZXJZU2hhcmUgPSB5U2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBiYWNrdXBZU2hhcmUgPSB5U2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBiaXRnb1lTaGFyZSA9IHlTaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgWVNoYXJlIGluZGV4Jyk7XG4gICAgfVxuXG4gICAgeVNoYXJlcy5wdXNoKHlTaGFyZSk7XG4gIH1cblxuICBjb25zdCBjb21iaW5lZEtleSA9IE1QQy5rZXlDb21iaW5lKGtleVNoYXJlLnVTaGFyZSwgeVNoYXJlcyk7XG4gIGlmIChjb21iaW5lZEtleS5wU2hhcmUueSArIGNvbWJpbmVkS2V5LnBTaGFyZS5jaGFpbmNvZGUgIT09IGNvbW1vbktleWNoYWluKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb21tb24ga2V5Y2hhaW5zIGRvIG5vdCBtYXRjaCcpO1xuICB9XG4gIGlmICghYml0Z29ZU2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28gWSBTaGFyZScpO1xuICB9XG5cbiAgY29uc3Qgc2lnbmluZ01hdGVyaWFsOiBTaWduaW5nTWF0ZXJpYWwgPSB7XG4gICAgdVNoYXJlOiBrZXlTaGFyZS51U2hhcmUsXG4gICAgYml0Z29ZU2hhcmUsXG4gICAgYmFja3VwWVNoYXJlLFxuICAgIHVzZXJZU2hhcmUsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzaWduaW5nTWF0ZXJpYWwsXG4gICAgY29tbW9uS2V5Y2hhaW4sXG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgVXNlciBTaWduIFNoYXJlIGNvbnRhaW5pbmcgdGhlIFVzZXIgWFNoYXJlIGFuZCB0aGUgVXNlciB0byBCaXRnbyBSU2hhcmVcbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gc2lnbmFibGVQYXlsb2FkIC0gdGhlIHNpZ25hYmxlUGF5bG9hZCBhcyBhIGJ1ZmZlclxuICogQHBhcmFtIHtQU2hhcmV9IHBTaGFyZSAtIFVzZXIncyBzaWduaW5nIG1hdGVyaWFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduU2hhcmU+fSAtIFVzZXIgU2lnbiBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclNpZ25TaGFyZShzaWduYWJsZVBheWxvYWQ6IEJ1ZmZlciwgcFNoYXJlOiBQU2hhcmUpOiBQcm9taXNlPFNpZ25TaGFyZT4ge1xuICBjb25zdCBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG5cbiAgaWYgKHBTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUFNoYXJlLCBQU2hhcmUgZG9lc250IGJlbG9uZyB0byB0aGUgVXNlcicpO1xuICB9XG4gIGNvbnN0IGpTaGFyZTogSlNoYXJlID0geyBpOiBTaGFyZUtleVBvc2l0aW9uLkJJVEdPLCBqOiBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfTtcbiAgcmV0dXJuIE1QQy5zaWduU2hhcmUoc2lnbmFibGVQYXlsb2FkLCBwU2hhcmUsIFtqU2hhcmVdKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBVc2VyIHRvIEJpdGdvIEdTaGFyZVxuICpcbiAqIEBwYXJhbSB7U2lnblNoYXJlfSB1c2VyU2lnblNoYXJlIC0gdGhlIFVzZXIgU2lnbiBTaGFyZVxuICogQHBhcmFtIHtTaWduYXR1cmVTaGFyZVJlY29yZH0gYml0Z29Ub1VzZXJSU2hhcmUgLSB0aGUgQml0Z28gdG8gVXNlciBSU2hhcmVcbiAqIEBwYXJhbSB7WVNoYXJlfSBiYWNrdXBUb1VzZXJZU2hhcmUgLSB0aGUgYmFja3VwIGtleSBZIHNoYXJlIHJlY2VpdmVkIGR1cmluZyB3YWxsZXQgY3JlYXRpb25cbiAqIEBwYXJhbSB7QnVmZmVyfSBzaWduYWJsZVBheWxvYWQgLSB0aGUgc2lnbmFibGUgcGF5bG9hZCBmcm9tIGEgdHhcbiAqIEByZXR1cm5zIHtQcm9taXNlPEdTaGFyZT59IC0gdGhlIFVzZXIgdG8gQml0Z28gR1NoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyVG9CaXRHb0dTaGFyZShcbiAgdXNlclNpZ25TaGFyZTogU2lnblNoYXJlLFxuICBiaXRnb1RvVXNlclJTaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQsXG4gIGJhY2t1cFRvVXNlcllTaGFyZTogWVNoYXJlLFxuICBiaXRnb1RvVXNlcllTaGFyZTogWVNoYXJlLFxuICBzaWduYWJsZVBheWxvYWQ6IEJ1ZmZlclxuKTogUHJvbWlzZTxHU2hhcmU+IHtcbiAgaWYgKHVzZXJTaWduU2hhcmUueFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBYU2hhcmUsIGRvZXNudCBiZWxvbmcgdG8gdGhlIFVzZXInKTtcbiAgfVxuICBpZiAoYml0Z29Ub1VzZXJSU2hhcmUuZnJvbSAhPT0gU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPIHx8IGJpdGdvVG9Vc2VyUlNoYXJlLnRvICE9PSBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSU2hhcmUsIGlzIG5vdCBmcm9tIEJpdGdvIHRvIFVzZXInKTtcbiAgfVxuICBpZiAoYmFja3VwVG9Vc2VyWVNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBZU2hhcmUsIGRvZXNudCBiZWxvbmcgdG8gdGhlIFVzZXInKTtcbiAgfVxuICBpZiAoYmFja3VwVG9Vc2VyWVNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQkFDS1VQKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFlTaGFyZSwgaXMgbm90IGJhY2t1cCBrZXknKTtcbiAgfVxuXG4gIGNvbnN0IFJTaGFyZTogUlNoYXJlID0ge1xuICAgIGk6IFNoYXJlS2V5UG9zaXRpb24uVVNFUixcbiAgICBqOiBTaGFyZUtleVBvc2l0aW9uLkJJVEdPLFxuICAgIHU6IGJpdGdvVG9Vc2VyWVNoYXJlLnUsXG4gICAgcjogYml0Z29Ub1VzZXJSU2hhcmUuc2hhcmUuc3Vic3RyaW5nKDAsIDY0KSxcbiAgICBSOiBiaXRnb1RvVXNlclJTaGFyZS5zaGFyZS5zdWJzdHJpbmcoNjQsIDEyOCksXG4gIH07XG5cbiAgY29uc3QgTVBDID0gYXdhaXQgRWRkc2EuaW5pdGlhbGl6ZSgpO1xuICByZXR1cm4gTVBDLnNpZ24oc2lnbmFibGVQYXlsb2FkLCB1c2VyU2lnblNoYXJlLnhTaGFyZSwgW1JTaGFyZV0sIFtiYWNrdXBUb1VzZXJZU2hhcmVdKTtcbn1cblxuLyoqXG4gKiBTZW5kcyB0aGUgVXNlciB0byBCaXRnbyBSU2hhcmUgdG8gQml0Z29cbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHBhcmFtIHtTaWduU2hhcmV9IHVzZXJTaWduU2hhcmUgLSB0aGUgdXNlciBTaWduIFNoYXJlXG4gKiBAcGFyYW0ge1N0cmluZ30gZW5jcnlwdGVkU2lnbmVyU2hhcmUgLSBzaWduZXIgc2hhcmUgZW5jcnlwdGVkIHRvIGJpdGdvIGtleVxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvZmZlclVzZXJUb0JpdGdvUlNoYXJlKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICB1c2VyU2lnblNoYXJlOiBTaWduU2hhcmUsXG4gIGVuY3J5cHRlZFNpZ25lclNoYXJlOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByU2hhcmU6IFJTaGFyZSA9IHVzZXJTaWduU2hhcmUuclNoYXJlc1tTaGFyZUtleVBvc2l0aW9uLkJJVEdPXTtcbiAgaWYgKF8uaXNOaWwoclNoYXJlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlclRvQml0Z28gUlNoYXJlIG5vdCBmb3VuZCcpO1xuICB9XG4gIGlmIChyU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTyB8fCByU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJTaGFyZSwgaXMgbm90IGZyb20gVXNlciB0byBCaXRnbycpO1xuICB9XG4gIGNvbnN0IHNpZ25hdHVyZVNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IHtcbiAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIHNoYXJlOiByU2hhcmUuciArIHJTaGFyZS5SLFxuICB9O1xuXG4gIGF3YWl0IHNlbmRTaWduYXR1cmVTaGFyZShiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkLCBzaWduYXR1cmVTaGFyZSwgZW5jcnlwdGVkU2lnbmVyU2hhcmUpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIEJpdGdvIHRvIFVzZXIgUlNoYXJlIGZyb20gQml0Z29cbiAqXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPn0gLSBhIFNpZ25hdHVyZSBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Qml0Z29Ub1VzZXJSU2hhcmUoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmdcbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+IHtcbiAgY29uc3QgdHhSZXF1ZXN0ID0gYXdhaXQgZ2V0VHhSZXF1ZXN0KGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQpO1xuICBjb25zdCBzaWduYXR1cmVTaGFyZXMgPSB0eFJlcXVlc3Quc2lnbmF0dXJlU2hhcmVzO1xuICBpZiAoXy5pc05pbChzaWduYXR1cmVTaGFyZXMpIHx8IF8uaXNFbXB0eShzaWduYXR1cmVTaGFyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBzaWduYXR1cmVzIHNoYXJlcyBmb3VuZCBmb3IgaWQ6ICR7dHhSZXF1ZXN0SWR9YCk7XG4gIH1cblxuICAvLyBhdCB0aGlzIHBvaW50IHdlIGV4cGVjdCB0aGUgb25seSBzaGFyZSB0byBiZSB0aGUgUlNoYXJlXG4gIGNvbnN0IGJpdGdvVG9Vc2VyUlNoYXJlID0gc2lnbmF0dXJlU2hhcmVzLmZpbmQoXG4gICAgKHNpZ1NoYXJlKSA9PiBzaWdTaGFyZS5mcm9tID09PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gJiYgc2lnU2hhcmUudG8gPT09IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSXG4gICk7XG4gIGlmIChfLmlzTmlsKGJpdGdvVG9Vc2VyUlNoYXJlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQml0Z28gdG8gVXNlciBSU2hhcmUgbm90IGZvdW5kIGZvciBpZDogJHt0eFJlcXVlc3RJZH1gKTtcbiAgfVxuICByZXR1cm4gYml0Z29Ub1VzZXJSU2hhcmU7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIFVzZXIgdG8gQml0Z28gR1NoYXJlIHRvIEJpdGdvXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge0dTaGFyZX0gdXNlclRvQml0Z29HU2hhcmUgLSB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFVzZXJUb0JpdGdvR1NoYXJlKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICB1c2VyVG9CaXRnb0dTaGFyZTogR1NoYXJlXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHVzZXJUb0JpdGdvR1NoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBHU2hhcmUsIGRvZXNudCBiZWxvbmcgdG8gdGhlIFVzZXInKTtcbiAgfVxuICBjb25zdCBzaWduYXR1cmVTaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQgPSB7XG4gICAgZnJvbTogU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIsXG4gICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICBzaGFyZTogdXNlclRvQml0Z29HU2hhcmUuUiArIHVzZXJUb0JpdGdvR1NoYXJlLmdhbW1hLFxuICB9O1xuXG4gIGF3YWl0IHNlbmRTaWduYXR1cmVTaGFyZShiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkLCBzaWduYXR1cmVTaGFyZSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGF0ZXN0IFR4IFJlcXVlc3QgYnkgaWRcbiAqXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFR4UmVxdWVzdD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUeFJlcXVlc3QoYml0Z286IEJpdEdvQmFzZSwgd2FsbGV0SWQ6IHN0cmluZywgdHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gIGNvbnN0IHR4UmVxdWVzdFJlcyA9IGF3YWl0IGJpdGdvXG4gICAgLmdldChiaXRnby51cmwoJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzJywgMikpXG4gICAgLnF1ZXJ5KHsgdHhSZXF1ZXN0SWRzOiB0eFJlcXVlc3RJZCwgbGF0ZXN0OiAndHJ1ZScgfSlcbiAgICAucmVzdWx0KCk7XG5cbiAgaWYgKHR4UmVxdWVzdFJlcy50eFJlcXVlc3RzLmxlbmd0aCA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCBUeFJlcXVlc3Qgd2l0aCBpZCAke3R4UmVxdWVzdElkfWApO1xuICB9XG5cbiAgcmV0dXJuIHR4UmVxdWVzdFJlcy50eFJlcXVlc3RzWzBdO1xufVxuXG4vKipcbiAqIFNlbmRzIGEgU2lnbmF0dXJlIFNoYXJlXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVNoYXJlUmVjb3JkfSBzaWduYXR1cmVTaGFyZSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD59IC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTaWduYXR1cmVTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgc2lnbmF0dXJlU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBzaWduZXJTaGFyZT86IHN0cmluZ1xuKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD4ge1xuICByZXR1cm4gYml0Z29cbiAgICAucG9zdChiaXRnby51cmwoJy93YWxsZXQvJyArIHdhbGxldElkICsgJy90eHJlcXVlc3RzLycgKyB0eFJlcXVlc3RJZCArICcvc2lnbmF0dXJlc2hhcmVzJywgMikpXG4gICAgLnNlbmQoe1xuICAgICAgc2lnbmF0dXJlU2hhcmUsXG4gICAgICBzaWduZXJTaGFyZSxcbiAgICB9KVxuICAgIC5yZXN1bHQoKTtcbn1cblxuLyoqXG4gKiBQcmVwYXJlcyBhIFlTaGFyZSB0byBiZSBleGNoYW5nZWQgd2l0aCBvdGhlciBrZXkgaG9sZGVycy5cbiAqIE91dHB1dCBpcyBpbiBhIGZvcm1hdCB0aGF0IGlzIHVzYWJsZSB3aXRoaW4gQml0R28ncyBlY29zeXN0ZW0uXG4gKlxuICogQHBhcmFtIHBhcmFtcy5rZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmUgb2YgdGhlIHBhcnR5IHByZXBhcmluZyBleGNoYW5nZSBtYXRlcmlhbHNcbiAqIEBwYXJhbSBwYXJhbXMucmVjaXBpZW50SW5kZXggLSBpbmRleCBvZiB0aGUgcmVjaXBpZW50ICgxLCAyLCBvciAzKVxuICogQHBhcmFtIHBhcmFtcy5yZWNpcGllbnRHcGdQdWJsaWNBcm1vciAtIHJlY2lwaWVudCdzIHB1YmxpYyBncGcga2V5IGluIGFybW9yIGZvcm1hdFxuICogQHBhcmFtIHBhcmFtcy5zZW5kZXJHcGdQcml2YXRlQXJtb3IgLSBzZW5kZXIncyBwcml2YXRlIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcmV0dXJucyB7IEVuY3J5cHRlZFlTaGFyZSB9IGVuY3J5cHRlZCBZIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0WVNoYXJlKHBhcmFtczoge1xuICBrZXlTaGFyZTogS2V5U2hhcmU7XG4gIHJlY2lwaWVudEluZGV4OiBudW1iZXI7XG4gIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yOiBzdHJpbmc7XG4gIHNlbmRlckdwZ1ByaXZhdGVBcm1vcjogc3RyaW5nO1xufSk6IFByb21pc2U8RW5jcnlwdGVkWVNoYXJlPiB7XG4gIGNvbnN0IHsga2V5U2hhcmUsIHJlY2lwaWVudEluZGV4LCByZWNpcGllbnRHcGdQdWJsaWNBcm1vciwgc2VuZGVyR3BnUHJpdmF0ZUFybW9yIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgeVNoYXJlID0ga2V5U2hhcmUueVNoYXJlc1tyZWNpcGllbnRJbmRleF07XG4gIGlmICgheVNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlY2lwaWVudCcpO1xuICB9XG5cbiAgY29uc3QgcHVibGljU2hhcmUgPSBCdWZmZXIuY29uY2F0KFtcbiAgICBCdWZmZXIuZnJvbShrZXlTaGFyZS51U2hhcmUueSwgJ2hleCcpLFxuICAgIEJ1ZmZlci5mcm9tKGtleVNoYXJlLnVTaGFyZS5jaGFpbmNvZGUsICdoZXgnKSxcbiAgXSkudG9TdHJpbmcoJ2hleCcpO1xuXG4gIGNvbnN0IHByaXZhdGVTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKHlTaGFyZS51LCAnaGV4JyksIEJ1ZmZlci5mcm9tKHlTaGFyZS5jaGFpbmNvZGUsICdoZXgnKV0pLnRvU3RyaW5nKFxuICAgICdoZXgnXG4gICk7XG5cbiAgY29uc3QgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlID0gYXdhaXQgZW5jcnlwdEFuZFNpZ25UZXh0KHByaXZhdGVTaGFyZSwgcmVjaXBpZW50R3BnUHVibGljQXJtb3IsIHNlbmRlckdwZ1ByaXZhdGVBcm1vcik7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiB5U2hhcmUuaSxcbiAgICBqOiB5U2hhcmUuaixcbiAgICBwdWJsaWNTaGFyZSxcbiAgICBlbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { createCombinedKey, createUserSignShare, createUserToBitGoGShare, offerUserToBitgoRShare, getBitgoToUserRShare, sendUserToBitgoGShare, getTxRequest, sendSignatureShare, encryptYShare, } from './eddsa';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/eddsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encryptYShare = exports.sendSignatureShare = exports.getTxRequest = exports.sendUserToBitgoGShare = exports.getBitgoToUserRShare = exports.offerUserToBitgoRShare = exports.createUserToBitGoGShare = exports.createUserSignShare = exports.createCombinedKey = void 0;
4
+ var eddsa_1 = require("./eddsa");
5
+ Object.defineProperty(exports, "createCombinedKey", { enumerable: true, get: function () { return eddsa_1.createCombinedKey; } });
6
+ Object.defineProperty(exports, "createUserSignShare", { enumerable: true, get: function () { return eddsa_1.createUserSignShare; } });
7
+ Object.defineProperty(exports, "createUserToBitGoGShare", { enumerable: true, get: function () { return eddsa_1.createUserToBitGoGShare; } });
8
+ Object.defineProperty(exports, "offerUserToBitgoRShare", { enumerable: true, get: function () { return eddsa_1.offerUserToBitgoRShare; } });
9
+ Object.defineProperty(exports, "getBitgoToUserRShare", { enumerable: true, get: function () { return eddsa_1.getBitgoToUserRShare; } });
10
+ Object.defineProperty(exports, "sendUserToBitgoGShare", { enumerable: true, get: function () { return eddsa_1.sendUserToBitgoGShare; } });
11
+ Object.defineProperty(exports, "getTxRequest", { enumerable: true, get: function () { return eddsa_1.getTxRequest; } });
12
+ Object.defineProperty(exports, "sendSignatureShare", { enumerable: true, get: function () { return eddsa_1.sendSignatureShare; } });
13
+ Object.defineProperty(exports, "encryptYShare", { enumerable: true, get: function () { return eddsa_1.encryptYShare; } });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VkZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQVVpQjtBQVRmLDBHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDRHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGdIQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLCtHQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDZHQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDhHQUFBLHFCQUFxQixPQUFBO0FBQ3JCLHFHQUFBLFlBQVksT0FBQTtBQUNaLDJHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLHNHQUFBLGFBQWEsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGNyZWF0ZUNvbWJpbmVkS2V5LFxuICBjcmVhdGVVc2VyU2lnblNoYXJlLFxuICBjcmVhdGVVc2VyVG9CaXRHb0dTaGFyZSxcbiAgb2ZmZXJVc2VyVG9CaXRnb1JTaGFyZSxcbiAgZ2V0Qml0Z29Ub1VzZXJSU2hhcmUsXG4gIHNlbmRVc2VyVG9CaXRnb0dTaGFyZSxcbiAgZ2V0VHhSZXF1ZXN0LFxuICBzZW5kU2lnbmF0dXJlU2hhcmUsXG4gIGVuY3J5cHRZU2hhcmUsXG59IGZyb20gJy4vZWRkc2EnO1xuIl19
@@ -0,0 +1,3 @@
1
+ export { EncryptedYShare, DecryptableYShare, CombinedKey, SigningMaterial, ShareKeyPosition } from './types';
2
+ export { createCombinedKey, createUserSignShare, createUserToBitGoGShare, offerUserToBitgoRShare, getBitgoToUserRShare, sendUserToBitgoGShare, getTxRequest, sendSignatureShare, encryptYShare, } from './eddsa';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/tss/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE7G,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encryptYShare = exports.sendSignatureShare = exports.getTxRequest = exports.sendUserToBitgoGShare = exports.getBitgoToUserRShare = exports.offerUserToBitgoRShare = exports.createUserToBitGoGShare = exports.createUserSignShare = exports.createCombinedKey = exports.ShareKeyPosition = void 0;
4
+ var types_1 = require("./types");
5
+ Object.defineProperty(exports, "ShareKeyPosition", { enumerable: true, get: function () { return types_1.ShareKeyPosition; } });
6
+ var eddsa_1 = require("./eddsa");
7
+ Object.defineProperty(exports, "createCombinedKey", { enumerable: true, get: function () { return eddsa_1.createCombinedKey; } });
8
+ Object.defineProperty(exports, "createUserSignShare", { enumerable: true, get: function () { return eddsa_1.createUserSignShare; } });
9
+ Object.defineProperty(exports, "createUserToBitGoGShare", { enumerable: true, get: function () { return eddsa_1.createUserToBitGoGShare; } });
10
+ Object.defineProperty(exports, "offerUserToBitgoRShare", { enumerable: true, get: function () { return eddsa_1.offerUserToBitgoRShare; } });
11
+ Object.defineProperty(exports, "getBitgoToUserRShare", { enumerable: true, get: function () { return eddsa_1.getBitgoToUserRShare; } });
12
+ Object.defineProperty(exports, "sendUserToBitgoGShare", { enumerable: true, get: function () { return eddsa_1.sendUserToBitgoGShare; } });
13
+ Object.defineProperty(exports, "getTxRequest", { enumerable: true, get: function () { return eddsa_1.getTxRequest; } });
14
+ Object.defineProperty(exports, "sendSignatureShare", { enumerable: true, get: function () { return eddsa_1.sendSignatureShare; } });
15
+ Object.defineProperty(exports, "encryptYShare", { enumerable: true, get: function () { return eddsa_1.encryptYShare; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUE2RztBQUFsQyx5R0FBQSxnQkFBZ0IsT0FBQTtBQUUzRixpQ0FVaUI7QUFUZiwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiw0R0FBQSxtQkFBbUIsT0FBQTtBQUNuQixnSEFBQSx1QkFBdUIsT0FBQTtBQUN2QiwrR0FBQSxzQkFBc0IsT0FBQTtBQUN0Qiw2R0FBQSxvQkFBb0IsT0FBQTtBQUNwQiw4R0FBQSxxQkFBcUIsT0FBQTtBQUNyQixxR0FBQSxZQUFZLE9BQUE7QUFDWiwyR0FBQSxrQkFBa0IsT0FBQTtBQUNsQixzR0FBQSxhQUFhLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBFbmNyeXB0ZWRZU2hhcmUsIERlY3J5cHRhYmxlWVNoYXJlLCBDb21iaW5lZEtleSwgU2lnbmluZ01hdGVyaWFsLCBTaGFyZUtleVBvc2l0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCB7XG4gIGNyZWF0ZUNvbWJpbmVkS2V5LFxuICBjcmVhdGVVc2VyU2lnblNoYXJlLFxuICBjcmVhdGVVc2VyVG9CaXRHb0dTaGFyZSxcbiAgb2ZmZXJVc2VyVG9CaXRnb1JTaGFyZSxcbiAgZ2V0Qml0Z29Ub1VzZXJSU2hhcmUsXG4gIHNlbmRVc2VyVG9CaXRnb0dTaGFyZSxcbiAgZ2V0VHhSZXF1ZXN0LFxuICBzZW5kU2lnbmF0dXJlU2hhcmUsXG4gIGVuY3J5cHRZU2hhcmUsXG59IGZyb20gJy4vZWRkc2EnO1xuIl19
@@ -0,0 +1,28 @@
1
+ import { UShare, YShare } from './../../account-lib/mpc/tss';
2
+ export declare type EncryptedYShare = {
3
+ i: number;
4
+ j: number;
5
+ publicShare: string;
6
+ encryptedPrivateShare: string;
7
+ };
8
+ export declare type DecryptableYShare = {
9
+ yShare: EncryptedYShare;
10
+ recipientPrivateArmor: string;
11
+ senderPublicArmor: string;
12
+ };
13
+ export declare type CombinedKey = {
14
+ commonKeychain: string;
15
+ signingMaterial: SigningMaterial;
16
+ };
17
+ export declare type SigningMaterial = {
18
+ uShare: UShare;
19
+ bitgoYShare: YShare;
20
+ backupYShare?: YShare;
21
+ userYShare?: YShare;
22
+ };
23
+ export declare enum ShareKeyPosition {
24
+ USER = 1,
25
+ BACKUP = 2,
26
+ BITGO = 3
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/tss/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAG7D,oBAAY,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAGF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAGF,oBAAY,WAAW,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAGF,oBAAY,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,IAAI,IAAI;IACR,MAAM,IAAI;IACV,KAAK,IAAI;CACV"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShareKeyPosition = void 0;
4
+ var ShareKeyPosition;
5
+ (function (ShareKeyPosition) {
6
+ ShareKeyPosition[ShareKeyPosition["USER"] = 1] = "USER";
7
+ ShareKeyPosition[ShareKeyPosition["BACKUP"] = 2] = "BACKUP";
8
+ ShareKeyPosition[ShareKeyPosition["BITGO"] = 3] = "BITGO";
9
+ })(ShareKeyPosition = exports.ShareKeyPosition || (exports.ShareKeyPosition = {}));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdDQSxJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIsdURBQVEsQ0FBQTtJQUNSLDJEQUFVLENBQUE7SUFDVix5REFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLGdCQUFnQixHQUFoQix3QkFBZ0IsS0FBaEIsd0JBQWdCLFFBSTNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVNoYXJlLCBZU2hhcmUgfSBmcm9tICcuLy4uLy4uL2FjY291bnQtbGliL21wYy90c3MnO1xuXG4vLyBZU2hhcmUgdGhhdCBoYXMgYmVlbiBlbmNyeXB0ZWQgYW5kIHNpZ25lZCB2aWEgR1BHXG5leHBvcnQgdHlwZSBFbmNyeXB0ZWRZU2hhcmUgPSB7XG4gIGk6IG51bWJlcjtcbiAgajogbnVtYmVyO1xuICBwdWJsaWNTaGFyZTogc3RyaW5nO1xuICAvLyBzaWduZWQgYW5kIGVuY3J5cHRlZCBncGcgYXJtb3JcbiAgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlOiBzdHJpbmc7XG59O1xuXG4vLyBZU2hhcmUgd2l0aCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZGVjcnlwdCBhbmQgdmVyaWZ5IGEgR1BHIG1lc2FzZ2VcbmV4cG9ydCB0eXBlIERlY3J5cHRhYmxlWVNoYXJlID0ge1xuICB5U2hhcmU6IEVuY3J5cHRlZFlTaGFyZTtcbiAgcmVjaXBpZW50UHJpdmF0ZUFybW9yOiBzdHJpbmc7XG4gIHNlbmRlclB1YmxpY0FybW9yOiBzdHJpbmc7XG59O1xuXG4vLyBGaW5hbCBUU1MgXCJLZXlwYWlyXCJcbmV4cG9ydCB0eXBlIENvbWJpbmVkS2V5ID0ge1xuICBjb21tb25LZXljaGFpbjogc3RyaW5nO1xuICBzaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbDtcbn07XG5cbi8vIFByaXZhdGUgcG9ydGlvbiBvZiBhIFRTUyBrZXksIHRoaXMgbXVzdCBiZSBoYW5kbGVkIGxpa2UgYW55IG90aGVyIHByaXZhdGUga2V5XG5leHBvcnQgdHlwZSBTaWduaW5nTWF0ZXJpYWwgPSB7XG4gIHVTaGFyZTogVVNoYXJlO1xuICBiaXRnb1lTaGFyZTogWVNoYXJlO1xuICBiYWNrdXBZU2hhcmU/OiBZU2hhcmU7XG4gIHVzZXJZU2hhcmU/OiBZU2hhcmU7XG59O1xuXG5leHBvcnQgZW51bSBTaGFyZUtleVBvc2l0aW9uIHtcbiAgVVNFUiA9IDEsXG4gIEJBQ0tVUCA9IDIsXG4gIEJJVEdPID0gMyxcbn1cbiJdfQ==