@bitgo-beta/sdk-lib-mpc 8.2.0-beta.200 → 8.2.0-beta.2000

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 (108) hide show
  1. package/dist/src/curves/ed25519.d.ts +0 -1
  2. package/dist/src/curves/ed25519.d.ts.map +1 -1
  3. package/dist/src/curves/ed25519.js +12 -12
  4. package/dist/src/curves/ed25519Bip32HdTree.js +14 -14
  5. package/dist/src/curves/index.js +6 -2
  6. package/dist/src/curves/secp256k1.d.ts +0 -1
  7. package/dist/src/curves/secp256k1.d.ts.map +1 -1
  8. package/dist/src/curves/secp256k1.js +22 -38
  9. package/dist/src/curves/secp256k1Bip32HdTree.js +10 -10
  10. package/dist/src/curves/types.d.ts +2 -3
  11. package/dist/src/curves/types.d.ts.map +1 -1
  12. package/dist/src/curves/util.d.ts +2 -0
  13. package/dist/src/curves/util.d.ts.map +1 -1
  14. package/dist/src/curves/util.js +34 -3
  15. package/dist/src/hashCommitment.d.ts +0 -1
  16. package/dist/src/hashCommitment.d.ts.map +1 -1
  17. package/dist/src/hashCommitment.js +7 -8
  18. package/dist/src/index.d.ts +1 -1
  19. package/dist/src/index.d.ts.map +1 -1
  20. package/dist/src/index.js +24 -10
  21. package/dist/src/openssl/index.js +6 -2
  22. package/dist/src/openssl/openssl.d.ts +1 -2
  23. package/dist/src/openssl/openssl.d.ts.map +1 -1
  24. package/dist/src/openssl/openssl.js +4 -12
  25. package/dist/src/safePrime.d.ts +3 -0
  26. package/dist/src/safePrime.d.ts.map +1 -0
  27. package/dist/src/safePrime.js +19 -0
  28. package/dist/src/schnorrProof.d.ts +0 -1
  29. package/dist/src/schnorrProof.d.ts.map +1 -1
  30. package/dist/src/schnorrProof.js +8 -9
  31. package/dist/src/shamir/index.js +6 -2
  32. package/dist/src/shamir/shamir.js +2 -2
  33. package/dist/src/shamir/types.d.ts +1 -1
  34. package/dist/src/shamir/types.d.ts.map +1 -1
  35. package/dist/src/tss/ecdsa/index.js +23 -9
  36. package/dist/src/tss/ecdsa/paillierproof.js +10 -10
  37. package/dist/src/tss/ecdsa/rangeproof.d.ts +1 -2
  38. package/dist/src/tss/ecdsa/rangeproof.d.ts.map +1 -1
  39. package/dist/src/tss/ecdsa/rangeproof.js +108 -118
  40. package/dist/src/tss/ecdsa/types.d.ts +28 -17
  41. package/dist/src/tss/ecdsa/types.d.ts.map +1 -1
  42. package/dist/src/tss/ecdsa/types.js +29 -31
  43. package/dist/src/tss/ecdsa/zkVProof.d.ts +0 -1
  44. package/dist/src/tss/ecdsa/zkVProof.d.ts.map +1 -1
  45. package/dist/src/tss/ecdsa/zkVProof.js +9 -10
  46. package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts +69 -0
  47. package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts.map +1 -0
  48. package/dist/src/tss/ecdsa-dkls/commsLayer.js +268 -0
  49. package/dist/src/tss/ecdsa-dkls/dkg.d.ts +62 -0
  50. package/dist/src/tss/ecdsa-dkls/dkg.d.ts.map +1 -0
  51. package/dist/src/tss/ecdsa-dkls/dkg.js +334 -0
  52. package/dist/src/tss/ecdsa-dkls/dsg.d.ts +47 -0
  53. package/dist/src/tss/ecdsa-dkls/dsg.d.ts.map +1 -0
  54. package/dist/src/tss/ecdsa-dkls/dsg.js +271 -0
  55. package/dist/src/tss/ecdsa-dkls/index.d.ts +6 -0
  56. package/dist/src/tss/ecdsa-dkls/index.d.ts.map +1 -0
  57. package/dist/src/tss/ecdsa-dkls/index.js +42 -0
  58. package/dist/src/tss/ecdsa-dkls/types.d.ts +128 -0
  59. package/dist/src/tss/ecdsa-dkls/types.d.ts.map +1 -0
  60. package/dist/src/tss/ecdsa-dkls/types.js +175 -0
  61. package/dist/src/tss/ecdsa-dkls/util.d.ts +26 -0
  62. package/dist/src/tss/ecdsa-dkls/util.d.ts.map +1 -0
  63. package/dist/src/tss/ecdsa-dkls/util.js +276 -0
  64. package/dist/src/tss/eddsa-mps/commsLayer.d.ts +30 -0
  65. package/dist/src/tss/eddsa-mps/commsLayer.d.ts.map +1 -0
  66. package/dist/src/tss/eddsa-mps/commsLayer.js +96 -0
  67. package/dist/src/tss/eddsa-mps/dkg.d.ts +106 -0
  68. package/dist/src/tss/eddsa-mps/dkg.d.ts.map +1 -0
  69. package/dist/src/tss/eddsa-mps/dkg.js +303 -0
  70. package/dist/src/tss/eddsa-mps/dsg.d.ts +96 -0
  71. package/dist/src/tss/eddsa-mps/dsg.d.ts.map +1 -0
  72. package/dist/src/tss/eddsa-mps/dsg.js +346 -0
  73. package/dist/src/tss/eddsa-mps/index.d.ts +7 -0
  74. package/dist/src/tss/eddsa-mps/index.d.ts.map +1 -0
  75. package/dist/src/tss/eddsa-mps/index.js +42 -0
  76. package/dist/src/tss/eddsa-mps/types.d.ts +76 -0
  77. package/dist/src/tss/eddsa-mps/types.d.ts.map +1 -0
  78. package/dist/src/tss/eddsa-mps/types.js +105 -0
  79. package/dist/src/tss/eddsa-mps/util.d.ts +33 -0
  80. package/dist/src/tss/eddsa-mps/util.d.ts.map +1 -0
  81. package/dist/src/tss/eddsa-mps/util.js +94 -0
  82. package/dist/src/tss/index.d.ts +3 -0
  83. package/dist/src/tss/index.d.ts.map +1 -1
  84. package/dist/src/tss/index.js +9 -2
  85. package/dist/src/tss/redpallas-mps/dkg.d.ts +105 -0
  86. package/dist/src/tss/redpallas-mps/dkg.d.ts.map +1 -0
  87. package/dist/src/tss/redpallas-mps/dkg.js +290 -0
  88. package/dist/src/tss/redpallas-mps/index.d.ts +4 -0
  89. package/dist/src/tss/redpallas-mps/index.d.ts.map +1 -0
  90. package/dist/src/tss/redpallas-mps/index.js +40 -0
  91. package/dist/src/tss/redpallas-mps/types.d.ts +40 -0
  92. package/dist/src/tss/redpallas-mps/types.d.ts.map +1 -0
  93. package/dist/src/tss/redpallas-mps/types.js +89 -0
  94. package/dist/src/tss/redpallas-mps/util.d.ts +18 -0
  95. package/dist/src/tss/redpallas-mps/util.d.ts.map +1 -0
  96. package/dist/src/tss/redpallas-mps/util.js +56 -0
  97. package/dist/src/types.d.ts +0 -1
  98. package/dist/src/types.d.ts.map +1 -1
  99. package/dist/src/util.d.ts +0 -1
  100. package/dist/src/util.d.ts.map +1 -1
  101. package/dist/src/util.js +21 -22
  102. package/dist/tsconfig.tsbuildinfo +1 -1
  103. package/package.json +28 -5
  104. package/.eslintignore +0 -5
  105. package/CHANGELOG.md +0 -324
  106. package/dist/src/openssl/opensslbytes.d.ts +0 -4
  107. package/dist/src/openssl/opensslbytes.d.ts.map +0 -1
  108. package/dist/src/openssl/opensslbytes.js +0 -20
