@bitgo-beta/sdk-core 8.2.1-beta.1911 → 8.2.1-beta.1913
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/bitgo/keychain/iKeychains.d.ts +12 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +1 -1
- package/dist/src/bitgo/keychain/keychains.d.ts +15 -3
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +32 -14
- package/dist/src/bitgo/safe/iSafe.d.ts +5 -0
- package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -1
- package/dist/src/bitgo/safe/iSafe.js +1 -1
- package/dist/src/bitgo/safe/iSafes.d.ts +34 -6
- package/dist/src/bitgo/safe/iSafes.d.ts.map +1 -1
- package/dist/src/bitgo/safe/iSafes.js +1 -1
- package/dist/src/bitgo/safe/safes.d.ts +52 -12
- package/dist/src/bitgo/safe/safes.d.ts.map +1 -1
- package/dist/src/bitgo/safe/safes.js +176 -11
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +3 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +15 -14
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +6 -3
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +3 -2
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +15 -14
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +6 -3
- package/dist/src/bitgo/wallet/iWallet.d.ts +43 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +24 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +205 -1
- package/dist/test/unit/bitgo/safe/safes.js +200 -23
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -13,24 +13,35 @@ import { Safe } from './safe';
|
|
|
13
13
|
* by the SDK, encrypted with `passphrase`, and registered on BitGo; the MPC roots run the standard
|
|
14
14
|
* hot ceremonies with the same passphrase. Self-managed cold keys and custodial safes are out of
|
|
15
15
|
* scope for v1.
|
|
16
|
+
* @experimental
|
|
16
17
|
*/
|
|
17
18
|
export interface CreateSafeOptions {
|
|
18
19
|
label: string;
|
|
19
20
|
passphrase: string;
|
|
20
21
|
}
|
|
21
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Handle returned by `initializeSafe`, threaded into the key ceremonies and finalize.
|
|
24
|
+
* @experimental
|
|
25
|
+
*/
|
|
22
26
|
export interface SafeCreationHandle {
|
|
23
27
|
safeId: string;
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
26
30
|
* The 12 minted root key ids produced by `createSafeKeys`, as 4 ordered [user, backup, bitgo]
|
|
27
31
|
* triplets — exactly the payload `finalizeSafe` consumes.
|
|
32
|
+
* @experimental
|
|
28
33
|
*/
|
|
29
34
|
export type SafeKeys = FinalizeSafeOptions;
|
|
35
|
+
/**
|
|
36
|
+
* @experimental
|
|
37
|
+
*/
|
|
30
38
|
export interface ListSafesOptions {
|
|
31
39
|
cursor?: string;
|
|
32
40
|
limit?: number;
|
|
33
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* @experimental
|
|
44
|
+
*/
|
|
34
45
|
export interface GetSafeOptions {
|
|
35
46
|
id: string;
|
|
36
47
|
}
|
|
@@ -39,20 +50,37 @@ export interface GetSafeOptions {
|
|
|
39
50
|
*/
|
|
40
51
|
export interface ISafes {
|
|
41
52
|
/**
|
|
42
|
-
* One-call convenience wrapper
|
|
43
|
-
*
|
|
53
|
+
* One-call convenience wrapper chaining the three creation phases:
|
|
54
|
+
* initialize → createSafeKeys (4 safeId-tagged ceremonies) → finalize. HOT custody only in v1.
|
|
55
|
+
* @experimental
|
|
44
56
|
*/
|
|
45
57
|
generateSafe(params: CreateSafeOptions): Promise<Safe>;
|
|
46
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Phase 1 — initialize a safe (metadata only, no key material).
|
|
60
|
+
* @experimental
|
|
61
|
+
*/
|
|
47
62
|
initializeSafe(params: InitializeSafeOptions): Promise<Safe>;
|
|
48
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Phase 2 — run the 4 root key ceremonies tagged with `safeId`; returns the 12 minted key ids.
|
|
65
|
+
* @experimental
|
|
66
|
+
*/
|
|
49
67
|
createSafeKeys(params: CreateSafeOptions & SafeCreationHandle): Promise<SafeKeys>;
|
|
50
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Phase 3 — finalize a safe with the 12 root key ids. Idempotent.
|
|
70
|
+
* @experimental
|
|
71
|
+
*/
|
|
51
72
|
finalizeSafe(safeId: string, params: FinalizeSafeOptions): Promise<Safe>;
|
|
73
|
+
/**
|
|
74
|
+
* Archive a safe. Also the abandonment path for a stuck `initializing` safe.
|
|
75
|
+
* @experimental
|
|
76
|
+
*/
|
|
77
|
+
archiveSafe(safeId: string): Promise<Safe>;
|
|
78
|
+
/** @experimental */
|
|
52
79
|
list(params?: ListSafesOptions): Promise<{
|
|
53
80
|
safes: Safe[];
|
|
54
81
|
nextCursor?: string;
|
|
55
82
|
}>;
|
|
83
|
+
/** @experimental */
|
|
56
84
|
get(params: GetSafeOptions): Promise<Safe>;
|
|
57
85
|
}
|
|
58
86
|
//# sourceMappingURL=iSafes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iSafes.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/iSafes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B
|
|
1
|
+
{"version":3,"file":"iSafes.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/iSafes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClF;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,oBAAoB;IACpB,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,oBAAoB;IACpB,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVNhZmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3NhZmUvaVNhZmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgVGhlIHNhZmUgY2xpZW50IHN1cmZhY2UgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgY2hhbmdlIChpbmNsdWRpbmcgYnJlYWtpbmdcbiAqIGNoYW5nZXMpIGJlZm9yZSB0aGUgcHVibGljIHJlbGVhc2UuXG4gKi9cbmltcG9ydCB7IEZpbmFsaXplU2FmZU9wdGlvbnMsIEluaXRpYWxpemVTYWZlT3B0aW9ucyB9IGZyb20gJy4vaVNhZmUnO1xuaW1wb3J0IHsgU2FmZSB9IGZyb20gJy4vc2FmZSc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Igc2FmZSBjcmVhdGlvbi5cbiAqXG4gKiB2MSB0YXJnZXRzIHRoZSBIT1QgY3VzdG9keSBtb2RlbCBvbmx5OiB0aGUgbXVsdGlzaWcgcm9vdCB1c2VyL2JhY2t1cCBrZXlzIGFyZSBnZW5lcmF0ZWQgbG9jYWxseVxuICogYnkgdGhlIFNESywgZW5jcnlwdGVkIHdpdGggYHBhc3NwaHJhc2VgLCBhbmQgcmVnaXN0ZXJlZCBvbiBCaXRHbzsgdGhlIE1QQyByb290cyBydW4gdGhlIHN0YW5kYXJkXG4gKiBob3QgY2VyZW1vbmllcyB3aXRoIHRoZSBzYW1lIHBhc3NwaHJhc2UuIFNlbGYtbWFuYWdlZCBjb2xkIGtleXMgYW5kIGN1c3RvZGlhbCBzYWZlcyBhcmUgb3V0IG9mXG4gKiBzY29wZSBmb3IgdjEuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2FmZU9wdGlvbnMge1xuICBsYWJlbDogc3RyaW5nO1xuICBwYXNzcGhyYXNlOiBzdHJpbmc7IC8vIGVuY3J5cHRzIHRoZSBsb2NhbGx5LWdlbmVyYXRlZCBtdWx0aXNpZyB1c2VyL2JhY2t1cCBwcnZzOyBzaGFyZWQgd2l0aCB0aGUgTVBDIGNlcmVtb25pZXNcbn1cblxuLyoqXG4gKiBIYW5kbGUgcmV0dXJuZWQgYnkgYGluaXRpYWxpemVTYWZlYCwgdGhyZWFkZWQgaW50byB0aGUga2V5IGNlcmVtb25pZXMgYW5kIGZpbmFsaXplLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVDcmVhdGlvbkhhbmRsZSB7XG4gIHNhZmVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSAxMiBtaW50ZWQgcm9vdCBrZXkgaWRzIHByb2R1Y2VkIGJ5IGBjcmVhdGVTYWZlS2V5c2AsIGFzIDQgb3JkZXJlZCBbdXNlciwgYmFja3VwLCBiaXRnb11cbiAqIHRyaXBsZXRzIOKAlCBleGFjdGx5IHRoZSBwYXlsb2FkIGBmaW5hbGl6ZVNhZmVgIGNvbnN1bWVzLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgdHlwZSBTYWZlS2V5cyA9IEZpbmFsaXplU2FmZU9wdGlvbnM7XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTYWZlc09wdGlvbnMge1xuICBjdXJzb3I/OiBzdHJpbmc7IC8vIG9wYXF1ZSBjdXJzb3IgZnJvbSBhIHByZXZpb3VzIHJlc3BvbnNlJ3MgbmV4dEN1cnNvclxuICBsaW1pdD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0U2FmZU9wdGlvbnMge1xuICBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2FmZXMge1xuICAvKipcbiAgICogT25lLWNhbGwgY29udmVuaWVuY2Ugd3JhcHBlciBjaGFpbmluZyB0aGUgdGhyZWUgY3JlYXRpb24gcGhhc2VzOlxuICAgKiBpbml0aWFsaXplIOKGkiBjcmVhdGVTYWZlS2V5cyAoNCBzYWZlSWQtdGFnZ2VkIGNlcmVtb25pZXMpIOKGkiBmaW5hbGl6ZS4gSE9UIGN1c3RvZHkgb25seSBpbiB2MS5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgZ2VuZXJhdGVTYWZlKHBhcmFtczogQ3JlYXRlU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+O1xuICAvKipcbiAgICogUGhhc2UgMSDigJQgaW5pdGlhbGl6ZSBhIHNhZmUgKG1ldGFkYXRhIG9ubHksIG5vIGtleSBtYXRlcmlhbCkuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGluaXRpYWxpemVTYWZlKHBhcmFtczogSW5pdGlhbGl6ZVNhZmVPcHRpb25zKTogUHJvbWlzZTxTYWZlPjtcbiAgLyoqXG4gICAqIFBoYXNlIDIg4oCUIHJ1biB0aGUgNCByb290IGtleSBjZXJlbW9uaWVzIHRhZ2dlZCB3aXRoIGBzYWZlSWRgOyByZXR1cm5zIHRoZSAxMiBtaW50ZWQga2V5IGlkcy5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgY3JlYXRlU2FmZUtleXMocGFyYW1zOiBDcmVhdGVTYWZlT3B0aW9ucyAmIFNhZmVDcmVhdGlvbkhhbmRsZSk6IFByb21pc2U8U2FmZUtleXM+O1xuICAvKipcbiAgICogUGhhc2UgMyDigJQgZmluYWxpemUgYSBzYWZlIHdpdGggdGhlIDEyIHJvb3Qga2V5IGlkcy4gSWRlbXBvdGVudC5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgZmluYWxpemVTYWZlKHNhZmVJZDogc3RyaW5nLCBwYXJhbXM6IEZpbmFsaXplU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+O1xuICAvKipcbiAgICogQXJjaGl2ZSBhIHNhZmUuIEFsc28gdGhlIGFiYW5kb25tZW50IHBhdGggZm9yIGEgc3R1Y2sgYGluaXRpYWxpemluZ2Agc2FmZS5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgYXJjaGl2ZVNhZmUoc2FmZUlkOiBzdHJpbmcpOiBQcm9taXNlPFNhZmU+O1xuICAvKiogQGV4cGVyaW1lbnRhbCAqL1xuICBsaXN0KHBhcmFtcz86IExpc3RTYWZlc09wdGlvbnMpOiBQcm9taXNlPHsgc2FmZXM6IFNhZmVbXTsgbmV4dEN1cnNvcj86IHN0cmluZyB9PjtcbiAgLyoqIEBleHBlcmltZW50YWwgKi9cbiAgZ2V0KHBhcmFtczogR2V0U2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+O1xufVxuIl19
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @prettier
|
|
3
|
-
*
|
|
4
|
-
* @experimental The safe client surface is experimental and may change (including breaking
|
|
5
|
-
* changes) before the public release.
|
|
6
|
-
*/
|
|
7
1
|
import { BitGoBase } from '../bitgoBase';
|
|
8
2
|
import { FinalizeSafeOptions, InitializeSafeOptions } from './iSafe';
|
|
9
3
|
import { CreateSafeOptions, GetSafeOptions, ISafes, ListSafesOptions, SafeCreationHandle, SafeKeys } from './iSafes';
|
|
@@ -25,28 +19,73 @@ export declare class Safes implements ISafes {
|
|
|
25
19
|
*/
|
|
26
20
|
private url;
|
|
27
21
|
/**
|
|
28
|
-
* One-call convenience wrapper
|
|
29
|
-
*
|
|
22
|
+
* One-call convenience wrapper chaining the three creation phases:
|
|
23
|
+
* initialize (Phase 1) → createSafeKeys (Phase 2, 4 safeId-tagged ceremonies) →
|
|
24
|
+
* finalize (Phase 3). HOT custody only in v1.
|
|
25
|
+
*
|
|
26
|
+
* If a key ceremony fails, `createSafeKeys` archives the safe before throwing, so a failed run
|
|
27
|
+
* leaves no half-created safe behind — create a new safe and retry.
|
|
28
|
+
* @experimental
|
|
30
29
|
*/
|
|
31
30
|
generateSafe(params: CreateSafeOptions): Promise<Safe>;
|
|
32
31
|
/**
|
|
33
32
|
* Phase 1 — initialize a safe (metadata only, no key material).
|
|
34
|
-
*
|
|
33
|
+
* POST /api/v2/enterprise/:eId/safes { label }
|
|
34
|
+
* @experimental
|
|
35
35
|
*/
|
|
36
36
|
initializeSafe(params: InitializeSafeOptions): Promise<Safe>;
|
|
37
37
|
/**
|
|
38
|
-
* Phase 2 — run the 4 root key ceremonies tagged with `safeId`; returns the 12 minted key ids
|
|
39
|
-
*
|
|
38
|
+
* Phase 2 — run the 4 root key ceremonies tagged with `safeId`; returns the 12 minted key ids
|
|
39
|
+
* as 4 ordered [user, backup, bitgo] triplets. HOT custody only in v1.
|
|
40
|
+
*
|
|
41
|
+
* All 4 ceremonies (2.1 multisig ①④, 2.2 MPC ②③) run in parallel. If any of them fail, the
|
|
42
|
+
* partially-created safe is archived (a legal `initializing → archived` transition, so the
|
|
43
|
+
* orphaned tagged keys are inert) and an error listing every ceremony failure is thrown —
|
|
44
|
+
* create a new safe and retry.
|
|
45
|
+
*
|
|
46
|
+
* Not independently idempotent: re-running against a safe that already has some roots hits WP's
|
|
47
|
+
* unique root-slot index.
|
|
48
|
+
* @experimental
|
|
40
49
|
*/
|
|
41
50
|
createSafeKeys(params: CreateSafeOptions & SafeCreationHandle): Promise<SafeKeys>;
|
|
51
|
+
/**
|
|
52
|
+
* Archive a safe. Also the abandonment path for a stuck `initializing` safe (used by
|
|
53
|
+
* `createSafeKeys` to clean up after a failed ceremony).
|
|
54
|
+
* POST /api/v2/enterprise/:eId/safes/:safeId/archive
|
|
55
|
+
* @experimental
|
|
56
|
+
*/
|
|
57
|
+
archiveSafe(safeId: string): Promise<Safe>;
|
|
42
58
|
/**
|
|
43
59
|
* Phase 3 — finalize a safe with the 12 root key ids as 4 ordered [user, backup, bitgo] triplets.
|
|
44
|
-
*
|
|
60
|
+
* POST /api/v2/enterprise/:eId/safes/:safeId/finalize { rootKeys }.
|
|
61
|
+
* Idempotent: re-finalizing with the same `rootKeys` returns the active safe again (200).
|
|
62
|
+
* @experimental
|
|
45
63
|
*/
|
|
46
64
|
finalizeSafe(safeId: string, params: FinalizeSafeOptions): Promise<Safe>;
|
|
65
|
+
/**
|
|
66
|
+
* Coin used to route a given root's key ceremony (see ROOT_COIN_BY_NETWORK).
|
|
67
|
+
* @experimental
|
|
68
|
+
*/
|
|
69
|
+
private coinForRoot;
|
|
70
|
+
/**
|
|
71
|
+
* Phase 2.1 helper — mint one onchain-multisig root (cold model, as wallet creation does today):
|
|
72
|
+
* generate user/backup keypairs locally, encrypt with `passphrase`, register via POST /:coin/key
|
|
73
|
+
* with `safeId`; the BitGo key is created through the same route's `source:'bitgo'` path.
|
|
74
|
+
* Returns the [user, backup, bitgo] key id triplet.
|
|
75
|
+
* @experimental
|
|
76
|
+
*/
|
|
77
|
+
private createMultisigRoot;
|
|
78
|
+
/**
|
|
79
|
+
* Phase 2.2 helper — run one MPC ceremony (DKLS for ecdsaMpc, EdDSA for eddsaMpc) via the
|
|
80
|
+
* existing `createMpc` flow with `safeId` threaded through, so the resulting user/backup/bitgo
|
|
81
|
+
* keys land tagged. Returns the [user, backup, bitgo] key id triplet.
|
|
82
|
+
* @experimental
|
|
83
|
+
*/
|
|
84
|
+
private createMpcRoot;
|
|
47
85
|
/**
|
|
48
86
|
* List the enterprise's safes (cursor pagination).
|
|
49
87
|
* Implemented in WCN-1192 Phase 3 (blocked on WCN-1177).
|
|
88
|
+
* @experimental
|
|
50
89
|
*/
|
|
51
90
|
list(params?: ListSafesOptions): Promise<{
|
|
52
91
|
safes: Safe[];
|
|
@@ -55,6 +94,7 @@ export declare class Safes implements ISafes {
|
|
|
55
94
|
/**
|
|
56
95
|
* Fetch a single safe by id.
|
|
57
96
|
* Implemented in WCN-1192 Phase 3 (blocked on WCN-1177).
|
|
97
|
+
* @experimental
|
|
58
98
|
*/
|
|
59
99
|
get(params: GetSafeOptions): Promise<Safe>;
|
|
60
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/safes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/safes.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACrH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA4B9B;;;;;;GAMG;AACH,qBAAa,KAAM,YAAW,MAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM;IAKlD;;;OAGG;IACH,OAAO,CAAC,GAAG;IAIX;;;;;;;;OAQG;IACG,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlE;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkDvF;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E;;;OAGG;IACH,OAAO,CAAC,WAAW;IAOnB;;;;;;OAMG;YACW,kBAAkB;IA0BhC;;;;;OAKG;YACW,aAAa;IAY3B;;;;OAIG;IACG,IAAI,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1F;;;;OAIG;IACG,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjD"}
|
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Safes = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @prettier
|
|
6
|
+
*
|
|
7
|
+
* @experimental The safe client surface is experimental and may change (including breaking
|
|
8
|
+
* changes) before the public release.
|
|
9
|
+
*/
|
|
10
|
+
const public_types_1 = require("@bitgo/public-types");
|
|
11
|
+
const common_1 = require("../../common");
|
|
12
|
+
const codecs_1 = require("../utils/codecs");
|
|
13
|
+
const postWithCodec_1 = require("../utils/postWithCodec");
|
|
14
|
+
const safe_1 = require("./safe");
|
|
15
|
+
/**
|
|
16
|
+
* Representative coin per root slot, by network. Safe roots are curve/scheme-scoped, not
|
|
17
|
+
* coin-scoped — WP stamps `curve` server-side from the coin's key curve, so any coin of the
|
|
18
|
+
* right (curve, scheme) works. These are stable, always-available choices used only to route
|
|
19
|
+
* the key-generation ceremony; the resulting root is interchangeable across coins of the slot.
|
|
20
|
+
* @experimental
|
|
21
|
+
*/
|
|
22
|
+
const ROOT_COIN_BY_NETWORK = {
|
|
23
|
+
mainnet: {
|
|
24
|
+
// multisig roots
|
|
25
|
+
secp256k1Multisig: 'btc',
|
|
26
|
+
ed25519Multisig: 'xlm',
|
|
27
|
+
// MPC roots
|
|
28
|
+
ecdsaMpc: 'eth',
|
|
29
|
+
eddsaMpc: 'sol',
|
|
30
|
+
},
|
|
31
|
+
testnet: {
|
|
32
|
+
// multisig roots
|
|
33
|
+
secp256k1Multisig: 'tbtc',
|
|
34
|
+
ed25519Multisig: 'txlm',
|
|
35
|
+
// MPC roots
|
|
36
|
+
ecdsaMpc: 'hteth',
|
|
37
|
+
eddsaMpc: 'tsol',
|
|
38
|
+
},
|
|
39
|
+
};
|
|
4
40
|
/**
|
|
5
41
|
* Collection accessor for a single enterprise's safes, mirroring Wallets / Enterprises.
|
|
6
42
|
* Safe routes are enterprise-scoped (/api/v2/enterprise/:eId/safes), so the accessor is
|
|
@@ -21,36 +57,164 @@ class Safes {
|
|
|
21
57
|
return this.bitgo.url(`/enterprise/${this.enterpriseId}/safes${extra}`, 2);
|
|
22
58
|
}
|
|
23
59
|
/**
|
|
24
|
-
* One-call convenience wrapper
|
|
25
|
-
*
|
|
60
|
+
* One-call convenience wrapper chaining the three creation phases:
|
|
61
|
+
* initialize (Phase 1) → createSafeKeys (Phase 2, 4 safeId-tagged ceremonies) →
|
|
62
|
+
* finalize (Phase 3). HOT custody only in v1.
|
|
63
|
+
*
|
|
64
|
+
* If a key ceremony fails, `createSafeKeys` archives the safe before throwing, so a failed run
|
|
65
|
+
* leaves no half-created safe behind — create a new safe and retry.
|
|
66
|
+
* @experimental
|
|
26
67
|
*/
|
|
27
68
|
async generateSafe(params) {
|
|
28
|
-
|
|
69
|
+
const safe = await this.initializeSafe({ label: params.label });
|
|
70
|
+
const rootKeys = await this.createSafeKeys({ ...params, safeId: safe.id() });
|
|
71
|
+
return await this.finalizeSafe(safe.id(), rootKeys);
|
|
29
72
|
}
|
|
30
73
|
/**
|
|
31
74
|
* Phase 1 — initialize a safe (metadata only, no key material).
|
|
32
|
-
*
|
|
75
|
+
* POST /api/v2/enterprise/:eId/safes { label }
|
|
76
|
+
* @experimental
|
|
33
77
|
*/
|
|
34
78
|
async initializeSafe(params) {
|
|
35
|
-
|
|
79
|
+
const response = await (0, postWithCodec_1.postWithCodec)(this.bitgo, this.url(), public_types_1.InitializeSafeBody, params).result();
|
|
80
|
+
const safeData = (0, codecs_1.decodeWithCodec)(public_types_1.SafeData, response, 'SafeData');
|
|
81
|
+
return new safe_1.Safe(this.bitgo, safeData);
|
|
36
82
|
}
|
|
37
83
|
/**
|
|
38
|
-
* Phase 2 — run the 4 root key ceremonies tagged with `safeId`; returns the 12 minted key ids
|
|
39
|
-
*
|
|
84
|
+
* Phase 2 — run the 4 root key ceremonies tagged with `safeId`; returns the 12 minted key ids
|
|
85
|
+
* as 4 ordered [user, backup, bitgo] triplets. HOT custody only in v1.
|
|
86
|
+
*
|
|
87
|
+
* All 4 ceremonies (2.1 multisig ①④, 2.2 MPC ②③) run in parallel. If any of them fail, the
|
|
88
|
+
* partially-created safe is archived (a legal `initializing → archived` transition, so the
|
|
89
|
+
* orphaned tagged keys are inert) and an error listing every ceremony failure is thrown —
|
|
90
|
+
* create a new safe and retry.
|
|
91
|
+
*
|
|
92
|
+
* Not independently idempotent: re-running against a safe that already has some roots hits WP's
|
|
93
|
+
* unique root-slot index.
|
|
94
|
+
* @experimental
|
|
40
95
|
*/
|
|
41
96
|
async createSafeKeys(params) {
|
|
42
|
-
|
|
97
|
+
const { safeId, passphrase } = params;
|
|
98
|
+
const enterprise = this.enterpriseId;
|
|
99
|
+
// `slots` MUST stay index-aligned with the Promise.allSettled array below. Ordered by scheme:
|
|
100
|
+
// the two multisig roots first, then the two MPC roots.
|
|
101
|
+
const slots = ['secp256k1Multisig', 'ed25519Multisig', 'ecdsaMpc', 'eddsaMpc'];
|
|
102
|
+
const results = await Promise.allSettled([
|
|
103
|
+
// Phase 2.1 — multisig roots (①④): local user/backup keypairs + BitGo key, all safeId-tagged.
|
|
104
|
+
this.createMultisigRoot('secp256k1Multisig', safeId, passphrase, enterprise),
|
|
105
|
+
this.createMultisigRoot('ed25519Multisig', safeId, passphrase, enterprise),
|
|
106
|
+
// Phase 2.2 — MPC roots (②③): the existing DKLS (②) and EdDSA (③) ceremonies, safeId threaded.
|
|
107
|
+
this.createMpcRoot('ecdsaMpc', safeId, passphrase, enterprise),
|
|
108
|
+
this.createMpcRoot('eddsaMpc', safeId, passphrase, enterprise),
|
|
109
|
+
]);
|
|
110
|
+
// Single pass over the settled results: `status === 'fulfilled'` narrows `.value` to a
|
|
111
|
+
// RootKeyTriplet (no cast needed), and rejections are collected per-slot for the error below.
|
|
112
|
+
const hot = {};
|
|
113
|
+
const failures = [];
|
|
114
|
+
results.forEach((result, i) => {
|
|
115
|
+
if (result.status === 'fulfilled') {
|
|
116
|
+
hot[slots[i]] = result.value;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const reason = result.reason instanceof Error ? result.reason.message : String(result.reason);
|
|
120
|
+
failures.push(`${slots[i]}: ${reason}`);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
if (failures.length > 0) {
|
|
124
|
+
// Best-effort abandon the partially-created safe so a retry starts from a clean slate. Keep
|
|
125
|
+
// the ceremony failures as the primary error; note it if the cleanup archive also failed.
|
|
126
|
+
let archiveError;
|
|
127
|
+
try {
|
|
128
|
+
await this.archiveSafe(safeId);
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
archiveError = e instanceof Error ? e : new Error(String(e));
|
|
132
|
+
}
|
|
133
|
+
let message = `Safe key generation failed for ${failures.length} root ceremony/ies ` +
|
|
134
|
+
`[${failures.join('; ')}]. The safe (${safeId}) has been archived; create a new safe and retry.`;
|
|
135
|
+
if (archiveError) {
|
|
136
|
+
message += ` NOTE: archiving the safe also failed (${archiveError.message}); archive it manually before retrying.`;
|
|
137
|
+
}
|
|
138
|
+
throw new Error(message);
|
|
139
|
+
}
|
|
140
|
+
return { rootKeys: { hot } };
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Archive a safe. Also the abandonment path for a stuck `initializing` safe (used by
|
|
144
|
+
* `createSafeKeys` to clean up after a failed ceremony).
|
|
145
|
+
* POST /api/v2/enterprise/:eId/safes/:safeId/archive
|
|
146
|
+
* @experimental
|
|
147
|
+
*/
|
|
148
|
+
async archiveSafe(safeId) {
|
|
149
|
+
const response = await this.bitgo
|
|
150
|
+
.post(this.url(`/${safeId}/archive`))
|
|
151
|
+
.send()
|
|
152
|
+
.result();
|
|
153
|
+
const safeData = (0, codecs_1.decodeWithCodec)(public_types_1.SafeData, response, 'SafeData');
|
|
154
|
+
return new safe_1.Safe(this.bitgo, safeData);
|
|
43
155
|
}
|
|
44
156
|
/**
|
|
45
157
|
* Phase 3 — finalize a safe with the 12 root key ids as 4 ordered [user, backup, bitgo] triplets.
|
|
46
|
-
*
|
|
158
|
+
* POST /api/v2/enterprise/:eId/safes/:safeId/finalize { rootKeys }.
|
|
159
|
+
* Idempotent: re-finalizing with the same `rootKeys` returns the active safe again (200).
|
|
160
|
+
* @experimental
|
|
47
161
|
*/
|
|
48
162
|
async finalizeSafe(safeId, params) {
|
|
49
|
-
|
|
163
|
+
const response = await (0, postWithCodec_1.postWithCodec)(this.bitgo, this.url(`/${safeId}/finalize`), public_types_1.FinalizeSafeBody, params).result();
|
|
164
|
+
const safeData = (0, codecs_1.decodeWithCodec)(public_types_1.SafeData, response, 'SafeData');
|
|
165
|
+
return new safe_1.Safe(this.bitgo, safeData);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Coin used to route a given root's key ceremony (see ROOT_COIN_BY_NETWORK).
|
|
169
|
+
* @experimental
|
|
170
|
+
*/
|
|
171
|
+
coinForRoot(slot) {
|
|
172
|
+
// V1Network is exactly 'bitcoin' | 'testnet', so this branch is exhaustive over every
|
|
173
|
+
// environment: 'bitcoin' is mainnet and every other value is a testnet.
|
|
174
|
+
const network = common_1.Environments[this.bitgo.getEnv()].network === 'bitcoin' ? 'mainnet' : 'testnet';
|
|
175
|
+
return this.bitgo.coin(ROOT_COIN_BY_NETWORK[network][slot]);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Phase 2.1 helper — mint one onchain-multisig root (cold model, as wallet creation does today):
|
|
179
|
+
* generate user/backup keypairs locally, encrypt with `passphrase`, register via POST /:coin/key
|
|
180
|
+
* with `safeId`; the BitGo key is created through the same route's `source:'bitgo'` path.
|
|
181
|
+
* Returns the [user, backup, bitgo] key id triplet.
|
|
182
|
+
* @experimental
|
|
183
|
+
*/
|
|
184
|
+
async createMultisigRoot(slot, safeId, passphrase, enterprise) {
|
|
185
|
+
const keychains = this.coinForRoot(slot).keychains();
|
|
186
|
+
const userKeyPair = keychains.create();
|
|
187
|
+
const userKeychainPromise = keychains.add({
|
|
188
|
+
pub: userKeyPair.pub,
|
|
189
|
+
encryptedPrv: await this.bitgo.encrypt({ input: userKeyPair.prv, password: passphrase }),
|
|
190
|
+
source: 'user',
|
|
191
|
+
safeId,
|
|
192
|
+
});
|
|
193
|
+
const backupKeychainPromise = keychains.createBackup({ passphrase, safeId });
|
|
194
|
+
const bitgoKeychainPromise = keychains.createBitGo({ enterprise, safeId });
|
|
195
|
+
const [userKeychain, backupKeychain, bitgoKeychain] = await Promise.all([
|
|
196
|
+
userKeychainPromise,
|
|
197
|
+
backupKeychainPromise,
|
|
198
|
+
bitgoKeychainPromise,
|
|
199
|
+
]);
|
|
200
|
+
return [userKeychain.id, backupKeychain.id, bitgoKeychain.id];
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Phase 2.2 helper — run one MPC ceremony (DKLS for ecdsaMpc, EdDSA for eddsaMpc) via the
|
|
204
|
+
* existing `createMpc` flow with `safeId` threaded through, so the resulting user/backup/bitgo
|
|
205
|
+
* keys land tagged. Returns the [user, backup, bitgo] key id triplet.
|
|
206
|
+
* @experimental
|
|
207
|
+
*/
|
|
208
|
+
async createMpcRoot(slot, safeId, passphrase, enterprise) {
|
|
209
|
+
const { userKeychain, backupKeychain, bitgoKeychain } = await this.coinForRoot(slot)
|
|
210
|
+
.keychains()
|
|
211
|
+
.createMpc({ multisigType: 'tss', passphrase, enterprise, safeId });
|
|
212
|
+
return [userKeychain.id, backupKeychain.id, bitgoKeychain.id];
|
|
50
213
|
}
|
|
51
214
|
/**
|
|
52
215
|
* List the enterprise's safes (cursor pagination).
|
|
53
216
|
* Implemented in WCN-1192 Phase 3 (blocked on WCN-1177).
|
|
217
|
+
* @experimental
|
|
54
218
|
*/
|
|
55
219
|
async list(params = {}) {
|
|
56
220
|
throw new Error('Safes.list is not yet implemented (WCN-1192 Phase 3)');
|
|
@@ -58,10 +222,11 @@ class Safes {
|
|
|
58
222
|
/**
|
|
59
223
|
* Fetch a single safe by id.
|
|
60
224
|
* Implemented in WCN-1192 Phase 3 (blocked on WCN-1177).
|
|
225
|
+
* @experimental
|
|
61
226
|
*/
|
|
62
227
|
async get(params) {
|
|
63
228
|
throw new Error('Safes.get is not yet implemented (WCN-1192 Phase 3)');
|
|
64
229
|
}
|
|
65
230
|
}
|
|
66
231
|
exports.Safes = Safes;
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQTs7Ozs7O0dBTUc7QUFDSCxNQUFhLEtBQUs7SUFJaEIsWUFBWSxLQUFnQixFQUFFLFlBQW9CO1FBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksQ0FBQyxZQUFZLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBeUI7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQTZCO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUE4QztRQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBYyxFQUFFLE1BQTJCO1FBQzVELE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUEyQixFQUFFO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFzQjtRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGO0FBaEVELHNCQWdFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGUgc2FmZSBjbGllbnQgc3VyZmFjZSBpcyBleHBlcmltZW50YWwgYW5kIG1heSBjaGFuZ2UgKGluY2x1ZGluZyBicmVha2luZ1xuICogY2hhbmdlcykgYmVmb3JlIHRoZSBwdWJsaWMgcmVsZWFzZS5cbiAqL1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEZpbmFsaXplU2FmZU9wdGlvbnMsIEluaXRpYWxpemVTYWZlT3B0aW9ucyB9IGZyb20gJy4vaVNhZmUnO1xuaW1wb3J0IHsgQ3JlYXRlU2FmZU9wdGlvbnMsIEdldFNhZmVPcHRpb25zLCBJU2FmZXMsIExpc3RTYWZlc09wdGlvbnMsIFNhZmVDcmVhdGlvbkhhbmRsZSwgU2FmZUtleXMgfSBmcm9tICcuL2lTYWZlcyc7XG5pbXBvcnQgeyBTYWZlIH0gZnJvbSAnLi9zYWZlJztcblxuLyoqXG4gKiBDb2xsZWN0aW9uIGFjY2Vzc29yIGZvciBhIHNpbmdsZSBlbnRlcnByaXNlJ3Mgc2FmZXMsIG1pcnJvcmluZyBXYWxsZXRzIC8gRW50ZXJwcmlzZXMuXG4gKiBTYWZlIHJvdXRlcyBhcmUgZW50ZXJwcmlzZS1zY29wZWQgKC9hcGkvdjIvZW50ZXJwcmlzZS86ZUlkL3NhZmVzKSwgc28gdGhlIGFjY2Vzc29yIGlzXG4gKiBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBlbnRlcnByaXNlIGlkIChzZWUgRW50ZXJwcmlzZS5zYWZlcygpKS5cbiAqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTYWZlcyBpbXBsZW1lbnRzIElTYWZlcyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRlcnByaXNlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBlbnRlcnByaXNlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmVudGVycHJpc2VJZCA9IGVudGVycHJpc2VJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnRlcnByaXNlLXNjb3BlZCB2MiBVUkwgZm9yIHRoZSBzYWZlcyBjb2xsZWN0aW9uLCBlLmcuIC9hcGkvdjIvZW50ZXJwcmlzZS86ZUlkL3NhZmVzXG4gICAqIEBwYXJhbSBleHRyYVxuICAgKi9cbiAgcHJpdmF0ZSB1cmwoZXh0cmEgPSAnJyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28udXJsKGAvZW50ZXJwcmlzZS8ke3RoaXMuZW50ZXJwcmlzZUlkfS9zYWZlcyR7ZXh0cmF9YCwgMik7XG4gIH1cblxuICAvKipcbiAgICogT25lLWNhbGwgY29udmVuaWVuY2Ugd3JhcHBlcjogaW5pdGlhbGl6ZSDihpIgY3JlYXRlU2FmZUtleXMgKDQgc2FmZUlkLXRhZ2dlZCBjZXJlbW9uaWVzKSDihpJcbiAgICogZmluYWxpemUg4oaSIGtleWNhcmQuIEhPVCBjdXN0b2R5IG9ubHkuIEltcGxlbWVudGVkIGluIFdDTi0xMTkyIFBoYXNlIDIuXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVNhZmUocGFyYW1zOiBDcmVhdGVTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignU2FmZXMuZ2VuZXJhdGVTYWZlIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgKFdDTi0xMTkyIFBoYXNlIDIpJyk7XG4gIH1cblxuICAvKipcbiAgICogUGhhc2UgMSDigJQgaW5pdGlhbGl6ZSBhIHNhZmUgKG1ldGFkYXRhIG9ubHksIG5vIGtleSBtYXRlcmlhbCkuXG4gICAqIEltcGxlbWVudGVkIGluIFdDTi0xMTkyIFBoYXNlIDIgKGJsb2NrZWQgb24gV0NOLTExNzUpLlxuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZVNhZmUocGFyYW1zOiBJbml0aWFsaXplU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NhZmVzLmluaXRpYWxpemVTYWZlIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgKFdDTi0xMTkyIFBoYXNlIDIpJyk7XG4gIH1cblxuICAvKipcbiAgICogUGhhc2UgMiDigJQgcnVuIHRoZSA0IHJvb3Qga2V5IGNlcmVtb25pZXMgdGFnZ2VkIHdpdGggYHNhZmVJZGA7IHJldHVybnMgdGhlIDEyIG1pbnRlZCBrZXkgaWRzLlxuICAgKiBJbXBsZW1lbnRlZCBpbiBXQ04tMTE5MiBQaGFzZSAyIChibG9ja2VkIG9uIFdDTi0xMTc2KS5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVNhZmVLZXlzKHBhcmFtczogQ3JlYXRlU2FmZU9wdGlvbnMgJiBTYWZlQ3JlYXRpb25IYW5kbGUpOiBQcm9taXNlPFNhZmVLZXlzPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTYWZlcy5jcmVhdGVTYWZlS2V5cyBpcyBub3QgeWV0IGltcGxlbWVudGVkIChXQ04tMTE5MiBQaGFzZSAyKScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBoYXNlIDMg4oCUIGZpbmFsaXplIGEgc2FmZSB3aXRoIHRoZSAxMiByb290IGtleSBpZHMgYXMgNCBvcmRlcmVkIFt1c2VyLCBiYWNrdXAsIGJpdGdvXSB0cmlwbGV0cy5cbiAgICogSWRlbXBvdGVudC4gSW1wbGVtZW50ZWQgaW4gV0NOLTExOTIgUGhhc2UgMiAoYmxvY2tlZCBvbiBXQ04tMTE3NSkuXG4gICAqL1xuICBhc3luYyBmaW5hbGl6ZVNhZmUoc2FmZUlkOiBzdHJpbmcsIHBhcmFtczogRmluYWxpemVTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignU2FmZXMuZmluYWxpemVTYWZlIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgKFdDTi0xMTkyIFBoYXNlIDIpJyk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCB0aGUgZW50ZXJwcmlzZSdzIHNhZmVzIChjdXJzb3IgcGFnaW5hdGlvbikuXG4gICAqIEltcGxlbWVudGVkIGluIFdDTi0xMTkyIFBoYXNlIDMgKGJsb2NrZWQgb24gV0NOLTExNzcpLlxuICAgKi9cbiAgYXN5bmMgbGlzdChwYXJhbXM6IExpc3RTYWZlc09wdGlvbnMgPSB7fSk6IFByb21pc2U8eyBzYWZlczogU2FmZVtdOyBuZXh0Q3Vyc29yPzogc3RyaW5nIH0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NhZmVzLmxpc3QgaXMgbm90IHlldCBpbXBsZW1lbnRlZCAoV0NOLTExOTIgUGhhc2UgMyknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhIHNpbmdsZSBzYWZlIGJ5IGlkLlxuICAgKiBJbXBsZW1lbnRlZCBpbiBXQ04tMTE5MiBQaGFzZSAzIChibG9ja2VkIG9uIFdDTi0xMTc3KS5cbiAgICovXG4gIGFzeW5jIGdldChwYXJhbXM6IEdldFNhZmVPcHRpb25zKTogUHJvbWlzZTxTYWZlPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTYWZlcy5nZXQgaXMgbm90IHlldCBpbXBsZW1lbnRlZCAoV0NOLTExOTIgUGhhc2UgMyknKTtcbiAgfVxufVxuIl19
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7R0FLRztBQUNILHNEQUFrSDtBQUNsSCx5Q0FBNEM7QUFHNUMsNENBQWtEO0FBQ2xELDBEQUF1RDtBQUd2RCxpQ0FBOEI7QUFFOUI7Ozs7OztHQU1HO0FBQ0gsTUFBTSxvQkFBb0IsR0FBK0Q7SUFDdkYsT0FBTyxFQUFFO1FBQ1AsaUJBQWlCO1FBQ2pCLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsWUFBWTtRQUNaLFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFFLEtBQUs7S0FDaEI7SUFDRCxPQUFPLEVBQUU7UUFDUCxpQkFBaUI7UUFDakIsaUJBQWlCLEVBQUUsTUFBTTtRQUN6QixlQUFlLEVBQUUsTUFBTTtRQUN2QixZQUFZO1FBQ1osUUFBUSxFQUFFLE9BQU87UUFDakIsUUFBUSxFQUFFLE1BQU07S0FDakI7Q0FDRixDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBYSxLQUFLO0lBSWhCLFlBQVksS0FBZ0IsRUFBRSxZQUFvQjtRQUNoRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLENBQUMsWUFBWSxTQUFTLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBeUI7UUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FB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QUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFzQjtRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGO0FBek5ELHNCQXlOQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGUgc2FmZSBjbGllbnQgc3VyZmFjZSBpcyBleHBlcmltZW50YWwgYW5kIG1heSBjaGFuZ2UgKGluY2x1ZGluZyBicmVha2luZ1xuICogY2hhbmdlcykgYmVmb3JlIHRoZSBwdWJsaWMgcmVsZWFzZS5cbiAqL1xuaW1wb3J0IHsgRmluYWxpemVTYWZlQm9keSwgSW5pdGlhbGl6ZVNhZmVCb2R5LCBSb290S2V5VHJpcGxldCwgUm9vdEtleVR5cGUsIFNhZmVEYXRhIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudHMgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgSUJhc2VDb2luIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IGRlY29kZVdpdGhDb2RlYyB9IGZyb20gJy4uL3V0aWxzL2NvZGVjcyc7XG5pbXBvcnQgeyBwb3N0V2l0aENvZGVjIH0gZnJvbSAnLi4vdXRpbHMvcG9zdFdpdGhDb2RlYyc7XG5pbXBvcnQgeyBGaW5hbGl6ZVNhZmVPcHRpb25zLCBJbml0aWFsaXplU2FmZU9wdGlvbnMgfSBmcm9tICcuL2lTYWZlJztcbmltcG9ydCB7IENyZWF0ZVNhZmVPcHRpb25zLCBHZXRTYWZlT3B0aW9ucywgSVNhZmVzLCBMaXN0U2FmZXNPcHRpb25zLCBTYWZlQ3JlYXRpb25IYW5kbGUsIFNhZmVLZXlzIH0gZnJvbSAnLi9pU2FmZXMnO1xuaW1wb3J0IHsgU2FmZSB9IGZyb20gJy4vc2FmZSc7XG5cbi8qKlxuICogUmVwcmVzZW50YXRpdmUgY29pbiBwZXIgcm9vdCBzbG90LCBieSBuZXR3b3JrLiBTYWZlIHJvb3RzIGFyZSBjdXJ2ZS9zY2hlbWUtc2NvcGVkLCBub3RcbiAqIGNvaW4tc2NvcGVkIOKAlCBXUCBzdGFtcHMgYGN1cnZlYCBzZXJ2ZXItc2lkZSBmcm9tIHRoZSBjb2luJ3Mga2V5IGN1cnZlLCBzbyBhbnkgY29pbiBvZiB0aGVcbiAqIHJpZ2h0IChjdXJ2ZSwgc2NoZW1lKSB3b3Jrcy4gVGhlc2UgYXJlIHN0YWJsZSwgYWx3YXlzLWF2YWlsYWJsZSBjaG9pY2VzIHVzZWQgb25seSB0byByb3V0ZVxuICogdGhlIGtleS1nZW5lcmF0aW9uIGNlcmVtb255OyB0aGUgcmVzdWx0aW5nIHJvb3QgaXMgaW50ZXJjaGFuZ2VhYmxlIGFjcm9zcyBjb2lucyBvZiB0aGUgc2xvdC5cbiAqIEBleHBlcmltZW50YWxcbiAqL1xuY29uc3QgUk9PVF9DT0lOX0JZX05FVFdPUks6IFJlY29yZDwnbWFpbm5ldCcgfCAndGVzdG5ldCcsIFJlY29yZDxSb290S2V5VHlwZSwgc3RyaW5nPj4gPSB7XG4gIG1haW5uZXQ6IHtcbiAgICAvLyBtdWx0aXNpZyByb290c1xuICAgIHNlY3AyNTZrMU11bHRpc2lnOiAnYnRjJyxcbiAgICBlZDI1NTE5TXVsdGlzaWc6ICd4bG0nLFxuICAgIC8vIE1QQyByb290c1xuICAgIGVjZHNhTXBjOiAnZXRoJyxcbiAgICBlZGRzYU1wYzogJ3NvbCcsXG4gIH0sXG4gIHRlc3RuZXQ6IHtcbiAgICAvLyBtdWx0aXNpZyByb290c1xuICAgIHNlY3AyNTZrMU11bHRpc2lnOiAndGJ0YycsXG4gICAgZWQyNTUxOU11bHRpc2lnOiAndHhsbScsXG4gICAgLy8gTVBDIHJvb3RzXG4gICAgZWNkc2FNcGM6ICdodGV0aCcsXG4gICAgZWRkc2FNcGM6ICd0c29sJyxcbiAgfSxcbn07XG5cbi8qKlxuICogQ29sbGVjdGlvbiBhY2Nlc3NvciBmb3IgYSBzaW5nbGUgZW50ZXJwcmlzZSdzIHNhZmVzLCBtaXJyb3JpbmcgV2FsbGV0cyAvIEVudGVycHJpc2VzLlxuICogU2FmZSByb3V0ZXMgYXJlIGVudGVycHJpc2Utc2NvcGVkICgvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlcyksIHNvIHRoZSBhY2Nlc3NvciBpc1xuICogY29uc3RydWN0ZWQgd2l0aCB0aGUgZW50ZXJwcmlzZSBpZCAoc2VlIEVudGVycHJpc2Uuc2FmZXMoKSkuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgU2FmZXMgaW1wbGVtZW50cyBJU2FmZXMge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50ZXJwcmlzZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgZW50ZXJwcmlzZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5lbnRlcnByaXNlSWQgPSBlbnRlcnByaXNlSWQ7XG4gIH1cblxuICAvKipcbiAgICogRW50ZXJwcmlzZS1zY29wZWQgdjIgVVJMIGZvciB0aGUgc2FmZXMgY29sbGVjdGlvbiwgZS5nLiAvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlc1xuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHByaXZhdGUgdXJsKGV4dHJhID0gJycpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJpdGdvLnVybChgL2VudGVycHJpc2UvJHt0aGlzLmVudGVycHJpc2VJZH0vc2FmZXMke2V4dHJhfWAsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uZS1jYWxsIGNvbnZlbmllbmNlIHdyYXBwZXIgY2hhaW5pbmcgdGhlIHRocmVlIGNyZWF0aW9uIHBoYXNlczpcbiAgICogaW5pdGlhbGl6ZSAoUGhhc2UgMSkg4oaSIGNyZWF0ZVNhZmVLZXlzIChQaGFzZSAyLCA0IHNhZmVJZC10YWdnZWQgY2VyZW1vbmllcykg4oaSXG4gICAqIGZpbmFsaXplIChQaGFzZSAzKS4gSE9UIGN1c3RvZHkgb25seSBpbiB2MS5cbiAgICpcbiAgICogSWYgYSBrZXkgY2VyZW1vbnkgZmFpbHMsIGBjcmVhdGVTYWZlS2V5c2AgYXJjaGl2ZXMgdGhlIHNhZmUgYmVmb3JlIHRocm93aW5nLCBzbyBhIGZhaWxlZCBydW5cbiAgICogbGVhdmVzIG5vIGhhbGYtY3JlYXRlZCBzYWZlIGJlaGluZCDigJQgY3JlYXRlIGEgbmV3IHNhZmUgYW5kIHJldHJ5LlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVNhZmUocGFyYW1zOiBDcmVhdGVTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT4ge1xuICAgIGNvbnN0IHNhZmUgPSBhd2FpdCB0aGlzLmluaXRpYWxpemVTYWZlKHsgbGFiZWw6IHBhcmFtcy5sYWJlbCB9KTtcbiAgICBjb25zdCByb290S2V5cyA9IGF3YWl0IHRoaXMuY3JlYXRlU2FmZUtleXMoeyAuLi5wYXJhbXMsIHNhZmVJZDogc2FmZS5pZCgpIH0pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmFsaXplU2FmZShzYWZlLmlkKCksIHJvb3RLZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaGFzZSAxIOKAlCBpbml0aWFsaXplIGEgc2FmZSAobWV0YWRhdGEgb25seSwgbm8ga2V5IG1hdGVyaWFsKS5cbiAgICogUE9TVCAvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlcyB7IGxhYmVsIH1cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZVNhZmUocGFyYW1zOiBJbml0aWFsaXplU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3RXaXRoQ29kZWModGhpcy5iaXRnbywgdGhpcy51cmwoKSwgSW5pdGlhbGl6ZVNhZmVCb2R5LCBwYXJhbXMpLnJlc3VsdCgpO1xuICAgIGNvbnN0IHNhZmVEYXRhID0gZGVjb2RlV2l0aENvZGVjKFNhZmVEYXRhLCByZXNwb25zZSwgJ1NhZmVEYXRhJyk7XG4gICAgcmV0dXJuIG5ldyBTYWZlKHRoaXMuYml0Z28sIHNhZmVEYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaGFzZSAyIOKAlCBydW4gdGhlIDQgcm9vdCBrZXkgY2VyZW1vbmllcyB0YWdnZWQgd2l0aCBgc2FmZUlkYDsgcmV0dXJucyB0aGUgMTIgbWludGVkIGtleSBpZHNcbiAgICogYXMgNCBvcmRlcmVkIFt1c2VyLCBiYWNrdXAsIGJpdGdvXSB0cmlwbGV0cy4gSE9UIGN1c3RvZHkgb25seSBpbiB2MS5cbiAgICpcbiAgICogQWxsIDQgY2VyZW1vbmllcyAoMi4xIG11bHRpc2lnIOKRoOKRoywgMi4yIE1QQyDikaHikaIpIHJ1biBpbiBwYXJhbGxlbC4gSWYgYW55IG9mIHRoZW0gZmFpbCwgdGhlXG4gICAqIHBhcnRpYWxseS1jcmVhdGVkIHNhZmUgaXMgYXJjaGl2ZWQgKGEgbGVnYWwgYGluaXRpYWxpemluZyDihpIgYXJjaGl2ZWRgIHRyYW5zaXRpb24sIHNvIHRoZVxuICAgKiBvcnBoYW5lZCB0YWdnZWQga2V5cyBhcmUgaW5lcnQpIGFuZCBhbiBlcnJvciBsaXN0aW5nIGV2ZXJ5IGNlcmVtb255IGZhaWx1cmUgaXMgdGhyb3duIOKAlFxuICAgKiBjcmVhdGUgYSBuZXcgc2FmZSBhbmQgcmV0cnkuXG4gICAqXG4gICAqIE5vdCBpbmRlcGVuZGVudGx5IGlkZW1wb3RlbnQ6IHJlLXJ1bm5pbmcgYWdhaW5zdCBhIHNhZmUgdGhhdCBhbHJlYWR5IGhhcyBzb21lIHJvb3RzIGhpdHMgV1Anc1xuICAgKiB1bmlxdWUgcm9vdC1zbG90IGluZGV4LlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBjcmVhdGVTYWZlS2V5cyhwYXJhbXM6IENyZWF0ZVNhZmVPcHRpb25zICYgU2FmZUNyZWF0aW9uSGFuZGxlKTogUHJvbWlzZTxTYWZlS2V5cz4ge1xuICAgIGNvbnN0IHsgc2FmZUlkLCBwYXNzcGhyYXNlIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgZW50ZXJwcmlzZSA9IHRoaXMuZW50ZXJwcmlzZUlkO1xuXG4gICAgLy8gYHNsb3RzYCBNVVNUIHN0YXkgaW5kZXgtYWxpZ25lZCB3aXRoIHRoZSBQcm9taXNlLmFsbFNldHRsZWQgYXJyYXkgYmVsb3cuIE9yZGVyZWQgYnkgc2NoZW1lOlxuICAgIC8vIHRoZSB0d28gbXVsdGlzaWcgcm9vdHMgZmlyc3QsIHRoZW4gdGhlIHR3byBNUEMgcm9vdHMuXG4gICAgY29uc3Qgc2xvdHM6IFJvb3RLZXlUeXBlW10gPSBbJ3NlY3AyNTZrMU11bHRpc2lnJywgJ2VkMjU1MTlNdWx0aXNpZycsICdlY2RzYU1wYycsICdlZGRzYU1wYyddO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgLy8gUGhhc2UgMi4xIOKAlCBtdWx0aXNpZyByb290cyAo4pGg4pGjKTogbG9jYWwgdXNlci9iYWNrdXAga2V5cGFpcnMgKyBCaXRHbyBrZXksIGFsbCBzYWZlSWQtdGFnZ2VkLlxuICAgICAgdGhpcy5jcmVhdGVNdWx0aXNpZ1Jvb3QoJ3NlY3AyNTZrMU11bHRpc2lnJywgc2FmZUlkLCBwYXNzcGhyYXNlLCBlbnRlcnByaXNlKSxcbiAgICAgIHRoaXMuY3JlYXRlTXVsdGlzaWdSb290KCdlZDI1NTE5TXVsdGlzaWcnLCBzYWZlSWQsIHBhc3NwaHJhc2UsIGVudGVycHJpc2UpLFxuICAgICAgLy8gUGhhc2UgMi4yIOKAlCBNUEMgcm9vdHMgKOKRoeKRoik6IHRoZSBleGlzdGluZyBES0xTICjikaEpIGFuZCBFZERTQSAo4pGiKSBjZXJlbW9uaWVzLCBzYWZlSWQgdGhyZWFkZWQuXG4gICAgICB0aGlzLmNyZWF0ZU1wY1Jvb3QoJ2VjZHNhTXBjJywgc2FmZUlkLCBwYXNzcGhyYXNlLCBlbnRlcnByaXNlKSxcbiAgICAgIHRoaXMuY3JlYXRlTXBjUm9vdCgnZWRkc2FNcGMnLCBzYWZlSWQsIHBhc3NwaHJhc2UsIGVudGVycHJpc2UpLFxuICAgIF0pO1xuXG4gICAgLy8gU2luZ2xlIHBhc3Mgb3ZlciB0aGUgc2V0dGxlZCByZXN1bHRzOiBgc3RhdHVzID09PSAnZnVsZmlsbGVkJ2AgbmFycm93cyBgLnZhbHVlYCB0byBhXG4gICAgLy8gUm9vdEtleVRyaXBsZXQgKG5vIGNhc3QgbmVlZGVkKSwgYW5kIHJlamVjdGlvbnMgYXJlIGNvbGxlY3RlZCBwZXItc2xvdCBmb3IgdGhlIGVycm9yIGJlbG93LlxuICAgIGNvbnN0IGhvdCA9IHt9IGFzIFNhZmVLZXlzWydyb290S2V5cyddWydob3QnXTtcbiAgICBjb25zdCBmYWlsdXJlczogc3RyaW5nW10gPSBbXTtcbiAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCwgaSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgICAgIGhvdFtzbG90c1tpXV0gPSByZXN1bHQudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWFzb24gPSByZXN1bHQucmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZXN1bHQucmVhc29uLm1lc3NhZ2UgOiBTdHJpbmcocmVzdWx0LnJlYXNvbik7XG4gICAgICAgIGZhaWx1cmVzLnB1c2goYCR7c2xvdHNbaV19OiAke3JlYXNvbn1gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChmYWlsdXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBCZXN0LWVmZm9ydCBhYmFuZG9uIHRoZSBwYXJ0aWFsbHktY3JlYXRlZCBzYWZlIHNvIGEgcmV0cnkgc3RhcnRzIGZyb20gYSBjbGVhbiBzbGF0ZS4gS2VlcFxuICAgICAgLy8gdGhlIGNlcmVtb255IGZhaWx1cmVzIGFzIHRoZSBwcmltYXJ5IGVycm9yOyBub3RlIGl0IGlmIHRoZSBjbGVhbnVwIGFyY2hpdmUgYWxzbyBmYWlsZWQuXG4gICAgICBsZXQgYXJjaGl2ZUVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXJjaGl2ZVNhZmUoc2FmZUlkKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgYXJjaGl2ZUVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihTdHJpbmcoZSkpO1xuICAgICAgfVxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBgU2FmZSBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQgZm9yICR7ZmFpbHVyZXMubGVuZ3RofSByb290IGNlcmVtb255L2llcyBgICtcbiAgICAgICAgYFske2ZhaWx1cmVzLmpvaW4oJzsgJyl9XS4gVGhlIHNhZmUgKCR7c2FmZUlkfSkgaGFzIGJlZW4gYXJjaGl2ZWQ7IGNyZWF0ZSBhIG5ldyBzYWZlIGFuZCByZXRyeS5gO1xuICAgICAgaWYgKGFyY2hpdmVFcnJvcikge1xuICAgICAgICBtZXNzYWdlICs9IGAgTk9URTogYXJjaGl2aW5nIHRoZSBzYWZlIGFsc28gZmFpbGVkICgke2FyY2hpdmVFcnJvci5tZXNzYWdlfSk7IGFyY2hpdmUgaXQgbWFudWFsbHkgYmVmb3JlIHJldHJ5aW5nLmA7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcm9vdEtleXM6IHsgaG90IH0gfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcmNoaXZlIGEgc2FmZS4gQWxzbyB0aGUgYWJhbmRvbm1lbnQgcGF0aCBmb3IgYSBzdHVjayBgaW5pdGlhbGl6aW5nYCBzYWZlICh1c2VkIGJ5XG4gICAqIGBjcmVhdGVTYWZlS2V5c2AgdG8gY2xlYW4gdXAgYWZ0ZXIgYSBmYWlsZWQgY2VyZW1vbnkpLlxuICAgKiBQT1NUIC9hcGkvdjIvZW50ZXJwcmlzZS86ZUlkL3NhZmVzLzpzYWZlSWQvYXJjaGl2ZVxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBhcmNoaXZlU2FmZShzYWZlSWQ6IHN0cmluZyk6IFByb21pc2U8U2FmZT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy51cmwoYC8ke3NhZmVJZH0vYXJjaGl2ZWApKVxuICAgICAgLnNlbmQoKVxuICAgICAgLnJlc3VsdCgpO1xuICAgIGNvbnN0IHNhZmVEYXRhID0gZGVjb2RlV2l0aENvZGVjKFNhZmVEYXRhLCByZXNwb25zZSwgJ1NhZmVEYXRhJyk7XG4gICAgcmV0dXJuIG5ldyBTYWZlKHRoaXMuYml0Z28sIHNhZmVEYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaGFzZSAzIOKAlCBmaW5hbGl6ZSBhIHNhZmUgd2l0aCB0aGUgMTIgcm9vdCBrZXkgaWRzIGFzIDQgb3JkZXJlZCBbdXNlciwgYmFja3VwLCBiaXRnb10gdHJpcGxldHMuXG4gICAqIFBPU1QgL2FwaS92Mi9lbnRlcnByaXNlLzplSWQvc2FmZXMvOnNhZmVJZC9maW5hbGl6ZSB7IHJvb3RLZXlzIH0uXG4gICAqIElkZW1wb3RlbnQ6IHJlLWZpbmFsaXppbmcgd2l0aCB0aGUgc2FtZSBgcm9vdEtleXNgIHJldHVybnMgdGhlIGFjdGl2ZSBzYWZlIGFnYWluICgyMDApLlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBmaW5hbGl6ZVNhZmUoc2FmZUlkOiBzdHJpbmcsIHBhcmFtczogRmluYWxpemVTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdFdpdGhDb2RlYyhcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICB0aGlzLnVybChgLyR7c2FmZUlkfS9maW5hbGl6ZWApLFxuICAgICAgRmluYWxpemVTYWZlQm9keSxcbiAgICAgIHBhcmFtc1xuICAgICkucmVzdWx0KCk7XG4gICAgY29uc3Qgc2FmZURhdGEgPSBkZWNvZGVXaXRoQ29kZWMoU2FmZURhdGEsIHJlc3BvbnNlLCAnU2FmZURhdGEnKTtcbiAgICByZXR1cm4gbmV3IFNhZmUodGhpcy5iaXRnbywgc2FmZURhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvaW4gdXNlZCB0byByb3V0ZSBhIGdpdmVuIHJvb3QncyBrZXkgY2VyZW1vbnkgKHNlZSBST09UX0NPSU5fQllfTkVUV09SSykuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHByaXZhdGUgY29pbkZvclJvb3Qoc2xvdDogUm9vdEtleVR5cGUpOiBJQmFzZUNvaW4ge1xuICAgIC8vIFYxTmV0d29yayBpcyBleGFjdGx5ICdiaXRjb2luJyB8ICd0ZXN0bmV0Jywgc28gdGhpcyBicmFuY2ggaXMgZXhoYXVzdGl2ZSBvdmVyIGV2ZXJ5XG4gICAgLy8gZW52aXJvbm1lbnQ6ICdiaXRjb2luJyBpcyBtYWlubmV0IGFuZCBldmVyeSBvdGhlciB2YWx1ZSBpcyBhIHRlc3RuZXQuXG4gICAgY29uc3QgbmV0d29yayA9IEVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS5uZXR3b3JrID09PSAnYml0Y29pbicgPyAnbWFpbm5ldCcgOiAndGVzdG5ldCc7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uY29pbihST09UX0NPSU5fQllfTkVUV09SS1tuZXR3b3JrXVtzbG90XSk7XG4gIH1cblxuICAvKipcbiAgICogUGhhc2UgMi4xIGhlbHBlciDigJQgbWludCBvbmUgb25jaGFpbi1tdWx0aXNpZyByb290IChjb2xkIG1vZGVsLCBhcyB3YWxsZXQgY3JlYXRpb24gZG9lcyB0b2RheSk6XG4gICAqIGdlbmVyYXRlIHVzZXIvYmFja3VwIGtleXBhaXJzIGxvY2FsbHksIGVuY3J5cHQgd2l0aCBgcGFzc3BocmFzZWAsIHJlZ2lzdGVyIHZpYSBQT1NUIC86Y29pbi9rZXlcbiAgICogd2l0aCBgc2FmZUlkYDsgdGhlIEJpdEdvIGtleSBpcyBjcmVhdGVkIHRocm91Z2ggdGhlIHNhbWUgcm91dGUncyBgc291cmNlOidiaXRnbydgIHBhdGguXG4gICAqIFJldHVybnMgdGhlIFt1c2VyLCBiYWNrdXAsIGJpdGdvXSBrZXkgaWQgdHJpcGxldC5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVNdWx0aXNpZ1Jvb3QoXG4gICAgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJyB8ICdlZDI1NTE5TXVsdGlzaWcnLFxuICAgIHNhZmVJZDogc3RyaW5nLFxuICAgIHBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICBlbnRlcnByaXNlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxSb290S2V5VHJpcGxldD4ge1xuICAgIGNvbnN0IGtleWNoYWlucyA9IHRoaXMuY29pbkZvclJvb3Qoc2xvdCkua2V5Y2hhaW5zKCk7XG5cbiAgICBjb25zdCB1c2VyS2V5UGFpciA9IGtleWNoYWlucy5jcmVhdGUoKTtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5Qcm9taXNlID0ga2V5Y2hhaW5zLmFkZCh7XG4gICAgICBwdWI6IHVzZXJLZXlQYWlyLnB1YixcbiAgICAgIGVuY3J5cHRlZFBydjogYXdhaXQgdGhpcy5iaXRnby5lbmNyeXB0KHsgaW5wdXQ6IHVzZXJLZXlQYWlyLnBydiwgcGFzc3dvcmQ6IHBhc3NwaHJhc2UgfSksXG4gICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIHNhZmVJZCxcbiAgICB9KTtcbiAgICBjb25zdCBiYWNrdXBLZXljaGFpblByb21pc2UgPSBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZSwgc2FmZUlkIH0pO1xuICAgIGNvbnN0IGJpdGdvS2V5Y2hhaW5Qcm9taXNlID0ga2V5Y2hhaW5zLmNyZWF0ZUJpdEdvKHsgZW50ZXJwcmlzZSwgc2FmZUlkIH0pO1xuXG4gICAgY29uc3QgW3VzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW5dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdXNlcktleWNoYWluUHJvbWlzZSxcbiAgICAgIGJhY2t1cEtleWNoYWluUHJvbWlzZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW5Qcm9taXNlLFxuICAgIF0pO1xuICAgIHJldHVybiBbdXNlcktleWNoYWluLmlkLCBiYWNrdXBLZXljaGFpbi5pZCwgYml0Z29LZXljaGFpbi5pZF07XG4gIH1cblxuICAvKipcbiAgICogUGhhc2UgMi4yIGhlbHBlciDigJQgcnVuIG9uZSBNUEMgY2VyZW1vbnkgKERLTFMgZm9yIGVjZHNhTXBjLCBFZERTQSBmb3IgZWRkc2FNcGMpIHZpYSB0aGVcbiAgICogZXhpc3RpbmcgYGNyZWF0ZU1wY2AgZmxvdyB3aXRoIGBzYWZlSWRgIHRocmVhZGVkIHRocm91Z2gsIHNvIHRoZSByZXN1bHRpbmcgdXNlci9iYWNrdXAvYml0Z29cbiAgICoga2V5cyBsYW5kIHRhZ2dlZC4gUmV0dXJucyB0aGUgW3VzZXIsIGJhY2t1cCwgYml0Z29dIGtleSBpZCB0cmlwbGV0LlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNyZWF0ZU1wY1Jvb3QoXG4gICAgc2xvdDogJ2VjZHNhTXBjJyB8ICdlZGRzYU1wYycsXG4gICAgc2FmZUlkOiBzdHJpbmcsXG4gICAgcGFzc3BocmFzZTogc3RyaW5nLFxuICAgIGVudGVycHJpc2U6IHN0cmluZ1xuICApOiBQcm9taXNlPFJvb3RLZXlUcmlwbGV0PiB7XG4gICAgY29uc3QgeyB1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluIH0gPSBhd2FpdCB0aGlzLmNvaW5Gb3JSb290KHNsb3QpXG4gICAgICAua2V5Y2hhaW5zKClcbiAgICAgIC5jcmVhdGVNcGMoeyBtdWx0aXNpZ1R5cGU6ICd0c3MnLCBwYXNzcGhyYXNlLCBlbnRlcnByaXNlLCBzYWZlSWQgfSk7XG4gICAgcmV0dXJuIFt1c2VyS2V5Y2hhaW4uaWQsIGJhY2t1cEtleWNoYWluLmlkLCBiaXRnb0tleWNoYWluLmlkXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IHRoZSBlbnRlcnByaXNlJ3Mgc2FmZXMgKGN1cnNvciBwYWdpbmF0aW9uKS5cbiAgICogSW1wbGVtZW50ZWQgaW4gV0NOLTExOTIgUGhhc2UgMyAoYmxvY2tlZCBvbiBXQ04tMTE3NykuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGFzeW5jIGxpc3QocGFyYW1zOiBMaXN0U2FmZXNPcHRpb25zID0ge30pOiBQcm9taXNlPHsgc2FmZXM6IFNhZmVbXTsgbmV4dEN1cnNvcj86IHN0cmluZyB9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTYWZlcy5saXN0IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgKFdDTi0xMTkyIFBoYXNlIDMpJyk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSBzaW5nbGUgc2FmZSBieSBpZC5cbiAgICogSW1wbGVtZW50ZWQgaW4gV0NOLTExOTIgUGhhc2UgMyAoYmxvY2tlZCBvbiBXQ04tMTE3NykuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGFzeW5jIGdldChwYXJhbXM6IEdldFNhZmVPcHRpb25zKTogUHJvbWlzZTxTYWZlPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTYWZlcy5nZXQgaXMgbm90IHlldCBpbXBsZW1lbnRlZCAoV0NOLTExOTIgUGhhc2UgMyknKTtcbiAgfVxufVxuIl19
|
|
@@ -21,6 +21,7 @@ export declare class EcdsaUtils extends BaseEcdsaUtils {
|
|
|
21
21
|
originalPasscodeEncryptionCode?: string | undefined;
|
|
22
22
|
webauthnInfo?: WebauthnKeyEncryptionInfo;
|
|
23
23
|
encryptionVersion?: EncryptionVersion;
|
|
24
|
+
safeId?: string;
|
|
24
25
|
}): Promise<KeychainsTriplet>;
|
|
25
26
|
createBackupKeyShares(): Promise<BackupKeyShare>;
|
|
26
27
|
createUserKeychain({ userGpgKey, backupGpgKey, bitgoPublicGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, passphrase, originalPasscodeEncryptionCode, webauthnInfo, encryptionVersion, enterprise, }: CreateEcdsaKeychainParams): Promise<Keychain>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAuC,UAAU,EAAoC,MAAM,yBAAyB,CAAC;AAI5H,OAAO,EAAsB,QAAQ,EAAW,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAErG,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,yBAAyB,EAEzB,qBAAqB,EACrB,QAAQ,EACT,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,8BAA8B,EAC9B,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,0BAA0B,EAE1B,6BAA6B,EAE7B,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAiB,MAAM,EAAkB,MAAM,0BAA0B,CAAC;AAElH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,OAAO,EAEL,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKpE,kBAAkB;AAClB,qBAAa,UAAW,SAAQ,cAAc;IACtC,+BAA+B,CACnC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,QAAQ,EACtB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,4BAA4B,EAAE,GAAG,GAChC,OAAO,CAAC,uBAAuB,CAAC;IA0CnC,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,8BAA8B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpD,YAAY,CAAC,EAAE,yBAAyB,CAAC;QACzC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"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"}
|