@bitgo-beta/sdk-api 1.10.1-beta.209 → 1.10.1-beta.2090

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 (97) hide show
  1. package/dist/package.json +23 -27
  2. package/dist/src/api.d.ts +18 -6
  3. package/dist/src/api.d.ts.map +1 -1
  4. package/dist/src/api.js +151 -72
  5. package/dist/src/bitgoAPI.d.ts +123 -30
  6. package/dist/src/bitgoAPI.d.ts.map +1 -1
  7. package/dist/src/bitgoAPI.js +794 -339
  8. package/dist/src/decryptV1.d.ts +60 -0
  9. package/dist/src/decryptV1.d.ts.map +1 -0
  10. package/dist/src/decryptV1.js +140 -0
  11. package/dist/src/encrypt.d.ts +37 -6
  12. package/dist/src/encrypt.d.ts.map +1 -1
  13. package/dist/src/encrypt.js +171 -15
  14. package/dist/src/encryptV2.d.ts +67 -0
  15. package/dist/src/encryptV2.d.ts.map +1 -0
  16. package/dist/src/encryptV2.js +234 -0
  17. package/dist/src/encryptionSession.d.ts +63 -0
  18. package/dist/src/encryptionSession.d.ts.map +1 -0
  19. package/dist/src/encryptionSession.js +140 -0
  20. package/dist/src/index.d.ts +3 -0
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/index.js +9 -2
  23. package/dist/src/types.d.ts +87 -43
  24. package/dist/src/types.d.ts.map +1 -1
  25. package/dist/src/types.js +4 -2
  26. package/dist/src/util.d.ts +12 -0
  27. package/dist/src/util.d.ts.map +1 -1
  28. package/dist/src/util.js +57 -4
  29. package/dist/src/v1/blockchain.js +25 -12
  30. package/dist/src/v1/keychains.js +52 -26
  31. package/dist/src/v1/markets.js +10 -5
  32. package/dist/src/v1/pendingapproval.d.ts.map +1 -1
  33. package/dist/src/v1/pendingapproval.js +57 -18
  34. package/dist/src/v1/pendingapprovals.d.ts.map +1 -1
  35. package/dist/src/v1/pendingapprovals.js +41 -7
  36. package/dist/src/v1/signPsbt.d.ts +14 -0
  37. package/dist/src/v1/signPsbt.d.ts.map +1 -0
  38. package/dist/src/v1/signPsbt.js +69 -0
  39. package/dist/src/v1/transactionBuilder.js +221 -91
  40. package/dist/src/v1/travelRule.js +125 -66
  41. package/dist/src/v1/verifyAddress.d.ts +6 -0
  42. package/dist/src/v1/verifyAddress.d.ts.map +1 -0
  43. package/dist/src/v1/verifyAddress.js +50 -0
  44. package/dist/src/v1/wallet.d.ts.map +1 -1
  45. package/dist/src/v1/wallet.js +498 -230
  46. package/dist/src/v1/wallets.js +118 -53
  47. package/dist/test/unit/api.d.ts +2 -0
  48. package/dist/test/unit/api.d.ts.map +1 -0
  49. package/dist/test/unit/api.js +331 -0
  50. package/dist/test/unit/bitgoAPI.d.ts +2 -0
  51. package/dist/test/unit/bitgoAPI.d.ts.map +1 -0
  52. package/dist/test/unit/bitgoAPI.js +1339 -0
  53. package/dist/test/unit/decryptV1.browser.d.ts +2 -0
  54. package/dist/test/unit/decryptV1.browser.d.ts.map +1 -0
  55. package/dist/test/unit/decryptV1.browser.js +133 -0
  56. package/dist/test/unit/decryptV1.d.ts +2 -0
  57. package/dist/test/unit/decryptV1.d.ts.map +1 -0
  58. package/dist/test/unit/decryptV1.js +230 -0
  59. package/dist/test/unit/encrypt.d.ts +2 -0
  60. package/dist/test/unit/encrypt.d.ts.map +1 -0
  61. package/dist/test/unit/encrypt.js +544 -0
  62. package/dist/test/unit/fixtures/keycard.d.ts +25 -0
  63. package/dist/test/unit/fixtures/keycard.d.ts.map +1 -0
  64. package/dist/test/unit/fixtures/keycard.js +28 -0
  65. package/dist/test/unit/hmacStrategy.d.ts +2 -0
  66. package/dist/test/unit/hmacStrategy.d.ts.map +1 -0
  67. package/dist/test/unit/hmacStrategy.js +136 -0
  68. package/dist/test/unit/serializeRequestDataIntegration.d.ts +2 -0
  69. package/dist/test/unit/serializeRequestDataIntegration.d.ts.map +1 -0
  70. package/dist/test/unit/serializeRequestDataIntegration.js +115 -0
  71. package/dist/test/unit/utils.d.ts +2 -0
  72. package/dist/test/unit/utils.d.ts.map +1 -0
  73. package/dist/test/unit/utils.js +65 -0
  74. package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts +4 -0
  75. package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts.map +1 -0
  76. package/dist/test/unit/v1/fixtures/accelerate-tx.js +53 -0
  77. package/dist/test/unit/v1/fixtures/index.d.ts +3 -0
  78. package/dist/test/unit/v1/fixtures/index.d.ts.map +1 -0
  79. package/dist/test/unit/v1/fixtures/index.js +24 -0
  80. package/dist/test/unit/v1/keychains.d.ts +2 -0
  81. package/dist/test/unit/v1/keychains.d.ts.map +1 -0
  82. package/dist/test/unit/v1/keychains.js +114 -0
  83. package/dist/test/unit/v1/signPsbt.d.ts +2 -0
  84. package/dist/test/unit/v1/signPsbt.d.ts.map +1 -0
  85. package/dist/test/unit/v1/signPsbt.js +53 -0
  86. package/dist/test/unit/v1/travelRule.d.ts +2 -0
  87. package/dist/test/unit/v1/travelRule.d.ts.map +1 -0
  88. package/dist/test/unit/v1/travelRule.js +125 -0
  89. package/dist/test/unit/v1/wallet.d.ts +2 -0
  90. package/dist/test/unit/v1/wallet.d.ts.map +1 -0
  91. package/dist/test/unit/v1/wallet.js +1717 -0
  92. package/dist/tsconfig.tsbuildinfo +1 -0
  93. package/package.json +23 -27
  94. package/.eslintignore +0 -5
  95. package/CHANGELOG.md +0 -639
  96. package/dist/web/main.js +0 -2
  97. package/dist/web/main.js.LICENSE.txt +0 -110