@@ -0,0 +1,271 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Dsg = void 0;
37
+ const types_1 = require("./types");
38
+ const cbor_x_1 = require("cbor-x");
39
+ class Dsg {
40
+ constructor(keyShare, partyIdx, derivationPath, messageHash, dklsWasm) {
41
+ this.dsgState = types_1.DsgState.Uninitialized;
42
+ this.partyIdx = partyIdx;
43
+ this.keyShareBytes = keyShare;
44
+ this.derivationPath = derivationPath;
45
+ this.messageHash = messageHash;
46
+ this.dklsWasm = dklsWasm ?? null;
47
+ }
48
+ _restoreSession() {
49
+ if (!this.dsgSession) {
50
+ this.dsgSession = this.getDklsWasm().SignSessionOTVariant.fromBytes(this.dsgSessionBytes);
51
+ }
52
+ }
53
+ _deserializeState() {
54
+ if (!this.dsgSession) {
55
+ throw Error('Session not intialized');
56
+ }
57
+ const round = (0, cbor_x_1.decode)(this.dsgSession.toBytes()).round;
58
+ if (round === 'WaitMsg1') {
59
+ this.dsgState = types_1.DsgState.Round1;
60
+ }
61
+ else if (round === 'WaitMsg2') {
62
+ this.dsgState = types_1.DsgState.Round2;
63
+ }
64
+ else if (round === 'WaitMsg3') {
65
+ this.dsgState = types_1.DsgState.Round3;
66
+ }
67
+ else if (typeof round === 'object' && 'WaitMsg4' in round) {
68
+ this.dsgState = types_1.DsgState.Round4;
69
+ }
70
+ else if (round === 'Ended') {
71
+ this.dsgState = types_1.DsgState.Complete;
72
+ }
73
+ else {
74
+ this.dsgState = types_1.DsgState.InvalidState;
75
+ throw Error(`Invalid State: ${round}`);
76
+ }
77
+ }
78
+ async loadDklsWasm() {
79
+ if (!this.dklsWasm) {
80
+ this.dklsWasm = await Promise.resolve().then(() => __importStar(require('@silencelaboratories/dkls-wasm-ll-node')));
81
+ }
82
+ }
83
+ getDklsWasm() {
84
+ if (!this.dklsWasm) {
85
+ throw Error('DKLS wasm not loaded');
86
+ }
87
+ return this.dklsWasm;
88
+ }
89
+ /**
90
+ * Returns the current DSG session as a base64 string.
91
+ * @returns {string} - base64 string of the current DSG session
92
+ */
93
+ getSession() {
94
+ return Buffer.from(this.dsgSessionBytes).toString('base64');
95
+ }
96
+ /**
97
+ * Sets the DSG session from a base64 string.
98
+ * @param {string} session - base64 string of the DSG session
99
+ */
100
+ async setSession(session) {
101
+ this.dsgSession = undefined;
102
+ if (!this.dklsWasm) {
103
+ await this.loadDklsWasm();
104
+ }
105
+ const sessionBytes = new Uint8Array(Buffer.from(session, 'base64'));
106
+ const round = (0, cbor_x_1.decode)(sessionBytes).round;
107
+ switch (true) {
108
+ case round === 'WaitMsg1':
109
+ this.dsgState = types_1.DsgState.Round1;
110
+ break;
111
+ case round === 'WaitMsg2':
112
+ this.dsgState = types_1.DsgState.Round2;
113
+ break;
114
+ case round === 'WaitMsg3':
115
+ this.dsgState = types_1.DsgState.Round3;
116
+ break;
117
+ case 'WaitMsg4' in round:
118
+ this.dsgState = types_1.DsgState.Round4;
119
+ break;
120
+ default:
121
+ throw Error(`Invalid State: ${round}`);
122
+ }
123
+ this.dsgSessionBytes = sessionBytes;
124
+ }
125
+ async init() {
126
+ if (this.dsgState !== types_1.DsgState.Uninitialized) {
127
+ throw Error('DSG session already initialized');
128
+ }
129
+ if (this.messageHash.length !== 32) {
130
+ throw Error(`Invalid messageHash length: expected 32 bytes (SHA-256), got ${this.messageHash.length}`);
131
+ }
132
+ if (!this.dklsWasm) {
133
+ await this.loadDklsWasm();
134
+ }
135
+ if (typeof window !== 'undefined' &&
136
+ /* checks for electron processes */
137
+ !window.process &&
138
+ !window.process?.['type']) {
139
+ /* This is only needed for browsers/web because it uses fetch to resolve the wasm asset for the web */
140
+ const initDkls = await Promise.resolve().then(() => __importStar(require('@silencelaboratories/dkls-wasm-ll-web')));
141
+ await initDkls.default();
142
+ }
143
+ const { Keyshare, SignSessionOTVariant } = this.getDklsWasm();
144
+ const keyShare = Keyshare.fromBytes(this.keyShareBytes);
145
+ if (keyShare.partyId !== this.partyIdx) {
146
+ throw Error(`Party index: ${this.partyIdx} does not match key share partyId: ${keyShare.partyId} `);
147
+ }
148
+ this.dsgSession = new SignSessionOTVariant(keyShare, this.derivationPath);
149
+ try {
150
+ const payload = this.dsgSession.createFirstMessage().payload;
151
+ this._deserializeState();
152
+ this.dsgSessionBytes = this.dsgSession.toBytes();
153
+ this.dsgSession = undefined;
154
+ return {
155
+ payload: payload,
156
+ from: this.partyIdx,
157
+ };
158
+ }
159
+ catch (e) {
160
+ throw Error(`Error while creating the first message from party ${this.partyIdx}: ${e}`);
161
+ }
162
+ }
163
+ get signature() {
164
+ if (!this._signature) {
165
+ throw Error('Can not request signature. Signature not produced yet.');
166
+ }
167
+ return this._signature;
168
+ }
169
+ /**
170
+ * Ends the DSG session by freeing any heap allocations from wasm. Note that the session is freed if a signature is produced.
171
+ */
172
+ endSession() {
173
+ if (this._signature) {
174
+ throw new Error('Session already ended because combined signature was produced.');
175
+ }
176
+ if (this.dsgSession) {
177
+ this.dsgSession.free();
178
+ }
179
+ this.dsgState = types_1.DsgState.Uninitialized;
180
+ }
181
+ /**
182
+ * Proccesses incoming messages to this party in the DKLs DSG protocol and
183
+ * produces messages from this party to other parties for the next round.
184
+ * @param messagesForIthRound - messages to process the current round
185
+ * @returns {DeserializedMessages} - messages to send to other parties for the next round
186
+ */
187
+ handleIncomingMessages(messagesForIthRound) {
188
+ let nextRoundMessages = [];
189
+ let nextRoundDeserializedMessages = { broadcastMessages: [], p2pMessages: [] };
190
+ this._restoreSession();
191
+ if (!this.dsgSession) {
192
+ throw Error('Session not initialized');
193
+ }
194
+ const { Message } = this.getDklsWasm();
195
+ try {
196
+ if (this.dsgState === types_1.DsgState.Round4) {
197
+ this.dsgState = types_1.DsgState.Complete;
198
+ const combineResult = this.dsgSession.combine(messagesForIthRound.broadcastMessages.map((m) => new Message(m.payload, m.from, undefined)));
199
+ this._signature = {
200
+ R: combineResult[0],
201
+ S: combineResult[1],
202
+ };
203
+ return { broadcastMessages: [], p2pMessages: [] };
204
+ }
205
+ else {
206
+ nextRoundMessages = this.dsgSession.handleMessages(messagesForIthRound.broadcastMessages
207
+ .map((m) => new Message(m.payload, m.from, undefined))
208
+ .concat(messagesForIthRound.p2pMessages.map((m) => new Message(m.payload, m.from, m.to))));
209
+ }
210
+ if (this.dsgState === types_1.DsgState.Round3) {
211
+ nextRoundMessages = [this.dsgSession.lastMessage(this.messageHash)];
212
+ this.dsgState = types_1.DsgState.Round4;
213
+ return {
214
+ broadcastMessages: [
215
+ {
216
+ payload: nextRoundMessages[0].payload,
217
+ from: nextRoundMessages[0].from_id,
218
+ signatureR: (0, cbor_x_1.decode)(this.dsgSession.toBytes()).round.WaitMsg4.r,
219
+ },
220
+ ],
221
+ p2pMessages: [],
222
+ };
223
+ }
224
+ else {
225
+ // Update round data.
226
+ this._deserializeState();
227
+ }
228
+ nextRoundDeserializedMessages = {
229
+ p2pMessages: nextRoundMessages
230
+ .filter((m) => m.to_id !== undefined)
231
+ .map((m) => {
232
+ if (m.to_id === undefined) {
233
+ throw Error('Invalid P2P message, missing to_id.');
234
+ }
235
+ const p2pReturn = {
236
+ payload: m.payload,
237
+ from: m.from_id,
238
+ to: m.to_id,
239
+ };
240
+ return p2pReturn;
241
+ }),
242
+ broadcastMessages: nextRoundMessages
243
+ .filter((m) => m.to_id === undefined)
244
+ .map((m) => {
245
+ const broadcastReturn = {
246
+ payload: m.payload,
247
+ from: m.from_id,
248
+ };
249
+ return broadcastReturn;
250
+ }),
251
+ };
252
+ }
253
+ catch (e) {
254
+ if (e.message.startsWith('Abort the protocol and ban')) {
255
+ throw Error('Signing aborted. Please stop all transaction signing from this wallet and contact support@bitgo.com.');
256
+ }
257
+ throw Error(`Error while creating messages from party ${this.partyIdx}, round ${this.dsgState}: ${e}`);
258
+ }
259
+ finally {
260
+ nextRoundMessages.forEach((m) => m.free());
261
+ // Session is freed when combine is called.
262
+ if (this.dsgState !== types_1.DsgState.Complete) {
263
+ this.dsgSessionBytes = this.dsgSession.toBytes();
264
+ this.dsgSession = undefined;
265
+ }
266
+ }
267
+ return nextRoundDeserializedMessages;
268
+ }
269
+ }
270
+ exports.Dsg = Dsg;
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHNnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rzcy9lY2RzYS1ka2xzL2RzZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxtQ0FBa0g7QUFDbEgsbUNBQWdDO0FBUWhDLE1BQWEsR0FBRztJQVdkLFlBQ0UsUUFBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsV0FBbUIsRUFDbkIsUUFBd0I7UUFSaEIsYUFBUSxHQUFhLGdCQUFRLENBQUMsYUFBYSxDQUFDO1FBVXBELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUYsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixNQUFNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQU0sRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RELElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLElB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USxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyw2QkFBNkIsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUE5UEQsa0JBOFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZSwgU2lnblNlc3Npb25PVFZhcmlhbnQgfSBmcm9tICdAc2lsZW5jZWxhYm9yYXRvcmllcy9ka2xzLXdhc20tbGwtbm9kZSc7XG5pbXBvcnQgeyBEZXNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlLCBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlLCBEZXNlcmlhbGl6ZWRNZXNzYWdlcywgRHNnU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ2Nib3IteCc7XG5cbnR5cGUgTm9kZVdhc21lciA9IHR5cGVvZiBpbXBvcnQoJ0BzaWxlbmNlbGFib3JhdG9yaWVzL2RrbHMtd2FzbS1sbC1ub2RlJyk7XG50eXBlIFdlYldhc21lciA9IHR5cGVvZiBpbXBvcnQoJ0BzaWxlbmNlbGFib3JhdG9yaWVzL2RrbHMtd2FzbS1sbC13ZWInKTtcbnR5cGUgQnVuZGxlcldhc21lciA9IHR5cGVvZiBpbXBvcnQoJ0BzaWxlbmNlbGFib3JhdG9yaWVzL2RrbHMtd2FzbS1sbC1idW5kbGVyJyk7XG5cbnR5cGUgRGtsc1dhc20gPSBOb2RlV2FzbWVyIHwgV2ViV2FzbWVyIHwgQnVuZGxlcldhc21lcjtcblxuZXhwb3J0IGNsYXNzIERzZyB7XG4gIHByb3RlY3RlZCBkc2dTZXNzaW9uOiBTaWduU2Vzc2lvbk9UVmFyaWFudCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGRzZ1Nlc3Npb25CeXRlczogVWludDhBcnJheTtcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlOiBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQga2V5U2hhcmVCeXRlczogQnVmZmVyO1xuICBwcm90ZWN0ZWQgbWVzc2FnZUhhc2g6IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIGRlcml2YXRpb25QYXRoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBwYXJ0eUlkeDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZHNnU3RhdGU6IERzZ1N0YXRlID0gRHNnU3RhdGUuVW5pbml0aWFsaXplZDtcbiAgcHJvdGVjdGVkIGRrbHNXYXNtOiBEa2xzV2FzbSB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAga2V5U2hhcmU6IEJ1ZmZlcixcbiAgICBwYXJ0eUlkeDogbnVtYmVyLFxuICAgIGRlcml2YXRpb25QYXRoOiBzdHJpbmcsXG4gICAgbWVzc2FnZUhhc2g6IEJ1ZmZlcixcbiAgICBka2xzV2FzbT86IEJ1bmRsZXJXYXNtZXJcbiAgKSB7XG4gICAgdGhpcy5wYXJ0eUlkeCA9IHBhcnR5SWR4O1xuICAgIHRoaXMua2V5U2hhcmVCeXRlcyA9IGtleVNoYXJlO1xuICAgIHRoaXMuZGVyaXZhdGlvblBhdGggPSBkZXJpdmF0aW9uUGF0aDtcbiAgICB0aGlzLm1lc3NhZ2VIYXNoID0gbWVzc2FnZUhhc2g7XG4gICAgdGhpcy5ka2xzV2FzbSA9IGRrbHNXYXNtID8/IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9yZXN0b3JlU2Vzc2lvbigpIHtcbiAgICBpZiAoIXRoaXMuZHNnU2Vzc2lvbikge1xuICAgICAgdGhpcy5kc2dTZXNzaW9uID0gdGhpcy5nZXREa2xzV2FzbSgpLlNpZ25TZXNzaW9uT1RWYXJpYW50LmZyb21CeXRlcyh0aGlzLmRzZ1Nlc3Npb25CeXRlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzZXJpYWxpemVTdGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuZHNnU2Vzc2lvbikge1xuICAgICAgdGhyb3cgRXJyb3IoJ1Nlc3Npb24gbm90IGludGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgY29uc3Qgcm91bmQgPSBkZWNvZGUodGhpcy5kc2dTZXNzaW9uLnRvQnl0ZXMoKSkucm91bmQ7XG4gICAgaWYgKHJvdW5kID09PSAnV2FpdE1zZzEnKSB7XG4gICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuUm91bmQxO1xuICAgIH0gZWxzZSBpZiAocm91bmQgPT09ICdXYWl0TXNnMicpIHtcbiAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5Sb3VuZDI7XG4gICAgfSBlbHNlIGlmIChyb3VuZCA9PT0gJ1dhaXRNc2czJykge1xuICAgICAgdGhpcy5kc2dTdGF0ZSA9IERzZ1N0YXRlLlJvdW5kMztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByb3VuZCA9PT0gJ29iamVjdCcgJiYgJ1dhaXRNc2c0JyBpbiByb3VuZCkge1xuICAgICAgdGhpcy5kc2dTdGF0ZSA9IERzZ1N0YXRlLlJvdW5kNDtcbiAgICB9IGVsc2UgaWYgKHJvdW5kID09PSAnRW5kZWQnKSB7XG4gICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuQ29tcGxldGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5JbnZhbGlkU3RhdGU7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBTdGF0ZTogJHtyb3VuZH1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWREa2xzV2FzbSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZGtsc1dhc20pIHtcbiAgICAgIHRoaXMuZGtsc1dhc20gPSBhd2FpdCBpbXBvcnQoJ0BzaWxlbmNlbGFib3JhdG9yaWVzL2RrbHMtd2FzbS1sbC1ub2RlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREa2xzV2FzbSgpIHtcbiAgICBpZiAoIXRoaXMuZGtsc1dhc20pIHtcbiAgICAgIHRocm93IEVycm9yKCdES0xTIHdhc20gbm90IGxvYWRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRrbHNXYXNtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgRFNHIHNlc3Npb24gYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIGJhc2U2NCBzdHJpbmcgb2YgdGhlIGN1cnJlbnQgRFNHIHNlc3Npb25cbiAgICovXG4gIGdldFNlc3Npb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5kc2dTZXNzaW9uQnl0ZXMpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBEU0cgc2Vzc2lvbiBmcm9tIGEgYmFzZTY0IHN0cmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlc3Npb24gLSBiYXNlNjQgc3RyaW5nIG9mIHRoZSBEU0cgc2Vzc2lvblxuICAgKi9cbiAgYXN5bmMgc2V0U2Vzc2lvbihzZXNzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmRzZ1Nlc3Npb24gPSB1bmRlZmluZWQ7XG4gICAgaWYgKCF0aGlzLmRrbHNXYXNtKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWREa2xzV2FzbSgpO1xuICAgIH1cbiAgICBjb25zdCBzZXNzaW9uQnl0ZXMgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShzZXNzaW9uLCAnYmFzZTY0JykpO1xuICAgIGNvbnN0IHJvdW5kID0gZGVjb2RlKHNlc3Npb25CeXRlcykucm91bmQ7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHJvdW5kID09PSAnV2FpdE1zZzEnOlxuICAgICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuUm91bmQxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugcm91bmQgPT09ICdXYWl0TXNnMic6XG4gICAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5Sb3VuZDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSByb3VuZCA9PT0gJ1dhaXRNc2czJzpcbiAgICAgICAgdGhpcy5kc2dTdGF0ZSA9IERzZ1N0YXRlLlJvdW5kMztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXYWl0TXNnNCcgaW4gcm91bmQ6XG4gICAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5Sb3VuZDQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgU3RhdGU6ICR7cm91bmR9YCk7XG4gICAgfVxuICAgIHRoaXMuZHNnU2Vzc2lvbkJ5dGVzID0gc2Vzc2lvbkJ5dGVzO1xuICB9XG5cbiAgYXN5bmMgaW5pdCgpOiBQcm9taXNlPERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2U+IHtcbiAgICBpZiAodGhpcy5kc2dTdGF0ZSAhPT0gRHNnU3RhdGUuVW5pbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RTRyBzZXNzaW9uIGFscmVhZHkgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWVzc2FnZUhhc2gubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgbWVzc2FnZUhhc2ggbGVuZ3RoOiBleHBlY3RlZCAzMiBieXRlcyAoU0hBLTI1NiksIGdvdCAke3RoaXMubWVzc2FnZUhhc2gubGVuZ3RofWApO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZGtsc1dhc20pIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZERrbHNXYXNtKCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAvKiBjaGVja3MgZm9yIGVsZWN0cm9uIHByb2Nlc3NlcyAqL1xuICAgICAgIXdpbmRvdy5wcm9jZXNzICYmXG4gICAgICAhd2luZG93LnByb2Nlc3M/LlsndHlwZSddXG4gICAgKSB7XG4gICAgICAvKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBicm93c2Vycy93ZWIgYmVjYXVzZSBpdCB1c2VzIGZldGNoIHRvIHJlc29sdmUgdGhlIHdhc20gYXNzZXQgZm9yIHRoZSB3ZWIgKi9cbiAgICAgIGNvbnN0IGluaXREa2xzID0gYXdhaXQgaW1wb3J0KCdAc2lsZW5jZWxhYm9yYXRvcmllcy9ka2xzLXdhc20tbGwtd2ViJyk7XG4gICAgICBhd2FpdCBpbml0RGtscy5kZWZhdWx0KCk7XG4gICAgfVxuICAgIGNvbnN0IHsgS2V5c2hhcmUsIFNpZ25TZXNzaW9uT1RWYXJpYW50IH0gPSB0aGlzLmdldERrbHNXYXNtKCk7XG4gICAgY29uc3Qga2V5U2hhcmUgPSBLZXlzaGFyZS5mcm9tQnl0ZXModGhpcy5rZXlTaGFyZUJ5dGVzKTtcbiAgICBpZiAoa2V5U2hhcmUucGFydHlJZCAhPT0gdGhpcy5wYXJ0eUlkeCkge1xuICAgICAgdGhyb3cgRXJyb3IoYFBhcnR5IGluZGV4OiAke3RoaXMucGFydHlJZHh9IGRvZXMgbm90IG1hdGNoIGtleSBzaGFyZSBwYXJ0eUlkOiAke2tleVNoYXJlLnBhcnR5SWR9IGApO1xuICAgIH1cbiAgICB0aGlzLmRzZ1Nlc3Npb24gPSBuZXcgU2lnblNlc3Npb25PVFZhcmlhbnQoa2V5U2hhcmUsIHRoaXMuZGVyaXZhdGlvblBhdGgpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5kc2dTZXNzaW9uLmNyZWF0ZUZpcnN0TWVzc2FnZSgpLnBheWxvYWQ7XG4gICAgICB0aGlzLl9kZXNlcmlhbGl6ZVN0YXRlKCk7XG4gICAgICB0aGlzLmRzZ1Nlc3Npb25CeXRlcyA9IHRoaXMuZHNnU2Vzc2lvbi50b0J5dGVzKCk7XG4gICAgICB0aGlzLmRzZ1Nlc3Npb24gPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICBmcm9tOiB0aGlzLnBhcnR5SWR4LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBFcnJvcihgRXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIGZpcnN0IG1lc3NhZ2UgZnJvbSBwYXJ0eSAke3RoaXMucGFydHlJZHh9OiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNpZ25hdHVyZSgpOiBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlIHtcbiAgICBpZiAoIXRoaXMuX3NpZ25hdHVyZSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0NhbiBub3QgcmVxdWVzdCBzaWduYXR1cmUuIFNpZ25hdHVyZSBub3QgcHJvZHVjZWQgeWV0LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuZHMgdGhlIERTRyBzZXNzaW9uIGJ5IGZyZWVpbmcgYW55IGhlYXAgYWxsb2NhdGlvbnMgZnJvbSB3YXNtLiBOb3RlIHRoYXQgdGhlIHNlc3Npb24gaXMgZnJlZWQgaWYgYSBzaWduYXR1cmUgaXMgcHJvZHVjZWQuXG4gICAqL1xuICBlbmRTZXNzaW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zaWduYXR1cmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvbiBhbHJlYWR5IGVuZGVkIGJlY2F1c2UgY29tYmluZWQgc2lnbmF0dXJlIHdhcyBwcm9kdWNlZC4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHNnU2Vzc2lvbikge1xuICAgICAgdGhpcy5kc2dTZXNzaW9uLmZyZWUoKTtcbiAgICB9XG4gICAgdGhpcy5kc2dTdGF0ZSA9IERzZ1N0YXRlLlVuaW5pdGlhbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Nlc3NlcyBpbmNvbWluZyBtZXNzYWdlcyB0byB0aGlzIHBhcnR5IGluIHRoZSBES0xzIERTRyBwcm90b2NvbCBhbmRcbiAgICogcHJvZHVjZXMgbWVzc2FnZXMgZnJvbSB0aGlzIHBhcnR5IHRvIG90aGVyIHBhcnRpZXMgZm9yIHRoZSBuZXh0IHJvdW5kLlxuICAgKiBAcGFyYW0gbWVzc2FnZXNGb3JJdGhSb3VuZCAtIG1lc3NhZ2VzIHRvIHByb2Nlc3MgdGhlIGN1cnJlbnQgcm91bmRcbiAgICogQHJldHVybnMge0Rlc2VyaWFsaXplZE1lc3NhZ2VzfSAtIG1lc3NhZ2VzIHRvIHNlbmQgdG8gb3RoZXIgcGFydGllcyBmb3IgdGhlIG5leHQgcm91bmRcbiAgICovXG4gIGhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZXNGb3JJdGhSb3VuZDogRGVzZXJpYWxpemVkTWVzc2FnZXMpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gICAgbGV0IG5leHRSb3VuZE1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcbiAgICBsZXQgbmV4dFJvdW5kRGVzZXJpYWxpemVkTWVzc2FnZXM6IERlc2VyaWFsaXplZE1lc3NhZ2VzID0geyBicm9hZGNhc3RNZXNzYWdlczogW10sIHAycE1lc3NhZ2VzOiBbXSB9O1xuICAgIHRoaXMuX3Jlc3RvcmVTZXNzaW9uKCk7XG4gICAgaWYgKCF0aGlzLmRzZ1Nlc3Npb24pIHtcbiAgICAgIHRocm93IEVycm9yKCdTZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICBjb25zdCB7IE1lc3NhZ2UgfSA9IHRoaXMuZ2V0RGtsc1dhc20oKTtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZHNnU3RhdGUgPT09IERzZ1N0YXRlLlJvdW5kNCkge1xuICAgICAgICB0aGlzLmRzZ1N0YXRlID0gRHNnU3RhdGUuQ29tcGxldGU7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVSZXN1bHQgPSB0aGlzLmRzZ1Nlc3Npb24uY29tYmluZShcbiAgICAgICAgICBtZXNzYWdlc0Zvckl0aFJvdW5kLmJyb2FkY2FzdE1lc3NhZ2VzLm1hcCgobSkgPT4gbmV3IE1lc3NhZ2UobS5wYXlsb2FkLCBtLmZyb20sIHVuZGVmaW5lZCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHtcbiAgICAgICAgICBSOiBjb21iaW5lUmVzdWx0WzBdLFxuICAgICAgICAgIFM6IGNvbWJpbmVSZXN1bHRbMV0sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7IGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSwgcDJwTWVzc2FnZXM6IFtdIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0Um91bmRNZXNzYWdlcyA9IHRoaXMuZHNnU2Vzc2lvbi5oYW5kbGVNZXNzYWdlcyhcbiAgICAgICAgICBtZXNzYWdlc0Zvckl0aFJvdW5kLmJyb2FkY2FzdE1lc3NhZ2VzXG4gICAgICAgICAgICAubWFwKChtKSA9PiBuZXcgTWVzc2FnZShtLnBheWxvYWQsIG0uZnJvbSwgdW5kZWZpbmVkKSlcbiAgICAgICAgICAgIC5jb25jYXQobWVzc2FnZXNGb3JJdGhSb3VuZC5wMnBNZXNzYWdlcy5tYXAoKG0pID0+IG5ldyBNZXNzYWdlKG0ucGF5bG9hZCwgbS5mcm9tLCBtLnRvKSkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kc2dTdGF0ZSA9PT0gRHNnU3RhdGUuUm91bmQzKSB7XG4gICAgICAgIG5leHRSb3VuZE1lc3NhZ2VzID0gW3RoaXMuZHNnU2Vzc2lvbi5sYXN0TWVzc2FnZSh0aGlzLm1lc3NhZ2VIYXNoKV07XG4gICAgICAgIHRoaXMuZHNnU3RhdGUgPSBEc2dTdGF0ZS5Sb3VuZDQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGF5bG9hZDogbmV4dFJvdW5kTWVzc2FnZXNbMF0ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZnJvbTogbmV4dFJvdW5kTWVzc2FnZXNbMF0uZnJvbV9pZCxcbiAgICAgICAgICAgICAgc2lnbmF0dXJlUjogZGVjb2RlKHRoaXMuZHNnU2Vzc2lvbi50b0J5dGVzKCkpLnJvdW5kLldhaXRNc2c0LnIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXBkYXRlIHJvdW5kIGRhdGEuXG4gICAgICAgIHRoaXMuX2Rlc2VyaWFsaXplU3RhdGUoKTtcbiAgICAgIH1cbiAgICAgIG5leHRSb3VuZERlc2VyaWFsaXplZE1lc3NhZ2VzID0ge1xuICAgICAgICBwMnBNZXNzYWdlczogbmV4dFJvdW5kTWVzc2FnZXNcbiAgICAgICAgICAuZmlsdGVyKChtKSA9PiBtLnRvX2lkICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgLm1hcCgobSkgPT4ge1xuICAgICAgICAgICAgaWYgKG0udG9faWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBQMlAgbWVzc2FnZSwgbWlzc2luZyB0b19pZC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHAycFJldHVybiA9IHtcbiAgICAgICAgICAgICAgcGF5bG9hZDogbS5wYXlsb2FkLFxuICAgICAgICAgICAgICBmcm9tOiBtLmZyb21faWQsXG4gICAgICAgICAgICAgIHRvOiBtLnRvX2lkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBwMnBSZXR1cm47XG4gICAgICAgICAgfSksXG4gICAgICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBuZXh0Um91bmRNZXNzYWdlc1xuICAgICAgICAgIC5maWx0ZXIoKG0pID0+IG0udG9faWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAubWFwKChtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBicm9hZGNhc3RSZXR1cm4gPSB7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IG0ucGF5bG9hZCxcbiAgICAgICAgICAgICAgZnJvbTogbS5mcm9tX2lkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBicm9hZGNhc3RSZXR1cm47XG4gICAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnQWJvcnQgdGhlIHByb3RvY29sIGFuZCBiYW4nKSkge1xuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAnU2lnbmluZyBhYm9ydGVkLiBQbGVhc2Ugc3RvcCBhbGwgdHJhbnNhY3Rpb24gc2lnbmluZyBmcm9tIHRoaXMgd2FsbGV0IGFuZCBjb250YWN0IHN1cHBvcnRAYml0Z28uY29tLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRocm93IEVycm9yKGBFcnJvciB3aGlsZSBjcmVhdGluZyBtZXNzYWdlcyBmcm9tIHBhcnR5ICR7dGhpcy5wYXJ0eUlkeH0sIHJvdW5kICR7dGhpcy5kc2dTdGF0ZX06ICR7ZX1gKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgbmV4dFJvdW5kTWVzc2FnZXMuZm9yRWFjaCgobSkgPT4gbS5mcmVlKCkpO1xuICAgICAgLy8gU2Vzc2lvbiBpcyBmcmVlZCB3aGVuIGNvbWJpbmUgaXMgY2FsbGVkLlxuICAgICAgaWYgKHRoaXMuZHNnU3RhdGUgIT09IERzZ1N0YXRlLkNvbXBsZXRlKSB7XG4gICAgICAgIHRoaXMuZHNnU2Vzc2lvbkJ5dGVzID0gdGhpcy5kc2dTZXNzaW9uLnRvQnl0ZXMoKTtcbiAgICAgICAgdGhpcy5kc2dTZXNzaW9uID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV4dFJvdW5kRGVzZXJpYWxpemVkTWVzc2FnZXM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * as DklsDkg from './dkg';
2
+ export * as DklsDsg from './dsg';
3
+ export * as DklsTypes from './types';
4
+ export * as DklsComms from './commsLayer';
5
+ export * as DklsUtils from './util';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,42 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DklsUtils = exports.DklsComms = exports.DklsTypes = exports.DklsDsg = exports.DklsDkg = void 0;
37
+ exports.DklsDkg = __importStar(require("./dkg"));
38
+ exports.DklsDsg = __importStar(require("./dsg"));
39
+ exports.DklsTypes = __importStar(require("./types"));
40
+ exports.DklsComms = __importStar(require("./commsLayer"));
41
+ exports.DklsUtils = __importStar(require("./util"));
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhLWRrbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWlDO0FBQ2pDLGlEQUFpQztBQUNqQyxxREFBcUM7QUFDckMsMERBQTBDO0FBQzFDLG9EQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIERrbHNEa2cgZnJvbSAnLi9ka2cnO1xuZXhwb3J0ICogYXMgRGtsc0RzZyBmcm9tICcuL2RzZyc7XG5leHBvcnQgKiBhcyBEa2xzVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBhcyBEa2xzQ29tbXMgZnJvbSAnLi9jb21tc0xheWVyJztcbmV4cG9ydCAqIGFzIERrbHNVdGlscyBmcm9tICcuL3V0aWwnO1xuIl19
@@ -0,0 +1,128 @@
1
+ import * as t from 'io-ts';
2
+ import { XShare } from '../ecdsa/types';
3
+ interface BroadcastMessage<T> {
4
+ payload: T;
5
+ from: number;
6
+ signatureR?: T;
7
+ }
8
+ interface P2PMessage<T, G> {
9
+ payload: T;
10
+ from: number;
11
+ commitment?: G;
12
+ to: number;
13
+ }
14
+ export declare enum DkgState {
15
+ Uninitialized = 0,
16
+ Round1 = 1,
17
+ Round2 = 2,
18
+ Round3 = 3,
19
+ Round4 = 4,
20
+ Complete = 5,
21
+ InvalidState = 6
22
+ }
23
+ export declare enum DsgState {
24
+ Uninitialized = 0,
25
+ Round1 = 1,
26
+ Round2 = 2,
27
+ Round3 = 3,
28
+ Round4 = 4,
29
+ Complete = 5,
30
+ InvalidState = 6
31
+ }
32
+ export type AuthEncMessage = {
33
+ encryptedMessage: string;
34
+ signature: string;
35
+ };
36
+ export type AuthMessage = {
37
+ message: string;
38
+ signature: string;
39
+ };
40
+ export type PartyGpgKey = {
41
+ partyId: number;
42
+ gpgKey: string;
43
+ };
44
+ export type DklsSignature<T> = {
45
+ R: T;
46
+ S: T;
47
+ };
48
+ export type RetrofitData = {
49
+ xShare: Partial<XShare>;
50
+ xiList?: number[][];
51
+ };
52
+ /**
53
+ * A CBOR-encoded subset of an MPCv2 (DKLS) key share stored on the key card.
54
+ *
55
+ * @property bigSList - Public commitments S_i = s_i * G for each party.
56
+ * @property xList - Evaluation points (x-coordinates for Lagrange interpolation).
57
+ * @property rootChainCode - Root chain code for HD derivation.
58
+ * @property prv - The party's private scalar s_i. This is private key material;
59
+ * possession of this value allows the holder to act as this party in signing.
60
+ * @property pub - The party's public key.
61
+ */
62
+ export declare const ReducedKeyShareType: t.TypeC<{
63
+ bigSList: t.ArrayC<t.ArrayC<t.NumberC>>;
64
+ xList: t.ArrayC<t.ArrayC<t.NumberC>>;
65
+ rootChainCode: t.ArrayC<t.NumberC>;
66
+ prv: t.ArrayC<t.NumberC>;
67
+ pub: t.ArrayC<t.NumberC>;
68
+ }>;
69
+ export type ReducedKeyShare = t.TypeOf<typeof ReducedKeyShareType>;
70
+ export type SerializedBroadcastMessage = BroadcastMessage<string>;
71
+ export type DeserializedBroadcastMessage = BroadcastMessage<Uint8Array>;
72
+ export type SerializedP2PMessage = P2PMessage<string, string>;
73
+ export type DeserializedP2PMessage = P2PMessage<Uint8Array, Uint8Array>;
74
+ export type SerializedDklsSignature = DklsSignature<string>;
75
+ export type DeserializedDklsSignature = DklsSignature<Uint8Array>;
76
+ export type AuthEncP2PMessage = P2PMessage<AuthEncMessage, string>;
77
+ export type AuthBroadcastMessage = BroadcastMessage<AuthMessage>;
78
+ export type SerializedMessages = {
79
+ p2pMessages: SerializedP2PMessage[];
80
+ broadcastMessages: SerializedBroadcastMessage[];
81
+ };
82
+ export type AuthEncMessages = {
83
+ p2pMessages: AuthEncP2PMessage[];
84
+ broadcastMessages: AuthBroadcastMessage[];
85
+ };
86
+ export type DeserializedMessages = {
87
+ p2pMessages: DeserializedP2PMessage[];
88
+ broadcastMessages: DeserializedBroadcastMessage[];
89
+ };
90
+ /**
91
+ * Serializes messages payloads to base64 strings.
92
+ * @param messages
93
+ */
94
+ export declare function serializeMessages(messages: DeserializedMessages): SerializedMessages;
95
+ /**
96
+ * Deserialize messages payloads to Uint8Array.
97
+ * @param messages
98
+ */
99
+ export declare function deserializeMessages(messages: SerializedMessages): DeserializedMessages;
100
+ /**
101
+ * Deserializes a P2P message.
102
+ * @param message
103
+ */
104
+ export declare function deserializeP2PMessage(message: SerializedP2PMessage): DeserializedP2PMessage;
105
+ /**
106
+ * Deserializes a Broadcast message.
107
+ * @param message
108
+ */
109
+ export declare function deserializeBroadcastMessage(message: SerializedBroadcastMessage): DeserializedBroadcastMessage;
110
+ /**
111
+ * Serializes a P2P message.
112
+ * @param message
113
+ */
114
+ export declare function serializeP2PMessage(message: DeserializedP2PMessage): SerializedP2PMessage;
115
+ /**
116
+ * Serializes a Broadcast message.
117
+ * @param message
118
+ */
119
+ export declare function serializeBroadcastMessage(message: DeserializedBroadcastMessage): SerializedBroadcastMessage;
120
+ /**
121
+ * Gets commonkeyChain from DKLS keyShare
122
+ * @param {Buffer} keyShare - DKLS keyShare
123
+ * @returns {string} commonKeychain in hex format
124
+ */
125
+ export declare function getCommonKeychain(keyShare: Buffer): string;
126
+ export declare function getDecodedReducedKeyShare(reducedKeyShare: Buffer | Uint8Array): ReducedKeyShare;
127
+ export {};
128
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/types.ts"],"names":[],"mappings":"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"}