@@ -0,0 +1,234 @@
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.HKDF_SALT_LENGTH = exports.GCM_IV_LENGTH = exports.ARGON2_DEFAULTS = void 0;
37
+ exports.argon2ToHkdfKey = argon2ToHkdfKey;
38
+ exports.hkdfDeriveAesKey = hkdfDeriveAesKey;
39
+ exports.aesGcmEncrypt = aesGcmEncrypt;
40
+ exports.aesGcmDecrypt = aesGcmDecrypt;
41
+ exports.parseV2Envelope = parseV2Envelope;
42
+ exports.encryptV2 = encryptV2;
43
+ exports.decryptV2 = decryptV2;
44
+ const argon2_1 = require("@bitgo-beta/argon2");
45
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
46
+ const crypto_1 = require("crypto");
47
+ const t = __importStar(require("io-ts"));
48
+ /** Web Crypto subtle — browser global in DOM; Node/Electron main must use `webcrypto`. */
49
+ const subtle = globalThis.crypto?.subtle ?? crypto_1.webcrypto.subtle;
50
+ /** Default Argon2id parameters per RFC 9106 second recommendation
51
+ * @see https://www.rfc-editor.org/rfc/rfc9106#section-4
52
+ */
53
+ exports.ARGON2_DEFAULTS = {
54
+ memorySize: 65536, // 64 MiB in KiB
55
+ iterations: 3,
56
+ parallelism: 4,
57
+ hashLength: 32, // 256-bit key
58
+ saltLength: 16, // 128-bit salt
59
+ };
60
+ /** Maximum allowed Argon2id parameters to prevent DoS via crafted envelopes.
61
+ * memorySize: 256 MiB (4x default) -- caps memory allocation on untrusted input.
62
+ * iterations: 16 -- caps CPU time.
63
+ * parallelism: 16 -- caps thread count.
64
+ */
65
+ const ARGON2_MAX = {
66
+ memorySize: 262144,
67
+ iterations: 16,
68
+ parallelism: 16,
69
+ };
70
+ /** AES-256-GCM IV length in bytes */
71
+ exports.GCM_IV_LENGTH = 12;
72
+ /** HKDF per-call salt length in bytes */
73
+ exports.HKDF_SALT_LENGTH = 32;
74
+ /** Fixed HKDF info string for domain separation across BitGo v2 session keys */
75
+ const HKDF_SESSION_INFO = new TextEncoder().encode('bitgo-v2-session');
76
+ /** HKDF info for high-entropy IKM (ECDH secrets). Distinct from session info. */
77
+ const HKDF_ONLY_INFO = new TextEncoder().encode('bitgo-v2-hkdf');
78
+ // Envelope codec
79
+ //
80
+ // Two valid v2 shapes (presence rule enforced after decode):
81
+ // - Argon2 / session: m, t, p, salt required; hkdfSalt optional (session)
82
+ // - HKDF-only: hkdfSalt required; Argon2 params absent
83
+ const V2EnvelopeCodec = t.intersection([
84
+ t.type({
85
+ v: t.literal(2),
86
+ iv: sdk_core_1.base64String,
87
+ ct: sdk_core_1.base64String,
88
+ }),
89
+ t.partial({
90
+ m: (0, sdk_core_1.boundedInt)(1, ARGON2_MAX.memorySize, 'memorySize'),
91
+ t: (0, sdk_core_1.boundedInt)(1, ARGON2_MAX.iterations, 'iterations'),
92
+ p: (0, sdk_core_1.boundedInt)(1, ARGON2_MAX.parallelism, 'parallelism'),
93
+ salt: sdk_core_1.base64String,
94
+ /** Base64-encoded HKDF salt -- session envelopes and HKDF-only envelopes */
95
+ hkdfSalt: sdk_core_1.base64String,
96
+ /** Additional authenticated data for context binding (e.g. transaction hash + derivation path) */
97
+ adata: t.string,
98
+ }),
99
+ ]);
100
+ function hasArgon2Params(envelope) {
101
+ return (envelope.m !== undefined && envelope.t !== undefined && envelope.p !== undefined && envelope.salt !== undefined);
102
+ }
103
+ function isHkdfOnlyEnvelope(envelope) {
104
+ return (envelope.hkdfSalt !== undefined &&
105
+ envelope.m === undefined &&
106
+ envelope.t === undefined &&
107
+ envelope.p === undefined &&
108
+ envelope.salt === undefined);
109
+ }
110
+ // Crypto helpers
111
+ async function argon2Hash(password, salt, params) {
112
+ return (0, argon2_1.argon2id)({
113
+ password,
114
+ salt,
115
+ memorySize: params.memorySize,
116
+ iterations: params.iterations,
117
+ parallelism: params.parallelism,
118
+ hashLength: exports.ARGON2_DEFAULTS.hashLength,
119
+ outputType: 'binary',
120
+ });
121
+ }
122
+ async function argon2ToAesKey(password, salt, params) {
123
+ const keyBytes = await argon2Hash(password, salt, params);
124
+ return subtle.importKey('raw', keyBytes, { name: 'AES-GCM' }, false, ['encrypt', 'decrypt']);
125
+ }
126
+ async function argon2ToHkdfKey(password, salt, params) {
127
+ const keyBytes = await argon2Hash(password, salt, params);
128
+ return subtle.importKey('raw', keyBytes, 'HKDF', false, ['deriveKey']);
129
+ }
130
+ async function passwordToHkdfKey(password) {
131
+ const ikm = new TextEncoder().encode(password);
132
+ return subtle.importKey('raw', ikm, 'HKDF', false, ['deriveKey']);
133
+ }
134
+ function hkdfDeriveAesKey(hkdfKey, hkdfSalt, usage, info = HKDF_SESSION_INFO) {
135
+ return subtle.deriveKey({ name: 'HKDF', hash: 'SHA-256', salt: hkdfSalt, info }, hkdfKey, { name: 'AES-GCM', length: 256 }, false, [usage]);
136
+ }
137
+ async function aesGcmEncrypt(key, iv, plaintext, additionalData) {
138
+ const params = { name: 'AES-GCM', iv, tagLength: 128 };
139
+ if (additionalData)
140
+ params.additionalData = additionalData;
141
+ const ct = await subtle.encrypt(params, key, new TextEncoder().encode(plaintext));
142
+ return new Uint8Array(ct);
143
+ }
144
+ async function aesGcmDecrypt(key, iv, ct, additionalData) {
145
+ const params = { name: 'AES-GCM', iv, tagLength: 128 };
146
+ if (additionalData)
147
+ params.additionalData = additionalData;
148
+ const plaintext = await subtle.decrypt(params, key, ct);
149
+ return new TextDecoder().decode(plaintext);
150
+ }
151
+ function parseV2Envelope(ciphertext) {
152
+ let parsed;
153
+ try {
154
+ parsed = JSON.parse(ciphertext);
155
+ }
156
+ catch {
157
+ throw new Error('v2 decrypt: invalid JSON envelope');
158
+ }
159
+ const envelope = (0, sdk_core_1.decodeWithCodec)(V2EnvelopeCodec, parsed, 'v2 decrypt: invalid envelope');
160
+ if (!hasArgon2Params(envelope) && !isHkdfOnlyEnvelope(envelope)) {
161
+ throw new Error('v2 decrypt: invalid envelope');
162
+ }
163
+ return envelope;
164
+ }
165
+ // Public API
166
+ /**
167
+ * Encrypt plaintext using Argon2id KDF + AES-256-GCM.
168
+ *
169
+ * Returns a self-describing JSON v2 envelope containing all Argon2id parameters,
170
+ * salt, IV, and ciphertext -- fully standalone for decryption.
171
+ *
172
+ * For multi-call operations (MPC signing, wallet creation), prefer
173
+ * createEncryptionSession to run Argon2id once and derive per-call keys via HKDF.
174
+ */
175
+ async function encryptV2(password, plaintext, options) {
176
+ const memorySize = options?.memorySize ?? exports.ARGON2_DEFAULTS.memorySize;
177
+ const iterations = options?.iterations ?? exports.ARGON2_DEFAULTS.iterations;
178
+ const parallelism = options?.parallelism ?? exports.ARGON2_DEFAULTS.parallelism;
179
+ const salt = options?.salt ?? new Uint8Array((0, crypto_1.randomBytes)(exports.ARGON2_DEFAULTS.saltLength));
180
+ if (salt.length !== exports.ARGON2_DEFAULTS.saltLength)
181
+ throw new Error(`salt must be ${exports.ARGON2_DEFAULTS.saltLength} bytes`);
182
+ const iv = options?.iv ?? new Uint8Array((0, crypto_1.randomBytes)(exports.GCM_IV_LENGTH));
183
+ if (iv.length !== exports.GCM_IV_LENGTH)
184
+ throw new Error(`iv must be ${exports.GCM_IV_LENGTH} bytes`);
185
+ const adataBytes = options?.adata ? new TextEncoder().encode(options.adata) : undefined;
186
+ const key = await argon2ToAesKey(password, salt, { memorySize, iterations, parallelism });
187
+ const ct = await aesGcmEncrypt(key, iv, plaintext, adataBytes);
188
+ const envelope = {
189
+ v: 2,
190
+ m: memorySize,
191
+ t: iterations,
192
+ p: parallelism,
193
+ salt: Buffer.from(salt).toString('base64'),
194
+ iv: Buffer.from(iv).toString('base64'),
195
+ ct: Buffer.from(ct).toString('base64'),
196
+ };
197
+ if (options?.adata)
198
+ envelope.adata = options.adata;
199
+ return JSON.stringify(envelope);
200
+ }
201
+ /**
202
+ * Decrypt a v2 envelope. Auto-detects shape:
203
+ * - Standard (Argon2 params, no hkdfSalt): Argon2id -> AES-GCM
204
+ * - Session (Argon2 params + hkdfSalt): Argon2id -> HKDF -> AES-GCM
205
+ * - HKDF-only (hkdfSalt, no Argon2 params): HKDF(password) -> AES-GCM
206
+ *
207
+ * All parameters are stored in the envelope -- no session context required.
208
+ */
209
+ async function decryptV2(password, ciphertext) {
210
+ const envelope = parseV2Envelope(ciphertext);
211
+ const iv = new Uint8Array(Buffer.from(envelope.iv, 'base64'));
212
+ const ct = new Uint8Array(Buffer.from(envelope.ct, 'base64'));
213
+ const adataBytes = envelope.adata ? new TextEncoder().encode(envelope.adata) : undefined;
214
+ if (isHkdfOnlyEnvelope(envelope)) {
215
+ const hkdfKey = await passwordToHkdfKey(password);
216
+ const hkdfSalt = new Uint8Array(Buffer.from(envelope.hkdfSalt, 'base64'));
217
+ const aesKey = await hkdfDeriveAesKey(hkdfKey, hkdfSalt, 'decrypt', HKDF_ONLY_INFO);
218
+ return aesGcmDecrypt(aesKey, iv, ct, adataBytes);
219
+ }
220
+ if (!hasArgon2Params(envelope)) {
221
+ throw new Error('v2 decrypt: invalid envelope');
222
+ }
223
+ const salt = new Uint8Array(Buffer.from(envelope.salt, 'base64'));
224
+ const params = { memorySize: envelope.m, iterations: envelope.t, parallelism: envelope.p };
225
+ if (envelope.hkdfSalt) {
226
+ const hkdfKey = await argon2ToHkdfKey(password, salt, params);
227
+ const hkdfSalt = new Uint8Array(Buffer.from(envelope.hkdfSalt, 'base64'));
228
+ const aesKey = await hkdfDeriveAesKey(hkdfKey, hkdfSalt, 'decrypt');
229
+ return aesGcmDecrypt(aesKey, iv, ct, adataBytes);
230
+ }
231
+ const key = await argon2ToAesKey(password, salt, params);
232
+ return aesGcmDecrypt(key, iv, ct, adataBytes);
233
+ }
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdFYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VuY3J5cHRWMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrSEEsMENBT0M7QUFPRCw0Q0FhQztBQUVELHNDQVVDO0FBRUQsc0NBVUM7QUFFRCwwQ0FZQztBQWFELDhCQXFDQztBQVVELDhCQTZCQztBQTVRRCwrQ0FBOEM7QUFDOUMsbURBQWlGO0FBQ2pGLG1DQUFnRDtBQUNoRCx5Q0FBMkI7QUFFM0IsMEZBQTBGO0FBQzFGLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLGtCQUFTLENBQUMsTUFBTSxDQUFDO0FBRTdEOztHQUVHO0FBQ1UsUUFBQSxlQUFlLEdBQUc7SUFDN0IsVUFBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0I7SUFDbkMsVUFBVSxFQUFFLENBQUM7SUFDYixXQUFXLEVBQUUsQ0FBQztJQUNkLFVBQVUsRUFBRSxFQUFFLEVBQUUsY0FBYztJQUM5QixVQUFVLEVBQUUsRUFBRSxFQUFFLGVBQWU7Q0FDdkIsQ0FBQztBQUVYOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsR0FBRztJQUNqQixVQUFVLEVBQUUsTUFBTTtJQUNsQixVQUFVLEVBQUUsRUFBRTtJQUNkLFdBQVcsRUFBRSxFQUFFO0NBQ1AsQ0FBQztBQUVYLHFDQUFxQztBQUN4QixRQUFBLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFFaEMseUNBQXlDO0FBQzVCLFFBQUEsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBRW5DLGdGQUFnRjtBQUNoRixNQUFNLGlCQUFpQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFdkUsaUZBQWlGO0FBQ2pGLE1BQU0sY0FBYyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FB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LFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekQsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFyZ29uMmlkIH0gZnJvbSAnQGJpdGdvLWJldGEvYXJnb24yJztcbmltcG9ydCB7IGJhc2U2NFN0cmluZywgYm91bmRlZEludCwgZGVjb2RlV2l0aENvZGVjIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIHdlYmNyeXB0byB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcblxuLyoqIFdlYiBDcnlwdG8gc3VidGxlIOKAlCBicm93c2VyIGdsb2JhbCBpbiBET007IE5vZGUvRWxlY3Ryb24gbWFpbiBtdXN0IHVzZSBgd2ViY3J5cHRvYC4gKi9cbmNvbnN0IHN1YnRsZSA9IGdsb2JhbFRoaXMuY3J5cHRvPy5zdWJ0bGUgPz8gd2ViY3J5cHRvLnN1YnRsZTtcblxuLyoqIERlZmF1bHQgQXJnb24yaWQgcGFyYW1ldGVycyBwZXIgUkZDIDkxMDYgc2Vjb25kIHJlY29tbWVuZGF0aW9uXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM5MTA2I3NlY3Rpb24tNFxuICovXG5leHBvcnQgY29uc3QgQVJHT04yX0RFRkFVTFRTID0ge1xuICBtZW1vcnlTaXplOiA2NTUzNiwgLy8gNjQgTWlCIGluIEtpQlxuICBpdGVyYXRpb25zOiAzLFxuICBwYXJhbGxlbGlzbTogNCxcbiAgaGFzaExlbmd0aDogMzIsIC8vIDI1Ni1iaXQga2V5XG4gIHNhbHRMZW5ndGg6IDE2LCAvLyAxMjgtYml0IHNhbHRcbn0gYXMgY29uc3Q7XG5cbi8qKiBNYXhpbXVtIGFsbG93ZWQgQXJnb24yaWQgcGFyYW1ldGVycyB0byBwcmV2ZW50IERvUyB2aWEgY3JhZnRlZCBlbnZlbG9wZXMuXG4gKiBtZW1vcnlTaXplOiAyNTYgTWlCICg0eCBkZWZhdWx0KSAtLSBjYXBzIG1lbW9yeSBhbGxvY2F0aW9uIG9uIHVudHJ1c3RlZCBpbnB1dC5cbiAqIGl0ZXJhdGlvbnM6IDE2IC0tIGNhcHMgQ1BVIHRpbWUuXG4gKiBwYXJhbGxlbGlzbTogMTYgLS0gY2FwcyB0aHJlYWQgY291bnQuXG4gKi9cbmNvbnN0IEFSR09OMl9NQVggPSB7XG4gIG1lbW9yeVNpemU6IDI2MjE0NCxcbiAgaXRlcmF0aW9uczogMTYsXG4gIHBhcmFsbGVsaXNtOiAxNixcbn0gYXMgY29uc3Q7XG5cbi8qKiBBRVMtMjU2LUdDTSBJViBsZW5ndGggaW4gYnl0ZXMgKi9cbmV4cG9ydCBjb25zdCBHQ01fSVZfTEVOR1RIID0gMTI7XG5cbi8qKiBIS0RGIHBlci1jYWxsIHNhbHQgbGVuZ3RoIGluIGJ5dGVzICovXG5leHBvcnQgY29uc3QgSEtERl9TQUxUX0xFTkdUSCA9IDMyO1xuXG4vKiogRml4ZWQgSEtERiBpbmZvIHN0cmluZyBmb3IgZG9tYWluIHNlcGFyYXRpb24gYWNyb3NzIEJpdEdvIHYyIHNlc3Npb24ga2V5cyAqL1xuY29uc3QgSEtERl9TRVNTSU9OX0lORk8gPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoJ2JpdGdvLXYyLXNlc3Npb24nKTtcblxuLyoqIEhLREYgaW5mbyBmb3IgaGlnaC1lbnRyb3B5IElLTSAoRUNESCBzZWNyZXRzKS4gRGlzdGluY3QgZnJvbSBzZXNzaW9uIGluZm8uICovXG5jb25zdCBIS0RGX09OTFlfSU5GTyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSgnYml0Z28tdjItaGtkZicpO1xuXG4vLyBFbnZlbG9wZSBjb2RlY1xuLy9cbi8vIFR3byB2YWxpZCB2MiBzaGFwZXMgKHByZXNlbmNlIHJ1bGUgZW5mb3JjZWQgYWZ0ZXIgZGVjb2RlKTpcbi8vICAgLSBBcmdvbjIgLyBzZXNzaW9uOiBtLCB0LCBwLCBzYWx0IHJlcXVpcmVkOyBoa2RmU2FsdCBvcHRpb25hbCAoc2Vzc2lvbilcbi8vICAgLSBIS0RGLW9ubHk6IGhrZGZTYWx0IHJlcXVpcmVkOyBBcmdvbjIgcGFyYW1zIGFic2VudFxuXG5jb25zdCBWMkVudmVsb3BlQ29kZWMgPSB0LmludGVyc2VjdGlvbihbXG4gIHQudHlwZSh7XG4gICAgdjogdC5saXRlcmFsKDIpLFxuICAgIGl2OiBiYXNlNjRTdHJpbmcsXG4gICAgY3Q6IGJhc2U2NFN0cmluZyxcbiAgfSksXG4gIHQucGFydGlhbCh7XG4gICAgbTogYm91bmRlZEludCgxLCBBUkdPTjJfTUFYLm1lbW9yeVNpemUsICdtZW1vcnlTaXplJyksXG4gICAgdDogYm91bmRlZEludCgxLCBBUkdPTjJfTUFYLml0ZXJhdGlvbnMsICdpdGVyYXRpb25zJyksXG4gICAgcDogYm91bmRlZEludCgxLCBBUkdPTjJfTUFYLnBhcmFsbGVsaXNtLCAncGFyYWxsZWxpc20nKSxcbiAgICBzYWx0OiBiYXNlNjRTdHJpbmcsXG4gICAgLyoqIEJhc2U2NC1lbmNvZGVkIEhLREYgc2FsdCAtLSBzZXNzaW9uIGVudmVsb3BlcyBhbmQgSEtERi1vbmx5IGVudmVsb3BlcyAqL1xuICAgIGhrZGZTYWx0OiBiYXNlNjRTdHJpbmcsXG4gICAgLyoqIEFkZGl0aW9uYWwgYXV0aGVudGljYXRlZCBkYXRhIGZvciBjb250ZXh0IGJpbmRpbmcgKGUuZy4gdHJhbnNhY3Rpb24gaGFzaCArIGRlcml2YXRpb24gcGF0aCkgKi9cbiAgICBhZGF0YTogdC5zdHJpbmcsXG4gIH0pLFxuXSk7XG5cbmV4cG9ydCB0eXBlIFYyRW52ZWxvcGUgPSB0LlR5cGVPZjx0eXBlb2YgVjJFbnZlbG9wZUNvZGVjPjtcblxudHlwZSBBcmdvbjJFbnZlbG9wZSA9IFYyRW52ZWxvcGUgJiB7IG06IG51bWJlcjsgdDogbnVtYmVyOyBwOiBudW1iZXI7IHNhbHQ6IHN0cmluZyB9O1xudHlwZSBIa2RmT25seUVudmVsb3BlID0gVjJFbnZlbG9wZSAmIHsgaGtkZlNhbHQ6IHN0cmluZyB9O1xuXG5mdW5jdGlvbiBoYXNBcmdvbjJQYXJhbXMoZW52ZWxvcGU6IFYyRW52ZWxvcGUpOiBlbnZlbG9wZSBpcyBBcmdvbjJFbnZlbG9wZSB7XG4gIHJldHVybiAoXG4gICAgZW52ZWxvcGUubSAhPT0gdW5kZWZpbmVkICYmIGVudmVsb3BlLnQgIT09IHVuZGVmaW5lZCAmJiBlbnZlbG9wZS5wICE9PSB1bmRlZmluZWQgJiYgZW52ZWxvcGUuc2FsdCAhPT0gdW5kZWZpbmVkXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzSGtkZk9ubHlFbnZlbG9wZShlbnZlbG9wZTogVjJFbnZlbG9wZSk6IGVudmVsb3BlIGlzIEhrZGZPbmx5RW52ZWxvcGUge1xuICByZXR1cm4gKFxuICAgIGVudmVsb3BlLmhrZGZTYWx0ICE9PSB1bmRlZmluZWQgJiZcbiAgICBlbnZlbG9wZS5tID09PSB1bmRlZmluZWQgJiZcbiAgICBlbnZlbG9wZS50ID09PSB1bmRlZmluZWQgJiZcbiAgICBlbnZlbG9wZS5wID09PSB1bmRlZmluZWQgJiZcbiAgICBlbnZlbG9wZS5zYWx0ID09PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuLy8gQ3J5cHRvIGhlbHBlcnNcblxuYXN5bmMgZnVuY3Rpb24gYXJnb24ySGFzaChcbiAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgc2FsdDogVWludDhBcnJheSxcbiAgcGFyYW1zOiB7IG1lbW9yeVNpemU6IG51bWJlcjsgaXRlcmF0aW9uczogbnVtYmVyOyBwYXJhbGxlbGlzbTogbnVtYmVyIH1cbik6IFByb21pc2U8VWludDhBcnJheT4ge1xuICByZXR1cm4gYXJnb24yaWQoe1xuICAgIHBhc3N3b3JkLFxuICAgIHNhbHQsXG4gICAgbWVtb3J5U2l6ZTogcGFyYW1zLm1lbW9yeVNpemUsXG4gICAgaXRlcmF0aW9uczogcGFyYW1zLml0ZXJhdGlvbnMsXG4gICAgcGFyYWxsZWxpc206IHBhcmFtcy5wYXJhbGxlbGlzbSxcbiAgICBoYXNoTGVuZ3RoOiBBUkdPTjJfREVGQVVMVFMuaGFzaExlbmd0aCxcbiAgICBvdXRwdXRUeXBlOiAnYmluYXJ5JyxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFyZ29uMlRvQWVzS2V5KFxuICBwYXNzd29yZDogc3RyaW5nLFxuICBzYWx0OiBVaW50OEFycmF5LFxuICBwYXJhbXM6IHsgbWVtb3J5U2l6ZTogbnVtYmVyOyBpdGVyYXRpb25zOiBudW1iZXI7IHBhcmFsbGVsaXNtOiBudW1iZXIgfVxuKTogUHJvbWlzZTxDcnlwdG9LZXk+IHtcbiAgY29uc3Qga2V5Qnl0ZXMgPSBhd2FpdCBhcmdvbjJIYXNoKHBhc3N3b3JkLCBzYWx0LCBwYXJhbXMpO1xuICByZXR1cm4gc3VidGxlLmltcG9ydEtleSgncmF3Jywga2V5Qnl0ZXMsIHsgbmFtZTogJ0FFUy1HQ00nIH0sIGZhbHNlLCBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFyZ29uMlRvSGtkZktleShcbiAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgc2FsdDogVWludDhBcnJheSxcbiAgcGFyYW1zOiB7IG1lbW9yeVNpemU6IG51bWJlcjsgaXRlcmF0aW9uczogbnVtYmVyOyBwYXJhbGxlbGlzbTogbnVtYmVyIH1cbik6IFByb21pc2U8Q3J5cHRvS2V5PiB7XG4gIGNvbnN0IGtleUJ5dGVzID0gYXdhaXQgYXJnb24ySGFzaChwYXNzd29yZCwgc2FsdCwgcGFyYW1zKTtcbiAgcmV0dXJuIHN1YnRsZS5pbXBvcnRLZXkoJ3JhdycsIGtleUJ5dGVzLCAnSEtERicsIGZhbHNlLCBbJ2Rlcml2ZUtleSddKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcGFzc3dvcmRUb0hrZGZLZXkocGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8Q3J5cHRvS2V5PiB7XG4gIGNvbnN0IGlrbSA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwYXNzd29yZCk7XG4gIHJldHVybiBzdWJ0bGUuaW1wb3J0S2V5KCdyYXcnLCBpa20sICdIS0RGJywgZmFsc2UsIFsnZGVyaXZlS2V5J10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGtkZkRlcml2ZUFlc0tleShcbiAgaGtkZktleTogQ3J5cHRvS2V5LFxuICBoa2RmU2FsdDogVWludDhBcnJheSxcbiAgdXNhZ2U6IEtleVVzYWdlLFxuICBpbmZvOiBVaW50OEFycmF5ID0gSEtERl9TRVNTSU9OX0lORk9cbik6IFByb21pc2U8Q3J5cHRvS2V5PiB7XG4gIHJldHVybiBzdWJ0bGUuZGVyaXZlS2V5KFxuICAgIHsgbmFtZTogJ0hLREYnLCBoYXNoOiAnU0hBLTI1NicsIHNhbHQ6IGhrZGZTYWx0LCBpbmZvIH0sXG4gICAgaGtkZktleSxcbiAgICB7IG5hbWU6ICdBRVMtR0NNJywgbGVuZ3RoOiAyNTYgfSxcbiAgICBmYWxzZSxcbiAgICBbdXNhZ2VdXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZXNHY21FbmNyeXB0KFxuICBrZXk6IENyeXB0b0tleSxcbiAgaXY6IFVpbnQ4QXJyYXksXG4gIHBsYWludGV4dDogc3RyaW5nLFxuICBhZGRpdGlvbmFsRGF0YT86IFVpbnQ4QXJyYXlcbik6IFByb21pc2U8VWludDhBcnJheT4ge1xuICBjb25zdCBwYXJhbXM6IEFlc0djbVBhcmFtcyA9IHsgbmFtZTogJ0FFUy1HQ00nLCBpdiwgdGFnTGVuZ3RoOiAxMjggfTtcbiAgaWYgKGFkZGl0aW9uYWxEYXRhKSBwYXJhbXMuYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTtcbiAgY29uc3QgY3QgPSBhd2FpdCBzdWJ0bGUuZW5jcnlwdChwYXJhbXMsIGtleSwgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHBsYWludGV4dCkpO1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoY3QpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWVzR2NtRGVjcnlwdChcbiAga2V5OiBDcnlwdG9LZXksXG4gIGl2OiBVaW50OEFycmF5LFxuICBjdDogVWludDhBcnJheSxcbiAgYWRkaXRpb25hbERhdGE/OiBVaW50OEFycmF5XG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBwYXJhbXM6IEFlc0djbVBhcmFtcyA9IHsgbmFtZTogJ0FFUy1HQ00nLCBpdiwgdGFnTGVuZ3RoOiAxMjggfTtcbiAgaWYgKGFkZGl0aW9uYWxEYXRhKSBwYXJhbXMuYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTtcbiAgY29uc3QgcGxhaW50ZXh0ID0gYXdhaXQgc3VidGxlLmRlY3J5cHQocGFyYW1zLCBrZXksIGN0KTtcbiAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShwbGFpbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWMkVudmVsb3BlKGNpcGhlcnRleHQ6IHN0cmluZyk6IFYyRW52ZWxvcGUge1xuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoY2lwaGVydGV4dCk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcigndjIgZGVjcnlwdDogaW52YWxpZCBKU09OIGVudmVsb3BlJyk7XG4gIH1cbiAgY29uc3QgZW52ZWxvcGUgPSBkZWNvZGVXaXRoQ29kZWMoVjJFbnZlbG9wZUNvZGVjLCBwYXJzZWQsICd2MiBkZWNyeXB0OiBpbnZhbGlkIGVudmVsb3BlJyk7XG4gIGlmICghaGFzQXJnb24yUGFyYW1zKGVudmVsb3BlKSAmJiAhaXNIa2RmT25seUVudmVsb3BlKGVudmVsb3BlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndjIgZGVjcnlwdDogaW52YWxpZCBlbnZlbG9wZScpO1xuICB9XG4gIHJldHVybiBlbnZlbG9wZTtcbn1cblxuLy8gUHVibGljIEFQSVxuXG4vKipcbiAqIEVuY3J5cHQgcGxhaW50ZXh0IHVzaW5nIEFyZ29uMmlkIEtERiArIEFFUy0yNTYtR0NNLlxuICpcbiAqIFJldHVybnMgYSBzZWxmLWRlc2NyaWJpbmcgSlNPTiB2MiBlbnZlbG9wZSBjb250YWluaW5nIGFsbCBBcmdvbjJpZCBwYXJhbWV0ZXJzLFxuICogc2FsdCwgSVYsIGFuZCBjaXBoZXJ0ZXh0IC0tIGZ1bGx5IHN0YW5kYWxvbmUgZm9yIGRlY3J5cHRpb24uXG4gKlxuICogRm9yIG11bHRpLWNhbGwgb3BlcmF0aW9ucyAoTVBDIHNpZ25pbmcsIHdhbGxldCBjcmVhdGlvbiksIHByZWZlclxuICogY3JlYXRlRW5jcnlwdGlvblNlc3Npb24gdG8gcnVuIEFyZ29uMmlkIG9uY2UgYW5kIGRlcml2ZSBwZXItY2FsbCBrZXlzIHZpYSBIS0RGLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdFYyKFxuICBwYXNzd29yZDogc3RyaW5nLFxuICBwbGFpbnRleHQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBzYWx0PzogVWludDhBcnJheTtcbiAgICBpdj86IFVpbnQ4QXJyYXk7XG4gICAgbWVtb3J5U2l6ZT86IG51bWJlcjtcbiAgICBpdGVyYXRpb25zPzogbnVtYmVyO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIGFkYXRhPzogc3RyaW5nO1xuICB9XG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBtZW1vcnlTaXplID0gb3B0aW9ucz8ubWVtb3J5U2l6ZSA/PyBBUkdPTjJfREVGQVVMVFMubWVtb3J5U2l6ZTtcbiAgY29uc3QgaXRlcmF0aW9ucyA9IG9wdGlvbnM/Lml0ZXJhdGlvbnMgPz8gQVJHT04yX0RFRkFVTFRTLml0ZXJhdGlvbnM7XG4gIGNvbnN0IHBhcmFsbGVsaXNtID0gb3B0aW9ucz8ucGFyYWxsZWxpc20gPz8gQVJHT04yX0RFRkFVTFRTLnBhcmFsbGVsaXNtO1xuXG4gIGNvbnN0IHNhbHQgPSBvcHRpb25zPy5zYWx0ID8/IG5ldyBVaW50OEFycmF5KHJhbmRvbUJ5dGVzKEFSR09OMl9ERUZBVUxUUy5zYWx0TGVuZ3RoKSk7XG4gIGlmIChzYWx0Lmxlbmd0aCAhPT0gQVJHT04yX0RFRkFVTFRTLnNhbHRMZW5ndGgpIHRocm93IG5ldyBFcnJvcihgc2FsdCBtdXN0IGJlICR7QVJHT04yX0RFRkFVTFRTLnNhbHRMZW5ndGh9IGJ5dGVzYCk7XG5cbiAgY29uc3QgaXYgPSBvcHRpb25zPy5pdiA/PyBuZXcgVWludDhBcnJheShyYW5kb21CeXRlcyhHQ01fSVZfTEVOR1RIKSk7XG4gIGlmIChpdi5sZW5ndGggIT09IEdDTV9JVl9MRU5HVEgpIHRocm93IG5ldyBFcnJvcihgaXYgbXVzdCBiZSAke0dDTV9JVl9MRU5HVEh9IGJ5dGVzYCk7XG5cbiAgY29uc3QgYWRhdGFCeXRlcyA9IG9wdGlvbnM/LmFkYXRhID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKG9wdGlvbnMuYWRhdGEpIDogdW5kZWZpbmVkO1xuICBjb25zdCBrZXkgPSBhd2FpdCBhcmdvbjJUb0Flc0tleShwYXNzd29yZCwgc2FsdCwgeyBtZW1vcnlTaXplLCBpdGVyYXRpb25zLCBwYXJhbGxlbGlzbSB9KTtcbiAgY29uc3QgY3QgPSBhd2FpdCBhZXNHY21FbmNyeXB0KGtleSwgaXYsIHBsYWludGV4dCwgYWRhdGFCeXRlcyk7XG5cbiAgY29uc3QgZW52ZWxvcGU6IFYyRW52ZWxvcGUgPSB7XG4gICAgdjogMixcbiAgICBtOiBtZW1vcnlTaXplLFxuICAgIHQ6IGl0ZXJhdGlvbnMsXG4gICAgcDogcGFyYWxsZWxpc20sXG4gICAgc2FsdDogQnVmZmVyLmZyb20oc2FsdCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIGl2OiBCdWZmZXIuZnJvbShpdikudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIGN0OiBCdWZmZXIuZnJvbShjdCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICB9O1xuICBpZiAob3B0aW9ucz8uYWRhdGEpIGVudmVsb3BlLmFkYXRhID0gb3B0aW9ucy5hZGF0YTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGEgdjIgZW52ZWxvcGUuIEF1dG8tZGV0ZWN0cyBzaGFwZTpcbiAqICAgLSBTdGFuZGFyZCAgKEFyZ29uMiBwYXJhbXMsIG5vIGhrZGZTYWx0KTogQXJnb24yaWQgLT4gQUVTLUdDTVxuICogICAtIFNlc3Npb24gICAoQXJnb24yIHBhcmFtcyArIGhrZGZTYWx0KTogQXJnb24yaWQgLT4gSEtERiAtPiBBRVMtR0NNXG4gKiAgIC0gSEtERi1vbmx5IChoa2RmU2FsdCwgbm8gQXJnb24yIHBhcmFtcyk6IEhLREYocGFzc3dvcmQpIC0+IEFFUy1HQ01cbiAqXG4gKiBBbGwgcGFyYW1ldGVycyBhcmUgc3RvcmVkIGluIHRoZSBlbnZlbG9wZSAtLSBubyBzZXNzaW9uIGNvbnRleHQgcmVxdWlyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNyeXB0VjIocGFzc3dvcmQ6IHN0cmluZywgY2lwaGVydGV4dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZW52ZWxvcGUgPSBwYXJzZVYyRW52ZWxvcGUoY2lwaGVydGV4dCk7XG4gIGNvbnN0IGl2ID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oZW52ZWxvcGUuaXYsICdiYXNlNjQnKSk7XG4gIGNvbnN0IGN0ID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oZW52ZWxvcGUuY3QsICdiYXNlNjQnKSk7XG4gIGNvbnN0IGFkYXRhQnl0ZXMgPSBlbnZlbG9wZS5hZGF0YSA/IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShlbnZlbG9wZS5hZGF0YSkgOiB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzSGtkZk9ubHlFbnZlbG9wZShlbnZlbG9wZSkpIHtcbiAgICBjb25zdCBoa2RmS2V5ID0gYXdhaXQgcGFzc3dvcmRUb0hrZGZLZXkocGFzc3dvcmQpO1xuICAgIGNvbnN0IGhrZGZTYWx0ID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oZW52ZWxvcGUuaGtkZlNhbHQsICdiYXNlNjQnKSk7XG4gICAgY29uc3QgYWVzS2V5ID0gYXdhaXQgaGtkZkRlcml2ZUFlc0tleShoa2RmS2V5LCBoa2RmU2FsdCwgJ2RlY3J5cHQnLCBIS0RGX09OTFlfSU5GTyk7XG4gICAgcmV0dXJuIGFlc0djbURlY3J5cHQoYWVzS2V5LCBpdiwgY3QsIGFkYXRhQnl0ZXMpO1xuICB9XG5cbiAgaWYgKCFoYXNBcmdvbjJQYXJhbXMoZW52ZWxvcGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd2MiBkZWNyeXB0OiBpbnZhbGlkIGVudmVsb3BlJyk7XG4gIH1cblxuICBjb25zdCBzYWx0ID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oZW52ZWxvcGUuc2FsdCwgJ2Jhc2U2NCcpKTtcbiAgY29uc3QgcGFyYW1zID0geyBtZW1vcnlTaXplOiBlbnZlbG9wZS5tLCBpdGVyYXRpb25zOiBlbnZlbG9wZS50LCBwYXJhbGxlbGlzbTogZW52ZWxvcGUucCB9O1xuXG4gIGlmIChlbnZlbG9wZS5oa2RmU2FsdCkge1xuICAgIGNvbnN0IGhrZGZLZXkgPSBhd2FpdCBhcmdvbjJUb0hrZGZLZXkocGFzc3dvcmQsIHNhbHQsIHBhcmFtcyk7XG4gICAgY29uc3QgaGtkZlNhbHQgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShlbnZlbG9wZS5oa2RmU2FsdCwgJ2Jhc2U2NCcpKTtcbiAgICBjb25zdCBhZXNLZXkgPSBhd2FpdCBoa2RmRGVyaXZlQWVzS2V5KGhrZGZLZXksIGhrZGZTYWx0LCAnZGVjcnlwdCcpO1xuICAgIHJldHVybiBhZXNHY21EZWNyeXB0KGFlc0tleSwgaXYsIGN0LCBhZGF0YUJ5dGVzKTtcbiAgfVxuXG4gIGNvbnN0IGtleSA9IGF3YWl0IGFyZ29uMlRvQWVzS2V5KHBhc3N3b3JkLCBzYWx0LCBwYXJhbXMpO1xuICByZXR1cm4gYWVzR2NtRGVjcnlwdChrZXksIGl2LCBjdCwgYWRhdGFCeXRlcyk7XG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Runs Argon2id once on creation, then derives per-call AES-256-GCM keys via HKDF.
3
+ * Use when encrypting or decrypting multiple values with the same password.
4
+ *
5
+ * Session envelopes are self-describing and can be decrypted standalone via decryptV2.
6
+ * Call destroy() when done to clear the cached key from memory.
7
+ */
8
+ export declare class EncryptionSession {
9
+ private hkdfKey;
10
+ private argon2SaltB64;
11
+ private readonly memorySize;
12
+ private readonly iterations;
13
+ private readonly parallelism;
14
+ /** Use createEncryptionSession() instead of calling this directly. */
15
+ constructor(hkdfKey: CryptoKey, argon2SaltB64: string, params: {
16
+ memorySize: number;
17
+ iterations: number;
18
+ parallelism: number;
19
+ });
20
+ encrypt(plaintext: string, adata?: string): Promise<string>;
21
+ decrypt(ciphertext: string): Promise<string>;
22
+ destroy(): void;
23
+ private getKeyOrThrow;
24
+ private getSaltOrThrow;
25
+ private buildEnvelope;
26
+ }
27
+ /**
28
+ * v1 (SJCL) shim that satisfies the same contract as EncryptionSession but does not open a
29
+ * real session. Every encrypt/decrypt call runs its own SJCL PBKDF2 derivation via encrypt() /
30
+ * decrypt(). Exists so callers that pin `encryptionVersion: 1` can use the same
31
+ * `createEncryptionSession(pw, ver)` factory as v2 callers — no per-site useV2 branching.
32
+ * Once the sjcl-replacement rollout removes v1 encrypt, this collapses to nothing.
33
+ */
34
+ export declare class V1EncryptionSession {
35
+ private password;
36
+ constructor(password: string);
37
+ encrypt(input: string, adata?: string): Promise<string>;
38
+ decrypt(ciphertext: string): Promise<string>;
39
+ destroy(): void;
40
+ private getPasswordOrThrow;
41
+ }
42
+ /**
43
+ * Create an EncryptionSession.
44
+ *
45
+ * When encryptionVersion is undefined or 2 (the default), runs Argon2id once so every
46
+ * subsequent encrypt/decrypt derives a per-call AES key via HKDF (<1ms, native WebCrypto).
47
+ *
48
+ * When encryptionVersion is 1, returns a V1EncryptionSession shim that runs SJCL PBKDF2 on
49
+ * every call. The shim satisfies the same interface so callers that must produce v1 (SJCL)
50
+ * envelopes for legacy consumers use one factory regardless of version. No useV2 branching
51
+ * needed at the call site.
52
+ *
53
+ * Callers MUST call destroy() to clear the HKDF root (or retained password in v1 mode) from
54
+ * memory. Use-after-destroy throws.
55
+ */
56
+ export declare function createEncryptionSession(password: string, options?: {
57
+ memorySize?: number;
58
+ iterations?: number;
59
+ parallelism?: number;
60
+ salt?: Uint8Array;
61
+ encryptionVersion?: 1 | 2;
62
+ }): Promise<EncryptionSession | V1EncryptionSession>;
63
+ //# sourceMappingURL=encryptionSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryptionSession.d.ts","sourceRoot":"","sources":["../../src/encryptionSession.ts"],"names":[],"mappings":"AAeA;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,sEAAsE;gBAEpE,OAAO,EAAE,SAAS,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IASnE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY3D,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBlD,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;CAYtB;AAED;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,QAAQ,EAAE,MAAM;IAItB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,kBAAkB;CAM3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CAC3B,GACA,OAAO,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,CAmBlD"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.V1EncryptionSession = exports.EncryptionSession = void 0;
4
+ exports.createEncryptionSession = createEncryptionSession;
5
+ const crypto_1 = require("crypto");
6
+ const encrypt_1 = require("./encrypt");
7
+ const encryptV2_1 = require("./encryptV2");
8
+ /**
9
+ * Runs Argon2id once on creation, then derives per-call AES-256-GCM keys via HKDF.
10
+ * Use when encrypting or decrypting multiple values with the same password.
11
+ *
12
+ * Session envelopes are self-describing and can be decrypted standalone via decryptV2.
13
+ * Call destroy() when done to clear the cached key from memory.
14
+ */
15
+ class EncryptionSession {
16
+ /** Use createEncryptionSession() instead of calling this directly. */
17
+ constructor(hkdfKey, argon2SaltB64, params) {
18
+ this.hkdfKey = hkdfKey;
19
+ this.argon2SaltB64 = argon2SaltB64;
20
+ this.memorySize = params.memorySize;
21
+ this.iterations = params.iterations;
22
+ this.parallelism = params.parallelism;
23
+ }
24
+ async encrypt(plaintext, adata) {
25
+ const key = this.getKeyOrThrow();
26
+ const hkdfSalt = new Uint8Array((0, crypto_1.randomBytes)(encryptV2_1.HKDF_SALT_LENGTH));
27
+ const iv = new Uint8Array((0, crypto_1.randomBytes)(encryptV2_1.GCM_IV_LENGTH));
28
+ const adataBytes = adata ? new TextEncoder().encode(adata) : undefined;
29
+ const aesKey = await (0, encryptV2_1.hkdfDeriveAesKey)(key, hkdfSalt, 'encrypt');
30
+ const ct = await (0, encryptV2_1.aesGcmEncrypt)(aesKey, iv, plaintext, adataBytes);
31
+ const envelope = this.buildEnvelope(hkdfSalt, iv, ct);
32
+ if (adata)
33
+ envelope.adata = adata;
34
+ return JSON.stringify(envelope);
35
+ }
36
+ async decrypt(ciphertext) {
37
+ const key = this.getKeyOrThrow();
38
+ const envelope = (0, encryptV2_1.parseV2Envelope)(ciphertext);
39
+ if (!envelope.hkdfSalt) {
40
+ throw new Error('envelope was not encrypted with a session; use decryptV2 instead');
41
+ }
42
+ if (envelope.salt !== this.getSaltOrThrow()) {
43
+ throw new Error('envelope was not encrypted with this session');
44
+ }
45
+ const iv = new Uint8Array(Buffer.from(envelope.iv, 'base64'));
46
+ const ct = new Uint8Array(Buffer.from(envelope.ct, 'base64'));
47
+ const hkdfSalt = new Uint8Array(Buffer.from(envelope.hkdfSalt, 'base64'));
48
+ const adataBytes = envelope.adata ? new TextEncoder().encode(envelope.adata) : undefined;
49
+ const aesKey = await (0, encryptV2_1.hkdfDeriveAesKey)(key, hkdfSalt, 'decrypt');
50
+ return (0, encryptV2_1.aesGcmDecrypt)(aesKey, iv, ct, adataBytes);
51
+ }
52
+ destroy() {
53
+ this.hkdfKey = null;
54
+ this.argon2SaltB64 = null;
55
+ }
56
+ getKeyOrThrow() {
57
+ if (this.hkdfKey === null || this.argon2SaltB64 === null) {
58
+ throw new Error('EncryptionSession has been destroyed');
59
+ }
60
+ return this.hkdfKey;
61
+ }
62
+ getSaltOrThrow() {
63
+ if (this.argon2SaltB64 === null) {
64
+ throw new Error('EncryptionSession has been destroyed');
65
+ }
66
+ return this.argon2SaltB64;
67
+ }
68
+ buildEnvelope(hkdfSalt, iv, ct) {
69
+ return {
70
+ v: 2,
71
+ m: this.memorySize,
72
+ t: this.iterations,
73
+ p: this.parallelism,
74
+ salt: this.getSaltOrThrow(),
75
+ hkdfSalt: Buffer.from(hkdfSalt).toString('base64'),
76
+ iv: Buffer.from(iv).toString('base64'),
77
+ ct: Buffer.from(ct).toString('base64'),
78
+ };
79
+ }
80
+ }
81
+ exports.EncryptionSession = EncryptionSession;
82
+ /**
83
+ * v1 (SJCL) shim that satisfies the same contract as EncryptionSession but does not open a
84
+ * real session. Every encrypt/decrypt call runs its own SJCL PBKDF2 derivation via encrypt() /
85
+ * decrypt(). Exists so callers that pin `encryptionVersion: 1` can use the same
86
+ * `createEncryptionSession(pw, ver)` factory as v2 callers — no per-site useV2 branching.
87
+ * Once the sjcl-replacement rollout removes v1 encrypt, this collapses to nothing.
88
+ */
89
+ class V1EncryptionSession {
90
+ constructor(password) {
91
+ this.password = password;
92
+ }
93
+ async encrypt(input, adata) {
94
+ return (0, encrypt_1.encrypt)(this.getPasswordOrThrow(), input, { adata, encryptionVersion: 1 });
95
+ }
96
+ async decrypt(ciphertext) {
97
+ return (0, encrypt_1.decrypt)(this.getPasswordOrThrow(), ciphertext);
98
+ }
99
+ destroy() {
100
+ this.password = null;
101
+ }
102
+ getPasswordOrThrow() {
103
+ if (this.password === null) {
104
+ throw new Error('V1EncryptionSession has been destroyed');
105
+ }
106
+ return this.password;
107
+ }
108
+ }
109
+ exports.V1EncryptionSession = V1EncryptionSession;
110
+ /**
111
+ * Create an EncryptionSession.
112
+ *
113
+ * When encryptionVersion is undefined or 2 (the default), runs Argon2id once so every
114
+ * subsequent encrypt/decrypt derives a per-call AES key via HKDF (<1ms, native WebCrypto).
115
+ *
116
+ * When encryptionVersion is 1, returns a V1EncryptionSession shim that runs SJCL PBKDF2 on
117
+ * every call. The shim satisfies the same interface so callers that must produce v1 (SJCL)
118
+ * envelopes for legacy consumers use one factory regardless of version. No useV2 branching
119
+ * needed at the call site.
120
+ *
121
+ * Callers MUST call destroy() to clear the HKDF root (or retained password in v1 mode) from
122
+ * memory. Use-after-destroy throws.
123
+ */
124
+ async function createEncryptionSession(password, options) {
125
+ if (options?.encryptionVersion === 1) {
126
+ return new V1EncryptionSession(password);
127
+ }
128
+ const memorySize = options?.memorySize ?? encryptV2_1.ARGON2_DEFAULTS.memorySize;
129
+ const iterations = options?.iterations ?? encryptV2_1.ARGON2_DEFAULTS.iterations;
130
+ const parallelism = options?.parallelism ?? encryptV2_1.ARGON2_DEFAULTS.parallelism;
131
+ const params = { memorySize, iterations, parallelism };
132
+ const argon2Salt = options?.salt ?? new Uint8Array((0, crypto_1.randomBytes)(encryptV2_1.ARGON2_DEFAULTS.saltLength));
133
+ if (argon2Salt.length !== encryptV2_1.ARGON2_DEFAULTS.saltLength) {
134
+ throw new Error(`salt must be ${encryptV2_1.ARGON2_DEFAULTS.saltLength} bytes`);
135
+ }
136
+ const hkdfKey = await (0, encryptV2_1.argon2ToHkdfKey)(password, argon2Salt, params);
137
+ const argon2SaltB64 = Buffer.from(argon2Salt).toString('base64');
138
+ return new EncryptionSession(hkdfKey, argon2SaltB64, params);
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvblNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW5jcnlwdGlvblNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUpBLDBEQTRCQztBQW5MRCxtQ0FBcUM7QUFFckMsdUNBQTZDO0FBQzdDLDJDQVVxQjtBQUVyQjs7Ozs7O0dBTUc7QUFDSCxNQUFhLGlCQUFpQjtJQU01QixzRUFBc0U7SUFDdEUsWUFDRSxPQUFrQixFQUNsQixhQUFxQixFQUNyQixNQUF1RTtRQUV2RSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUEsb0JBQVcsRUFBQyw0QkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBQSxvQkFBVyxFQUFDLHlCQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN2RSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsNEJBQWdCLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLENB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XG5cbmltcG9ydCB7IGRlY3J5cHQsIGVuY3J5cHQgfSBmcm9tICcuL2VuY3J5cHQnO1xuaW1wb3J0IHtcbiAgYWVzR2NtRGVjcnlwdCxcbiAgYWVzR2NtRW5jcnlwdCxcbiAgQVJHT04yX0RFRkFVTFRTLFxuICBhcmdvbjJUb0hrZGZLZXksXG4gIEdDTV9JVl9MRU5HVEgsXG4gIGhrZGZEZXJpdmVBZXNLZXksXG4gIEhLREZfU0FMVF9MRU5HVEgsXG4gIHBhcnNlVjJFbnZlbG9wZSxcbiAgVjJFbnZlbG9wZSxcbn0gZnJvbSAnLi9lbmNyeXB0VjInO1xuXG4vKipcbiAqIFJ1bnMgQXJnb24yaWQgb25jZSBvbiBjcmVhdGlvbiwgdGhlbiBkZXJpdmVzIHBlci1jYWxsIEFFUy0yNTYtR0NNIGtleXMgdmlhIEhLREYuXG4gKiBVc2Ugd2hlbiBlbmNyeXB0aW5nIG9yIGRlY3J5cHRpbmcgbXVsdGlwbGUgdmFsdWVzIHdpdGggdGhlIHNhbWUgcGFzc3dvcmQuXG4gKlxuICogU2Vzc2lvbiBlbnZlbG9wZXMgYXJlIHNlbGYtZGVzY3JpYmluZyBhbmQgY2FuIGJlIGRlY3J5cHRlZCBzdGFuZGFsb25lIHZpYSBkZWNyeXB0VjIuXG4gKiBDYWxsIGRlc3Ryb3koKSB3aGVuIGRvbmUgdG8gY2xlYXIgdGhlIGNhY2hlZCBrZXkgZnJvbSBtZW1vcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbmNyeXB0aW9uU2Vzc2lvbiB7XG4gIHByaXZhdGUgaGtkZktleTogQ3J5cHRvS2V5IHwgbnVsbDtcbiAgcHJpdmF0ZSBhcmdvbjJTYWx0QjY0OiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbW9yeVNpemU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBpdGVyYXRpb25zOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyYWxsZWxpc206IG51bWJlcjtcbiAgLyoqIFVzZSBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbigpIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGRpcmVjdGx5LiAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBoa2RmS2V5OiBDcnlwdG9LZXksXG4gICAgYXJnb24yU2FsdEI2NDogc3RyaW5nLFxuICAgIHBhcmFtczogeyBtZW1vcnlTaXplOiBudW1iZXI7IGl0ZXJhdGlvbnM6IG51bWJlcjsgcGFyYWxsZWxpc206IG51bWJlciB9XG4gICkge1xuICAgIHRoaXMuaGtkZktleSA9IGhrZGZLZXk7XG4gICAgdGhpcy5hcmdvbjJTYWx0QjY0ID0gYXJnb24yU2FsdEI2NDtcbiAgICB0aGlzLm1lbW9yeVNpemUgPSBwYXJhbXMubWVtb3J5U2l6ZTtcbiAgICB0aGlzLml0ZXJhdGlvbnMgPSBwYXJhbXMuaXRlcmF0aW9ucztcbiAgICB0aGlzLnBhcmFsbGVsaXNtID0gcGFyYW1zLnBhcmFsbGVsaXNtO1xuICB9XG5cbiAgYXN5bmMgZW5jcnlwdChwbGFpbnRleHQ6IHN0cmluZywgYWRhdGE/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5T3JUaHJvdygpO1xuICAgIGNvbnN0IGhrZGZTYWx0ID0gbmV3IFVpbnQ4QXJyYXkocmFuZG9tQnl0ZXMoSEtERl9TQUxUX0xFTkdUSCkpO1xuICAgIGNvbnN0IGl2ID0gbmV3IFVpbnQ4QXJyYXkocmFuZG9tQnl0ZXMoR0NNX0lWX0xFTkdUSCkpO1xuICAgIGNvbnN0IGFkYXRhQnl0ZXMgPSBhZGF0YSA/IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShhZGF0YSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYWVzS2V5ID0gYXdhaXQgaGtkZkRlcml2ZUFlc0tleShrZXksIGhrZGZTYWx0LCAnZW5jcnlwdCcpO1xuICAgIGNvbnN0IGN0ID0gYXdhaXQgYWVzR2NtRW5jcnlwdChhZXNLZXksIGl2LCBwbGFpbnRleHQsIGFkYXRhQnl0ZXMpO1xuICAgIGNvbnN0IGVudmVsb3BlID0gdGhpcy5idWlsZEVudmVsb3BlKGhrZGZTYWx0LCBpdiwgY3QpO1xuICAgIGlmIChhZGF0YSkgZW52ZWxvcGUuYWRhdGEgPSBhZGF0YTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpO1xuICB9XG5cbiAgYXN5bmMgZGVjcnlwdChjaXBoZXJ0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5T3JUaHJvdygpO1xuICAgIGNvbnN0IGVudmVsb3BlID0gcGFyc2VWMkVudmVsb3BlKGNpcGhlcnRleHQpO1xuICAgIGlmICghZW52ZWxvcGUuaGtkZlNhbHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZW52ZWxvcGUgd2FzIG5vdCBlbmNyeXB0ZWQgd2l0aCBhIHNlc3Npb247IHVzZSBkZWNyeXB0VjIgaW5zdGVhZCcpO1xuICAgIH1cbiAgICBpZiAoZW52ZWxvcGUuc2FsdCAhPT0gdGhpcy5nZXRTYWx0T3JUaHJvdygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VudmVsb3BlIHdhcyBub3QgZW5jcnlwdGVkIHdpdGggdGhpcyBzZXNzaW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGl2ID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oZW52ZWxvcGUuaXYsICdiYXNlNjQnKSk7XG4gICAgY29uc3QgY3QgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShlbnZlbG9wZS5jdCwgJ2Jhc2U2NCcpKTtcbiAgICBjb25zdCBoa2RmU2FsdCA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGVudmVsb3BlLmhrZGZTYWx0LCAnYmFzZTY0JykpO1xuICAgIGNvbnN0IGFkYXRhQnl0ZXMgPSBlbnZlbG9wZS5hZGF0YSA/IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShlbnZlbG9wZS5hZGF0YSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYWVzS2V5ID0gYXdhaXQgaGtkZkRlcml2ZUFlc0tleShrZXksIGhrZGZTYWx0LCAnZGVjcnlwdCcpO1xuICAgIHJldHVybiBhZXNHY21EZWNyeXB0KGFlc0tleSwgaXYsIGN0LCBhZGF0YUJ5dGVzKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oa2RmS2V5ID0gbnVsbDtcbiAgICB0aGlzLmFyZ29uMlNhbHRCNjQgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRLZXlPclRocm93KCk6IENyeXB0b0tleSB7XG4gICAgaWYgKHRoaXMuaGtkZktleSA9PT0gbnVsbCB8fCB0aGlzLmFyZ29uMlNhbHRCNjQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGlvblNlc3Npb24gaGFzIGJlZW4gZGVzdHJveWVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhrZGZLZXk7XG4gIH1cblxuICBwcml2YXRlIGdldFNhbHRPclRocm93KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuYXJnb24yU2FsdEI2NCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0aW9uU2Vzc2lvbiBoYXMgYmVlbiBkZXN0cm95ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXJnb24yU2FsdEI2NDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRFbnZlbG9wZShoa2RmU2FsdDogVWludDhBcnJheSwgaXY6IFVpbnQ4QXJyYXksIGN0OiBVaW50OEFycmF5KTogVjJFbnZlbG9wZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHY6IDIsXG4gICAgICBtOiB0aGlzLm1lbW9yeVNpemUsXG4gICAgICB0OiB0aGlzLml0ZXJhdGlvbnMsXG4gICAgICBwOiB0aGlzLnBhcmFsbGVsaXNtLFxuICAgICAgc2FsdDogdGhpcy5nZXRTYWx0T3JUaHJvdygpLFxuICAgICAgaGtkZlNhbHQ6IEJ1ZmZlci5mcm9tKGhrZGZTYWx0KS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICBpdjogQnVmZmVyLmZyb20oaXYpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgIGN0OiBCdWZmZXIuZnJvbShjdCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiB2MSAoU0pDTCkgc2hpbSB0aGF0IHNhdGlzZmllcyB0aGUgc2FtZSBjb250cmFjdCBhcyBFbmNyeXB0aW9uU2Vzc2lvbiBidXQgZG9lcyBub3Qgb3BlbiBhXG4gKiByZWFsIHNlc3Npb24uIEV2ZXJ5IGVuY3J5cHQvZGVjcnlwdCBjYWxsIHJ1bnMgaXRzIG93biBTSkNMIFBCS0RGMiBkZXJpdmF0aW9uIHZpYSBlbmNyeXB0KCkgL1xuICogZGVjcnlwdCgpLiBFeGlzdHMgc28gY2FsbGVycyB0aGF0IHBpbiBgZW5jcnlwdGlvblZlcnNpb246IDFgIGNhbiB1c2UgdGhlIHNhbWVcbiAqIGBjcmVhdGVFbmNyeXB0aW9uU2Vzc2lvbihwdywgdmVyKWAgZmFjdG9yeSBhcyB2MiBjYWxsZXJzIOKAlCBubyBwZXItc2l0ZSB1c2VWMiBicmFuY2hpbmcuXG4gKiBPbmNlIHRoZSBzamNsLXJlcGxhY2VtZW50IHJvbGxvdXQgcmVtb3ZlcyB2MSBlbmNyeXB0LCB0aGlzIGNvbGxhcHNlcyB0byBub3RoaW5nLlxuICovXG5leHBvcnQgY2xhc3MgVjFFbmNyeXB0aW9uU2Vzc2lvbiB7XG4gIHByaXZhdGUgcGFzc3dvcmQ6IHN0cmluZyB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IocGFzc3dvcmQ6IHN0cmluZykge1xuICAgIHRoaXMucGFzc3dvcmQgPSBwYXNzd29yZDtcbiAgfVxuXG4gIGFzeW5jIGVuY3J5cHQoaW5wdXQ6IHN0cmluZywgYWRhdGE/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBlbmNyeXB0KHRoaXMuZ2V0UGFzc3dvcmRPclRocm93KCksIGlucHV0LCB7IGFkYXRhLCBlbmNyeXB0aW9uVmVyc2lvbjogMSB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlY3J5cHQoY2lwaGVydGV4dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZGVjcnlwdCh0aGlzLmdldFBhc3N3b3JkT3JUaHJvdygpLCBjaXBoZXJ0ZXh0KTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYXNzd29yZCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldFBhc3N3b3JkT3JUaHJvdygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnBhc3N3b3JkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1YxRW5jcnlwdGlvblNlc3Npb24gaGFzIGJlZW4gZGVzdHJveWVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVuY3J5cHRpb25TZXNzaW9uLlxuICpcbiAqIFdoZW4gZW5jcnlwdGlvblZlcnNpb24gaXMgdW5kZWZpbmVkIG9yIDIgKHRoZSBkZWZhdWx0KSwgcnVucyBBcmdvbjJpZCBvbmNlIHNvIGV2ZXJ5XG4gKiBzdWJzZXF1ZW50IGVuY3J5cHQvZGVjcnlwdCBkZXJpdmVzIGEgcGVyLWNhbGwgQUVTIGtleSB2aWEgSEtERiAoPDFtcywgbmF0aXZlIFdlYkNyeXB0bykuXG4gKlxuICogV2hlbiBlbmNyeXB0aW9uVmVyc2lvbiBpcyAxLCByZXR1cm5zIGEgVjFFbmNyeXB0aW9uU2Vzc2lvbiBzaGltIHRoYXQgcnVucyBTSkNMIFBCS0RGMiBvblxuICogZXZlcnkgY2FsbC4gVGhlIHNoaW0gc2F0aXNmaWVzIHRoZSBzYW1lIGludGVyZmFjZSBzbyBjYWxsZXJzIHRoYXQgbXVzdCBwcm9kdWNlIHYxIChTSkNMKVxuICogZW52ZWxvcGVzIGZvciBsZWdhY3kgY29uc3VtZXJzIHVzZSBvbmUgZmFjdG9yeSByZWdhcmRsZXNzIG9mIHZlcnNpb24uIE5vIHVzZVYyIGJyYW5jaGluZ1xuICogbmVlZGVkIGF0IHRoZSBjYWxsIHNpdGUuXG4gKlxuICogQ2FsbGVycyBNVVNUIGNhbGwgZGVzdHJveSgpIHRvIGNsZWFyIHRoZSBIS0RGIHJvb3QgKG9yIHJldGFpbmVkIHBhc3N3b3JkIGluIHYxIG1vZGUpIGZyb21cbiAqIG1lbW9yeS4gVXNlLWFmdGVyLWRlc3Ryb3kgdGhyb3dzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRW5jcnlwdGlvblNlc3Npb24oXG4gIHBhc3N3b3JkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiB7XG4gICAgbWVtb3J5U2l6ZT86IG51bWJlcjtcbiAgICBpdGVyYXRpb25zPzogbnVtYmVyO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHNhbHQ/OiBVaW50OEFycmF5O1xuICAgIGVuY3J5cHRpb25WZXJzaW9uPzogMSB8IDI7XG4gIH1cbik6IFByb21pc2U8RW5jcnlwdGlvblNlc3Npb24gfCBWMUVuY3J5cHRpb25TZXNzaW9uPiB7XG4gIGlmIChvcHRpb25zPy5lbmNyeXB0aW9uVmVyc2lvbiA9PT0gMSkge1xuICAgIHJldHVybiBuZXcgVjFFbmNyeXB0aW9uU2Vzc2lvbihwYXNzd29yZCk7XG4gIH1cblxuICBjb25zdCBtZW1vcnlTaXplID0gb3B0aW9ucz8ubWVtb3J5U2l6ZSA/PyBBUkdPTjJfREVGQVVMVFMubWVtb3J5U2l6ZTtcbiAgY29uc3QgaXRlcmF0aW9ucyA9IG9wdGlvbnM/Lml0ZXJhdGlvbnMgPz8gQVJHT04yX0RFRkFVTFRTLml0ZXJhdGlvbnM7XG4gIGNvbnN0IHBhcmFsbGVsaXNtID0gb3B0aW9ucz8ucGFyYWxsZWxpc20gPz8gQVJHT04yX0RFRkFVTFRTLnBhcmFsbGVsaXNtO1xuICBjb25zdCBwYXJhbXMgPSB7IG1lbW9yeVNpemUsIGl0ZXJhdGlvbnMsIHBhcmFsbGVsaXNtIH07XG5cbiAgY29uc3QgYXJnb24yU2FsdCA9IG9wdGlvbnM/LnNhbHQgPz8gbmV3IFVpbnQ4QXJyYXkocmFuZG9tQnl0ZXMoQVJHT04yX0RFRkFVTFRTLnNhbHRMZW5ndGgpKTtcbiAgaWYgKGFyZ29uMlNhbHQubGVuZ3RoICE9PSBBUkdPTjJfREVGQVVMVFMuc2FsdExlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc2FsdCBtdXN0IGJlICR7QVJHT04yX0RFRkFVTFRTLnNhbHRMZW5ndGh9IGJ5dGVzYCk7XG4gIH1cblxuICBjb25zdCBoa2RmS2V5ID0gYXdhaXQgYXJnb24yVG9Ia2RmS2V5KHBhc3N3b3JkLCBhcmdvbjJTYWx0LCBwYXJhbXMpO1xuICBjb25zdCBhcmdvbjJTYWx0QjY0ID0gQnVmZmVyLmZyb20oYXJnb24yU2FsdCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gIHJldHVybiBuZXcgRW5jcnlwdGlvblNlc3Npb24oaGtkZktleSwgYXJnb24yU2FsdEI2NCwgcGFyYW1zKTtcbn1cbiJdfQ==
@@ -1,6 +1,9 @@
1
1
  export * from './api';
2
2
  export * from './bitgoAPI';
3
+ export * from './decryptV1';
3
4
  export * from './encrypt';
5
+ export * from './encryptionSession';
6
+ export * from './encryptV2';
4
7
  export * from './util';
5
8
  export * from './types';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -12,7 +16,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./api"), exports);
14
18
  __exportStar(require("./bitgoAPI"), exports);
19
+ __exportStar(require("./decryptV1"), exports);
15
20
  __exportStar(require("./encrypt"), exports);
21
+ __exportStar(require("./encryptionSession"), exports);
22
+ __exportStar(require("./encryptV2"), exports);
16
23
  __exportStar(require("./util"), exports);
17
24
  __exportStar(require("./types"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCO0FBQ3RCLDZDQUEyQjtBQUMzQiw0Q0FBMEI7QUFDMUIseUNBQXVCO0FBQ3ZCLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vYml0Z29BUEknO1xuZXhwb3J0ICogZnJvbSAnLi9lbmNyeXB0JztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0Qiw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLDRDQUEwQjtBQUMxQixzREFBb0M7QUFDcEMsOENBQTRCO0FBQzVCLHlDQUF1QjtBQUN2QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL2JpdGdvQVBJJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjcnlwdFYxJztcbmV4cG9ydCAqIGZyb20gJy4vZW5jcnlwdCc7XG5leHBvcnQgKiBmcm9tICcuL2VuY3J5cHRpb25TZXNzaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZW5jcnlwdFYyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==