@bitgo-beta/sdk-lib-safes 1.0.0-beta.2 → 1.0.0-beta.20
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/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/safeDerivation.d.ts +32 -2
- package/dist/src/safeDerivation.d.ts.map +1 -1
- package/dist/src/safeDerivation.js +36 -3
- package/dist/src/safeRecovery.d.ts +27 -0
- package/dist/src/safeRecovery.d.ts.map +1 -0
- package/dist/src/safeRecovery.js +33 -0
- package/dist/src/safeSlot.d.ts +1 -1
- package/dist/src/safeSlot.d.ts.map +1 -1
- package/dist/src/safeSlot.js +3 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -22,5 +22,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
22
22
|
__exportStar(require("./ed25519KeyDeriver"), exports);
|
|
23
23
|
__exportStar(require("./ed25519Pub"), exports);
|
|
24
24
|
__exportStar(require("./safeDerivation"), exports);
|
|
25
|
+
__exportStar(require("./safeRecovery"), exports);
|
|
25
26
|
__exportStar(require("./safeSlot"), exports);
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0dBSUc7QUFDSCxzREFBb0M7QUFDcEMsK0NBQTZCO0FBQzdCLG1EQUFpQztBQUNqQyxpREFBK0I7QUFDL0IsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFB1cmUgU2FmZSBkZXJpdmF0aW9uIGxlYWYuIE5ldmVyIGltcG9ydHMgc2RrLWNvcmUvQmFzZUNvaW4vV2FsbGV0L1NhZmUva2V5LWNhcmQuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vZWQyNTUxOUtleURlcml2ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9lZDI1NTE5UHViJztcbmV4cG9ydCAqIGZyb20gJy4vc2FmZURlcml2YXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlUmVjb3ZlcnknO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlU2xvdCc7XG4iXX0=
|
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @prettier
|
|
3
3
|
*
|
|
4
|
-
* @experimental Shared safe child derivation for mint and
|
|
4
|
+
* @experimental Shared safe child derivation for mint, sign, and recovery.
|
|
5
5
|
*
|
|
6
6
|
* User child: hardened `m/<index>'` from the sequential `safe.derivationIndex[slot]`.
|
|
7
|
-
* Backup / BitGo children are soft-derived
|
|
7
|
+
* Backup / BitGo children are soft-derived at `m/<index>` client-side for recovery.
|
|
8
8
|
*
|
|
9
9
|
* Do not use `derivedFromParentWithSeed` / `deriveKeyWithSeed` (`m/999999/a/b`) —
|
|
10
10
|
* that is the custody hashed path and cannot reproduce a safe child.
|
|
11
11
|
*/
|
|
12
12
|
import * as t from 'io-ts';
|
|
13
13
|
export declare const DERIVED_FROM_PARENT_WITH_HARDENED_PATH: RegExp;
|
|
14
|
+
export type SafeChildKeyName = 'user' | 'backup' | 'bitgo';
|
|
15
|
+
type ChildKeyShape<K extends SafeChildKeyName> = K extends 'bitgo' ? {
|
|
16
|
+
pub: string;
|
|
17
|
+
} : {
|
|
18
|
+
prv: string;
|
|
19
|
+
pub: string;
|
|
20
|
+
};
|
|
21
|
+
export type SafeChildTriplet = {
|
|
22
|
+
index: number;
|
|
23
|
+
} & {
|
|
24
|
+
[K in SafeChildKeyName]: ChildKeyShape<K>;
|
|
25
|
+
};
|
|
26
|
+
export type SafeChildTripletPubs = {
|
|
27
|
+
[K in SafeChildKeyName]: {
|
|
28
|
+
pub: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
14
31
|
export declare function parseSafeDerivationIndex(index: string | number): number;
|
|
15
32
|
export declare function getSafeHardenedDerivationPath(index: string | number): string;
|
|
16
33
|
export interface DerivedFromParentWithHardenedPathBrand {
|
|
@@ -27,6 +44,18 @@ export interface SafeHardenedChildKey {
|
|
|
27
44
|
export declare function deriveSafeChildHardenedFromXprv(rootXprv: string, index: string | number): SafeHardenedChildKey;
|
|
28
45
|
/** Re-derive and assert both results match before the child is registered. */
|
|
29
46
|
export declare function deriveAndSelfCheckSafeChildHardened(rootXprv: string, index: string | number): SafeHardenedChildKey;
|
|
47
|
+
/**
|
|
48
|
+
* Derives slot-1 child key material for a caller-supplied Safe index.
|
|
49
|
+
*
|
|
50
|
+
* Index discovery belongs to the outer recovery scan (WCN-2741/WCN-2742).
|
|
51
|
+
* This pure function reproduces the triplet for one candidate index.
|
|
52
|
+
*/
|
|
53
|
+
export declare function deriveSafeSecp256k1MultisigTriplet(params: {
|
|
54
|
+
userRootXprv: string;
|
|
55
|
+
backupRootXprv: string;
|
|
56
|
+
bitgoRootXpub: string;
|
|
57
|
+
index: string | number;
|
|
58
|
+
}): SafeChildTriplet;
|
|
30
59
|
/**
|
|
31
60
|
* SLIP-0010 hardened derivation of a safe user child from an ed25519 root secret seed.
|
|
32
61
|
*
|
|
@@ -40,4 +69,5 @@ export declare function deriveAndSelfCheckSafeChildHardened(rootXprv: string, in
|
|
|
40
69
|
* `pub‖chainCode` form is only for SOFT co-signer derivation and is not used here.
|
|
41
70
|
*/
|
|
42
71
|
export declare function deriveSafeChildEd25519Hardened(rootPrv: string, index: string | number): SafeHardenedChildKey;
|
|
72
|
+
export {};
|
|
43
73
|
//# sourceMappingURL=safeDerivation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safeDerivation.d.ts","sourceRoot":"","sources":["../../src/safeDerivation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAQ3B,eAAO,MAAM,sCAAsC,QAAgB,CAAC;AAEpE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAavE;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE5E;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,iCAAiC,EAAE,OAAO,MAAM,CAAC;CAC3D;AAED,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;AAE1G,eAAO,MAAM,iCAAiC,6DAI7C,CAAC;AAcF,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO3E;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB;AAaD,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAI9G;AAED,8EAA8E;AAC9E,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAOlH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAY5G"}
|
|
1
|
+
{"version":3,"file":"safeDerivation.d.ts","sourceRoot":"","sources":["../../src/safeDerivation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAQ3B,eAAO,MAAM,sCAAsC,QAAgB,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3D,KAAK,aAAa,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAAC,SAAS,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,GAAG;KACD,CAAC,IAAI,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;KAChC,CAAC,IAAI,gBAAgB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;CACzC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAavE;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE5E;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,iCAAiC,EAAE,OAAO,MAAM,CAAC;CAC3D;AAED,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;AAE1G,eAAO,MAAM,iCAAiC,6DAI7C,CAAC;AAcF,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO3E;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB;AAaD,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAI9G;AAED,8EAA8E;AAC9E,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAOlH;AAkBD;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,GAAG,gBAAgB,CAWnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAY5G"}
|
|
@@ -39,14 +39,15 @@ exports.getSafeHardenedDerivationPath = getSafeHardenedDerivationPath;
|
|
|
39
39
|
exports.parseDerivedFromParentWithHardenedPath = parseDerivedFromParentWithHardenedPath;
|
|
40
40
|
exports.deriveSafeChildHardenedFromXprv = deriveSafeChildHardenedFromXprv;
|
|
41
41
|
exports.deriveAndSelfCheckSafeChildHardened = deriveAndSelfCheckSafeChildHardened;
|
|
42
|
+
exports.deriveSafeSecp256k1MultisigTriplet = deriveSafeSecp256k1MultisigTriplet;
|
|
42
43
|
exports.deriveSafeChildEd25519Hardened = deriveSafeChildEd25519Hardened;
|
|
43
44
|
/**
|
|
44
45
|
* @prettier
|
|
45
46
|
*
|
|
46
|
-
* @experimental Shared safe child derivation for mint and
|
|
47
|
+
* @experimental Shared safe child derivation for mint, sign, and recovery.
|
|
47
48
|
*
|
|
48
49
|
* User child: hardened `m/<index>'` from the sequential `safe.derivationIndex[slot]`.
|
|
49
|
-
* Backup / BitGo children are soft-derived
|
|
50
|
+
* Backup / BitGo children are soft-derived at `m/<index>` client-side for recovery.
|
|
50
51
|
*
|
|
51
52
|
* Do not use `derivedFromParentWithSeed` / `deriveKeyWithSeed` (`m/999999/a/b`) —
|
|
52
53
|
* that is the custody hashed path and cannot reproduce a safe child.
|
|
@@ -123,6 +124,38 @@ function deriveAndSelfCheckSafeChildHardened(rootXprv, index) {
|
|
|
123
124
|
}
|
|
124
125
|
return first;
|
|
125
126
|
}
|
|
127
|
+
function deriveSafeChildSoftFromXprv(rootXprv, index) {
|
|
128
|
+
const child = utxo_lib_1.bip32.fromBase58(rootXprv).derive(index);
|
|
129
|
+
if (!child.privateKey) {
|
|
130
|
+
throw new Error(`Failed to soft-derive safe child at m/${index}: root has no private key`);
|
|
131
|
+
}
|
|
132
|
+
return { prv: child.toBase58(), pub: child.neutered().toBase58() };
|
|
133
|
+
}
|
|
134
|
+
function deriveSafeChildSoftFromXpub(rootXpub, index) {
|
|
135
|
+
const child = utxo_lib_1.bip32.fromBase58(rootXpub).derive(index);
|
|
136
|
+
if (child.privateKey) {
|
|
137
|
+
throw new Error(`Failed to soft-derive safe child at m/${index}: root has a private key`);
|
|
138
|
+
}
|
|
139
|
+
return { pub: child.neutered().toBase58() };
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Derives slot-1 child key material for a caller-supplied Safe index.
|
|
143
|
+
*
|
|
144
|
+
* Index discovery belongs to the outer recovery scan (WCN-2741/WCN-2742).
|
|
145
|
+
* This pure function reproduces the triplet for one candidate index.
|
|
146
|
+
*/
|
|
147
|
+
function deriveSafeSecp256k1MultisigTriplet(params) {
|
|
148
|
+
const derivationIdx = parseSafeDerivationIndex(params.index);
|
|
149
|
+
const user = deriveSafeChildHardenedFromXprv(params.userRootXprv, derivationIdx);
|
|
150
|
+
const backup = deriveSafeChildSoftFromXprv(params.backupRootXprv, derivationIdx);
|
|
151
|
+
const bitgo = deriveSafeChildSoftFromXpub(params.bitgoRootXpub, derivationIdx);
|
|
152
|
+
return {
|
|
153
|
+
backup,
|
|
154
|
+
bitgo,
|
|
155
|
+
user: { prv: user.prv, pub: user.pub },
|
|
156
|
+
index: derivationIdx,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
126
159
|
/**
|
|
127
160
|
* SLIP-0010 hardened derivation of a safe user child from an ed25519 root secret seed.
|
|
128
161
|
*
|
|
@@ -148,4 +181,4 @@ function deriveSafeChildEd25519Hardened(rootPrv, index) {
|
|
|
148
181
|
derivationPath,
|
|
149
182
|
};
|
|
150
183
|
}
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZURlcml2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2FmZURlcml2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLDREQWFDO0FBRUQsc0VBRUM7QUEwQkQsd0ZBT0M7QUFtQkQsMEVBSUM7QUFHRCxrRkFPQztBQWNELHdFQVlDO0FBbElEOzs7Ozs7Ozs7O0dBVUc7QUFDSCx5Q0FBMkI7QUFDM0IsZ0RBQWtDO0FBQ2xDLG1EQUE2RDtBQUM3RCwyREFBd0Q7QUFDeEQscUNBQTJDO0FBQzNDLDZDQUEyRjtBQUUzRixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDdEIsUUFBQSxzQ0FBc0MsR0FBRyxhQUFhLENBQUM7QUFFcEUsU0FBZ0Isd0JBQXdCLENBQUMsS0FBc0I7SUFDN0QsSUFBSSxHQUFXLENBQUM7SUFDaEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixHQUFHLEdBQUcsS0FBSyxDQUFDO0lBQ2QsQ0FBQztTQUFNLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxLQUFLLG9DQUFvQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEtBQUssb0NBQW9DLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBZ0IsNkJBQTZC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Q0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFBLDBDQUE2QixFQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRSxNQUFNLFNBQVMsR0FBRyxxQ0FBaUIsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMvRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sR0FBRyxHQUFHLElBQUEseUNBQTRCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6RSxPQUFPO1FBQ0wsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUMzQyxHQUFHO1FBQ0gsY0FBYztLQUNmLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFNoYXJlZCBzYWZlIGNoaWxkIGRlcml2YXRpb24gZm9yIG1pbnQgYW5kIHNpZ24uXG4gKlxuICogVXNlciBjaGlsZDogaGFyZGVuZWQgYG0vPGluZGV4PidgIGZyb20gdGhlIHNlcXVlbnRpYWwgYHNhZmUuZGVyaXZhdGlvbkluZGV4W3Nsb3RdYC5cbiAqIEJhY2t1cCAvIEJpdEdvIGNoaWxkcmVuIGFyZSBzb2Z0LWRlcml2ZWQgc2VydmVyLXNpZGUgYXQgYG0vPGluZGV4PmAgKG5vdCBoZXJlKS5cbiAqXG4gKiBEbyBub3QgdXNlIGBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkYCAvIGBkZXJpdmVLZXlXaXRoU2VlZGAgKGBtLzk5OTk5OS9hL2JgKSDigJRcbiAqIHRoYXQgaXMgdGhlIGN1c3RvZHkgaGFzaGVkIHBhdGggYW5kIGNhbm5vdCByZXByb2R1Y2UgYSBzYWZlIGNoaWxkLlxuICovXG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCAqIGFzIG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCB7IGJpcDMyLCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IEVkMjU1MTlLZXlEZXJpdmVyIH0gZnJvbSAnLi9lZDI1NTE5S2V5RGVyaXZlcic7XG5pbXBvcnQgeyBkZWNvZGVXaXRoQ29kZWMgfSBmcm9tICcuL2NvZGVjcyc7XG5pbXBvcnQgeyBkZWNvZGVFZDI1NTE5U3RyS2V5U2VjcmV0U2VlZCwgZW5jb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleSB9IGZyb20gJy4vZWQyNTUxOVB1Yic7XG5cbmNvbnN0IE1BWF9CSVAzMl9JTkRFWCA9IDB4N2ZmZmZmZmY7XG5leHBvcnQgY29uc3QgREVSSVZFRF9GUk9NX1BBUkVOVF9XSVRIX0hBUkRFTkVEX1BBVEggPSAvXm1cXC8oXFxkKyknJC87XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoaW5kZXg6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gIGxldCBpZHg6IG51bWJlcjtcbiAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICBpZHggPSBpbmRleDtcbiAgfSBlbHNlIGlmICgvXlxcZCskLy50ZXN0KGluZGV4KSkge1xuICAgIGlkeCA9IE51bWJlcihpbmRleCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleCAnJHtpbmRleH0nOiBleHBlY3RlZCBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyYCk7XG4gIH1cbiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlkeCkgfHwgaWR4IDwgMCB8fCBpZHggPiBNQVhfQklQMzJfSU5ERVgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4ICcke2luZGV4fSc6IGV4cGVjdGVkIGEgbm9uLW5lZ2F0aXZlIGludGVnZXJgKTtcbiAgfVxuICByZXR1cm4gaWR4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoaW5kZXg6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgbS8ke3BhcnNlU2FmZURlcml2YXRpb25JbmRleChpbmRleCl9J2A7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoQnJhbmQge1xuICByZWFkb25seSBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGg6IHVuaXF1ZSBzeW1ib2w7XG59XG5cbmV4cG9ydCB0eXBlIERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCA9IHQuQnJhbmRlZDxzdHJpbmcsIERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aEJyYW5kPjtcblxuZXhwb3J0IGNvbnN0IERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCA9IHQuYnJhbmQoXG4gIHQuc3RyaW5nLFxuICAocyk6IHMgaXMgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoID0+IHBhcnNlRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoSW5kZXgocykgIT09IHVuZGVmaW5lZCxcbiAgJ0Rlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCdcbik7XG5cbmZ1bmN0aW9uIHBhcnNlRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoSW5kZXgocGF0aDogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWF0Y2ggPSBERVJJVkVEX0ZST01fUEFSRU5UX1dJVEhfSEFSREVORURfUEFUSC5leGVjKHBhdGgpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgobWF0Y2hbMV0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aChwYXRoOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCB2YWxpZGF0ZWQgPSBkZWNvZGVXaXRoQ29kZWMoRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoLCBwYXRoLCAnZGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoJyk7XG4gIGNvbnN0IGluZGV4ID0gcGFyc2VEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGhJbmRleCh2YWxpZGF0ZWQpO1xuICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGggJyR7cGF0aH0nOiBleHBlY3RlZCBtLzxuPidgKTtcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FmZUhhcmRlbmVkQ2hpbGRLZXkge1xuICBwcnY6IHN0cmluZztcbiAgcHViOiBzdHJpbmc7XG4gIGRlcml2YXRpb25QYXRoOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGNoaWxkRnJvbU5vZGUoY2hpbGQ6IEJJUDMySW50ZXJmYWNlLCBkZXJpdmF0aW9uUGF0aDogc3RyaW5nKTogU2FmZUhhcmRlbmVkQ2hpbGRLZXkge1xuICBpZiAoIWNoaWxkLnByaXZhdGVLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZXJpdmUgaGFyZGVuZWQgc2FmZSBjaGlsZCBhdCAke2Rlcml2YXRpb25QYXRofWApO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHJ2OiBjaGlsZC50b0Jhc2U1OCgpLFxuICAgIHB1YjogY2hpbGQubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgIGRlcml2YXRpb25QYXRoLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihyb290WHBydjogc3RyaW5nLCBpbmRleDogc3RyaW5nIHwgbnVtYmVyKTogU2FmZUhhcmRlbmVkQ2hpbGRLZXkge1xuICBjb25zdCBpZHggPSBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoaW5kZXgpO1xuICBjb25zdCBkZXJpdmF0aW9uUGF0aCA9IGdldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoKGlkeCk7XG4gIHJldHVybiBjaGlsZEZyb21Ob2RlKGJpcDMyLmZyb21CYXNlNTgocm9vdFhwcnYpLmRlcml2ZUhhcmRlbmVkKGlkeCksIGRlcml2YXRpb25QYXRoKTtcbn1cblxuLyoqIFJlLWRlcml2ZSBhbmQgYXNzZXJ0IGJvdGggcmVzdWx0cyBtYXRjaCBiZWZvcmUgdGhlIGNoaWxkIGlzIHJlZ2lzdGVyZWQuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlQW5kU2VsZkNoZWNrU2FmZUNoaWxkSGFyZGVuZWQocm9vdFhwcnY6IHN0cmluZywgaW5kZXg6IHN0cmluZyB8IG51bWJlcik6IFNhZmVIYXJkZW5lZENoaWxkS2V5IHtcbiAgY29uc3QgZmlyc3QgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KHJvb3RYcHJ2LCBpbmRleCk7XG4gIGNvbnN0IHNlY29uZCA9IGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYocm9vdFhwcnYsIGluZGV4KTtcbiAgaWYgKGZpcnN0LnB1YiAhPT0gc2Vjb25kLnB1YiB8fCBmaXJzdC5wcnYgIT09IHNlY29uZC5wcnYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNhZmUgY2hpbGQgc2VsZi1jaGVjayBmYWlsZWQgYXQgJHtmaXJzdC5kZXJpdmF0aW9uUGF0aH06IGRlcml2YXRpb24gd2FzIG5vdCBkZXRlcm1pbmlzdGljYCk7XG4gIH1cbiAgcmV0dXJuIGZpcnN0O1xufVxuXG4vKipcbiAqIFNMSVAtMDAxMCBoYXJkZW5lZCBkZXJpdmF0aW9uIG9mIGEgc2FmZSB1c2VyIGNoaWxkIGZyb20gYW4gZWQyNTUxOSByb290IHNlY3JldCBzZWVkLlxuICpcbiAqIGByb290UHJ2YCBpcyBhIFN0ZWxsYXIgU3RyS2V5IGBT4oCmYCBzZWNyZXQgc2VlZCAod2hhdCBzbG90LeKRoyBgZWQyNTUxOU11bHRpc2lnYCB1c2VyIHJvb3RzIHN0b3JlKS5cbiAqIFRoZSBkZXJpdmF0aW9uIHJldXNlcyB0aGUgZXhpc3RpbmcgU0xJUC0wMDEwIGltcGxlbWVudGF0aW9uIHtAbGluayBFZDI1NTE5S2V5RGVyaXZlci5kZXJpdmVQYXRofVxuICogKGhhcmRlbmVkLW9ubHkgQ0tEUHJpdiBvdmVyIHRoZSBgZWQyNTUxOSBzZWVkYCBITUFDIG1hc3RlciksIHRoZW4gZXhwYW5kcyB0aGUgcmVzdWx0aW5nIDMyLWJ5dGVcbiAqIGNoaWxkIHNlZWQgaW50byBhIGtleXBhaXIgd2l0aCBgbmFjbGAuIFRoZSBjaGlsZCBgcHViYCBpcyBhIGJhcmUgU3RyS2V5IGBH4oCmYDsgdGhlIGBwcnZgIGlzIHRoZVxuICogcmF3IDMyLWJ5dGUgY2hpbGQgc2VlZCBhcyBoZXggKHRoZSBzZWVkIGlucHV0IGEgc2lnbmVyIG5lZWRzKS5cbiAqXG4gKiBVbmxpa2UgdGhlIHNlY3AyNTZrMSBwYXRoLCBlZDI1NTE5IGhhcmRlbmVkIGRlcml2YXRpb24gbmVlZHMgbm8gY2hhaW4gY29kZSDigJQgdGhlIGNvbXBvc2l0ZVxuICogYHB1YuKAlmNoYWluQ29kZWAgZm9ybSBpcyBvbmx5IGZvciBTT0ZUIGNvLXNpZ25lciBkZXJpdmF0aW9uIGFuZCBpcyBub3QgdXNlZCBoZXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU2FmZUNoaWxkRWQyNTUxOUhhcmRlbmVkKHJvb3RQcnY6IHN0cmluZywgaW5kZXg6IHN0cmluZyB8IG51bWJlcik6IFNhZmVIYXJkZW5lZENoaWxkS2V5IHtcbiAgY29uc3QgaWR4ID0gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KGluZGV4KTtcbiAgY29uc3QgZGVyaXZhdGlvblBhdGggPSBnZXRTYWZlSGFyZGVuZWREZXJpdmF0aW9uUGF0aChpZHgpO1xuICBjb25zdCByYXdTZWVkSGV4ID0gZGVjb2RlRWQyNTUxOVN0cktleVNlY3JldFNlZWQocm9vdFBydikudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCBjaGlsZFNlZWQgPSBFZDI1NTE5S2V5RGVyaXZlci5kZXJpdmVQYXRoKGRlcml2YXRpb25QYXRoLCByYXdTZWVkSGV4KS5rZXk7XG4gIGNvbnN0IGtleVBhaXIgPSBuYWNsLnNpZ24ua2V5UGFpci5mcm9tU2VlZChVaW50OEFycmF5LmZyb20oY2hpbGRTZWVkKSk7XG4gIGNvbnN0IHB1YiA9IGVuY29kZUVkMjU1MTlTdHJLZXlQdWJsaWNLZXkoQnVmZmVyLmZyb20oa2V5UGFpci5wdWJsaWNLZXkpKTtcbiAgcmV0dXJuIHtcbiAgICBwcnY6IEJ1ZmZlci5mcm9tKGNoaWxkU2VlZCkudG9TdHJpbmcoJ2hleCcpLFxuICAgIHB1YixcbiAgICBkZXJpdmF0aW9uUGF0aCxcbiAgfTtcbn1cbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZURlcml2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2FmZURlcml2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUNBLDREQWFDO0FBRUQsc0VBRUM7QUEwQkQsd0ZBT0M7QUFtQkQsMEVBSUM7QUFHRCxrRkFPQztBQXdCRCxnRkFnQkM7QUFjRCx3RUFZQztBQXhMRDs7Ozs7Ozs7OztHQVVHO0FBQ0gseUNBQTJCO0FBQzNCLGdEQUFrQztBQUNsQyxtREFBNkQ7QUFDN0QsMkRBQXdEO0FBQ3hELHFDQUEyQztBQUMzQyw2Q0FBMkY7QUFFM0YsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDO0FBQ3RCLFFBQUEsc0NBQXNDLEdBQUcsYUFBYSxDQUFDO0FBZ0JwRSxTQUFnQix3QkFBd0IsQ0FBQyxLQUFzQjtJQUM3RCxJQUFJLEdBQVcsQ0FBQztJQUNoQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDZCxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0IsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEtBQUssb0NBQW9DLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsS0FBSyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFF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R0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3RDLEtBQUssRUFBRSxhQUFhO0tBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQiw4QkFBOEIsQ0FBQyxPQUFlLEVBQUUsS0FBc0I7SUFDcEYsTUFBTSxHQUFHLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxjQUFjLEdBQUcsNkJBQTZCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBQSwwQ0FBNkIsRUFBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQUcscUNBQWlCLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDL0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN2RSxNQUFNLEdBQUcsR0FBRyxJQUFBLHlDQUE0QixFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekUsT0FBTztRQUNMLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDM0MsR0FBRztRQUNILGNBQWM7S0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogQGV4cGVyaW1lbnRhbCBTaGFyZWQgc2FmZSBjaGlsZCBkZXJpdmF0aW9uIGZvciBtaW50LCBzaWduLCBhbmQgcmVjb3ZlcnkuXG4gKlxuICogVXNlciBjaGlsZDogaGFyZGVuZWQgYG0vPGluZGV4PidgIGZyb20gdGhlIHNlcXVlbnRpYWwgYHNhZmUuZGVyaXZhdGlvbkluZGV4W3Nsb3RdYC5cbiAqIEJhY2t1cCAvIEJpdEdvIGNoaWxkcmVuIGFyZSBzb2Z0LWRlcml2ZWQgYXQgYG0vPGluZGV4PmAgY2xpZW50LXNpZGUgZm9yIHJlY292ZXJ5LlxuICpcbiAqIERvIG5vdCB1c2UgYGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWRgIC8gYGRlcml2ZUtleVdpdGhTZWVkYCAoYG0vOTk5OTk5L2EvYmApIOKAlFxuICogdGhhdCBpcyB0aGUgY3VzdG9keSBoYXNoZWQgcGF0aCBhbmQgY2Fubm90IHJlcHJvZHVjZSBhIHNhZmUgY2hpbGQuXG4gKi9cbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0ICogYXMgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IHsgYmlwMzIsIEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgRWQyNTUxOUtleURlcml2ZXIgfSBmcm9tICcuL2VkMjU1MTlLZXlEZXJpdmVyJztcbmltcG9ydCB7IGRlY29kZVdpdGhDb2RlYyB9IGZyb20gJy4vY29kZWNzJztcbmltcG9ydCB7IGRlY29kZUVkMjU1MTlTdHJLZXlTZWNyZXRTZWVkLCBlbmNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5IH0gZnJvbSAnLi9lZDI1NTE5UHViJztcblxuY29uc3QgTUFYX0JJUDMyX0lOREVYID0gMHg3ZmZmZmZmZjtcbmV4cG9ydCBjb25zdCBERVJJVkVEX0ZST01fUEFSRU5UX1dJVEhfSEFSREVORURfUEFUSCA9IC9ebVxcLyhcXGQrKSckLztcblxuZXhwb3J0IHR5cGUgU2FmZUNoaWxkS2V5TmFtZSA9ICd1c2VyJyB8ICdiYWNrdXAnIHwgJ2JpdGdvJztcblxudHlwZSBDaGlsZEtleVNoYXBlPEsgZXh0ZW5kcyBTYWZlQ2hpbGRLZXlOYW1lPiA9IEsgZXh0ZW5kcyAnYml0Z28nID8geyBwdWI6IHN0cmluZyB9IDogeyBwcnY6IHN0cmluZzsgcHViOiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgU2FmZUNoaWxkVHJpcGxldCA9IHtcbiAgaW5kZXg6IG51bWJlcjtcbn0gJiB7XG4gIFtLIGluIFNhZmVDaGlsZEtleU5hbWVdOiBDaGlsZEtleVNoYXBlPEs+O1xufTtcblxuZXhwb3J0IHR5cGUgU2FmZUNoaWxkVHJpcGxldFB1YnMgPSB7XG4gIFtLIGluIFNhZmVDaGlsZEtleU5hbWVdOiB7IHB1Yjogc3RyaW5nIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KGluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgaWR4OiBudW1iZXI7XG4gIGlmICh0eXBlb2YgaW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgaWR4ID0gaW5kZXg7XG4gIH0gZWxzZSBpZiAoL15cXGQrJC8udGVzdChpbmRleCkpIHtcbiAgICBpZHggPSBOdW1iZXIoaW5kZXgpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzYWZlIGRlcml2YXRpb24gaW5kZXggJyR7aW5kZXh9JzogZXhwZWN0ZWQgYSBub24tbmVnYXRpdmUgaW50ZWdlcmApO1xuICB9XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihpZHgpIHx8IGlkeCA8IDAgfHwgaWR4ID4gTUFYX0JJUDMyX0lOREVYKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleCAnJHtpbmRleH0nOiBleHBlY3RlZCBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyYCk7XG4gIH1cbiAgcmV0dXJuIGlkeDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoKGluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYG0vJHtwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoaW5kZXgpfSdgO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aEJyYW5kIHtcbiAgcmVhZG9ubHkgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoOiB1bmlxdWUgc3ltYm9sO1xufVxuXG5leHBvcnQgdHlwZSBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGggPSB0LkJyYW5kZWQ8c3RyaW5nLCBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGhCcmFuZD47XG5cbmV4cG9ydCBjb25zdCBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGggPSB0LmJyYW5kKFxuICB0LnN0cmluZyxcbiAgKHMpOiBzIGlzIERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCA9PiBwYXJzZURlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aEluZGV4KHMpICE9PSB1bmRlZmluZWQsXG4gICdEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGgnXG4pO1xuXG5mdW5jdGlvbiBwYXJzZURlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aEluZGV4KHBhdGg6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1hdGNoID0gREVSSVZFRF9GUk9NX1BBUkVOVF9XSVRIX0hBUkRFTkVEX1BBVEguZXhlYyhwYXRoKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KG1hdGNoWzFdKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGgocGF0aDogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgdmFsaWRhdGVkID0gZGVjb2RlV2l0aENvZGVjKERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCwgcGF0aCwgJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCcpO1xuICBjb25zdCBpbmRleCA9IHBhcnNlRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoSW5kZXgodmFsaWRhdGVkKTtcbiAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoICcke3BhdGh9JzogZXhwZWN0ZWQgbS88bj4nYCk7XG4gIH1cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVIYXJkZW5lZENoaWxkS2V5IHtcbiAgcHJ2OiBzdHJpbmc7XG4gIHB1Yjogc3RyaW5nO1xuICBkZXJpdmF0aW9uUGF0aDogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjaGlsZEZyb21Ob2RlKGNoaWxkOiBCSVAzMkludGVyZmFjZSwgZGVyaXZhdGlvblBhdGg6IHN0cmluZyk6IFNhZmVIYXJkZW5lZENoaWxkS2V5IHtcbiAgaWYgKCFjaGlsZC5wcml2YXRlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVyaXZlIGhhcmRlbmVkIHNhZmUgY2hpbGQgYXQgJHtkZXJpdmF0aW9uUGF0aH1gKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHBydjogY2hpbGQudG9CYXNlNTgoKSxcbiAgICBwdWI6IGNoaWxkLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICBkZXJpdmF0aW9uUGF0aCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYocm9vdFhwcnY6IHN0cmluZywgaW5kZXg6IHN0cmluZyB8IG51bWJlcik6IFNhZmVIYXJkZW5lZENoaWxkS2V5IHtcbiAgY29uc3QgaWR4ID0gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KGluZGV4KTtcbiAgY29uc3QgZGVyaXZhdGlvblBhdGggPSBnZXRTYWZlSGFyZGVuZWREZXJpdmF0aW9uUGF0aChpZHgpO1xuICByZXR1cm4gY2hpbGRGcm9tTm9kZShiaXAzMi5mcm9tQmFzZTU4KHJvb3RYcHJ2KS5kZXJpdmVIYXJkZW5lZChpZHgpLCBkZXJpdmF0aW9uUGF0aCk7XG59XG5cbi8qKiBSZS1kZXJpdmUgYW5kIGFzc2VydCBib3RoIHJlc3VsdHMgbWF0Y2ggYmVmb3JlIHRoZSBjaGlsZCBpcyByZWdpc3RlcmVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUFuZFNlbGZDaGVja1NhZmVDaGlsZEhhcmRlbmVkKHJvb3RYcHJ2OiBzdHJpbmcsIGluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBTYWZlSGFyZGVuZWRDaGlsZEtleSB7XG4gIGNvbnN0IGZpcnN0ID0gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihyb290WHBydiwgaW5kZXgpO1xuICBjb25zdCBzZWNvbmQgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KHJvb3RYcHJ2LCBpbmRleCk7XG4gIGlmIChmaXJzdC5wdWIgIT09IHNlY29uZC5wdWIgfHwgZmlyc3QucHJ2ICE9PSBzZWNvbmQucHJ2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTYWZlIGNoaWxkIHNlbGYtY2hlY2sgZmFpbGVkIGF0ICR7Zmlyc3QuZGVyaXZhdGlvblBhdGh9OiBkZXJpdmF0aW9uIHdhcyBub3QgZGV0ZXJtaW5pc3RpY2ApO1xuICB9XG4gIHJldHVybiBmaXJzdDtcbn1cblxuZnVuY3Rpb24gZGVyaXZlU2FmZUNoaWxkU29mdEZyb21YcHJ2KHJvb3RYcHJ2OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB7IHBydjogc3RyaW5nOyBwdWI6IHN0cmluZyB9IHtcbiAgY29uc3QgY2hpbGQgPSBiaXAzMi5mcm9tQmFzZTU4KHJvb3RYcHJ2KS5kZXJpdmUoaW5kZXgpO1xuICBpZiAoIWNoaWxkLnByaXZhdGVLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBzb2Z0LWRlcml2ZSBzYWZlIGNoaWxkIGF0IG0vJHtpbmRleH06IHJvb3QgaGFzIG5vIHByaXZhdGUga2V5YCk7XG4gIH1cbiAgcmV0dXJuIHsgcHJ2OiBjaGlsZC50b0Jhc2U1OCgpLCBwdWI6IGNoaWxkLm5ldXRlcmVkKCkudG9CYXNlNTgoKSB9O1xufVxuXG5mdW5jdGlvbiBkZXJpdmVTYWZlQ2hpbGRTb2Z0RnJvbVhwdWIocm9vdFhwdWI6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHsgcHViOiBzdHJpbmcgfSB7XG4gIGNvbnN0IGNoaWxkID0gYmlwMzIuZnJvbUJhc2U1OChyb290WHB1YikuZGVyaXZlKGluZGV4KTtcbiAgaWYgKGNoaWxkLnByaXZhdGVLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBzb2Z0LWRlcml2ZSBzYWZlIGNoaWxkIGF0IG0vJHtpbmRleH06IHJvb3QgaGFzIGEgcHJpdmF0ZSBrZXlgKTtcbiAgfVxuICByZXR1cm4geyBwdWI6IGNoaWxkLm5ldXRlcmVkKCkudG9CYXNlNTgoKSB9O1xufVxuXG4vKipcbiAqIERlcml2ZXMgc2xvdC0xIGNoaWxkIGtleSBtYXRlcmlhbCBmb3IgYSBjYWxsZXItc3VwcGxpZWQgU2FmZSBpbmRleC5cbiAqXG4gKiBJbmRleCBkaXNjb3ZlcnkgYmVsb25ncyB0byB0aGUgb3V0ZXIgcmVjb3Zlcnkgc2NhbiAoV0NOLTI3NDEvV0NOLTI3NDIpLlxuICogVGhpcyBwdXJlIGZ1bmN0aW9uIHJlcHJvZHVjZXMgdGhlIHRyaXBsZXQgZm9yIG9uZSBjYW5kaWRhdGUgaW5kZXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVTYWZlU2VjcDI1NmsxTXVsdGlzaWdUcmlwbGV0KHBhcmFtczoge1xuICB1c2VyUm9vdFhwcnY6IHN0cmluZztcbiAgYmFja3VwUm9vdFhwcnY6IHN0cmluZztcbiAgYml0Z29Sb290WHB1Yjogc3RyaW5nO1xuICBpbmRleDogc3RyaW5nIHwgbnVtYmVyO1xufSk6IFNhZmVDaGlsZFRyaXBsZXQge1xuICBjb25zdCBkZXJpdmF0aW9uSWR4ID0gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KHBhcmFtcy5pbmRleCk7XG4gIGNvbnN0IHVzZXIgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KHBhcmFtcy51c2VyUm9vdFhwcnYsIGRlcml2YXRpb25JZHgpO1xuICBjb25zdCBiYWNrdXAgPSBkZXJpdmVTYWZlQ2hpbGRTb2Z0RnJvbVhwcnYocGFyYW1zLmJhY2t1cFJvb3RYcHJ2LCBkZXJpdmF0aW9uSWR4KTtcbiAgY29uc3QgYml0Z28gPSBkZXJpdmVTYWZlQ2hpbGRTb2Z0RnJvbVhwdWIocGFyYW1zLmJpdGdvUm9vdFhwdWIsIGRlcml2YXRpb25JZHgpO1xuICByZXR1cm4ge1xuICAgIGJhY2t1cCxcbiAgICBiaXRnbyxcbiAgICB1c2VyOiB7IHBydjogdXNlci5wcnYsIHB1YjogdXNlci5wdWIgfSxcbiAgICBpbmRleDogZGVyaXZhdGlvbklkeCxcbiAgfTtcbn1cblxuLyoqXG4gKiBTTElQLTAwMTAgaGFyZGVuZWQgZGVyaXZhdGlvbiBvZiBhIHNhZmUgdXNlciBjaGlsZCBmcm9tIGFuIGVkMjU1MTkgcm9vdCBzZWNyZXQgc2VlZC5cbiAqXG4gKiBgcm9vdFBydmAgaXMgYSBTdGVsbGFyIFN0cktleSBgU+KApmAgc2VjcmV0IHNlZWQgKHdoYXQgc2xvdC3ikaMgYGVkMjU1MTlNdWx0aXNpZ2AgdXNlciByb290cyBzdG9yZSkuXG4gKiBUaGUgZGVyaXZhdGlvbiByZXVzZXMgdGhlIGV4aXN0aW5nIFNMSVAtMDAxMCBpbXBsZW1lbnRhdGlvbiB7QGxpbmsgRWQyNTUxOUtleURlcml2ZXIuZGVyaXZlUGF0aH1cbiAqIChoYXJkZW5lZC1vbmx5IENLRFByaXYgb3ZlciB0aGUgYGVkMjU1MTkgc2VlZGAgSE1BQyBtYXN0ZXIpLCB0aGVuIGV4cGFuZHMgdGhlIHJlc3VsdGluZyAzMi1ieXRlXG4gKiBjaGlsZCBzZWVkIGludG8gYSBrZXlwYWlyIHdpdGggYG5hY2xgLiBUaGUgY2hpbGQgYHB1YmAgaXMgYSBiYXJlIFN0cktleSBgR+KApmA7IHRoZSBgcHJ2YCBpcyB0aGVcbiAqIHJhdyAzMi1ieXRlIGNoaWxkIHNlZWQgYXMgaGV4ICh0aGUgc2VlZCBpbnB1dCBhIHNpZ25lciBuZWVkcykuXG4gKlxuICogVW5saWtlIHRoZSBzZWNwMjU2azEgcGF0aCwgZWQyNTUxOSBoYXJkZW5lZCBkZXJpdmF0aW9uIG5lZWRzIG5vIGNoYWluIGNvZGUg4oCUIHRoZSBjb21wb3NpdGVcbiAqIGBwdWLigJZjaGFpbkNvZGVgIGZvcm0gaXMgb25seSBmb3IgU09GVCBjby1zaWduZXIgZGVyaXZhdGlvbiBhbmQgaXMgbm90IHVzZWQgaGVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChyb290UHJ2OiBzdHJpbmcsIGluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBTYWZlSGFyZGVuZWRDaGlsZEtleSB7XG4gIGNvbnN0IGlkeCA9IHBhcnNlU2FmZURlcml2YXRpb25JbmRleChpbmRleCk7XG4gIGNvbnN0IGRlcml2YXRpb25QYXRoID0gZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoaWR4KTtcbiAgY29uc3QgcmF3U2VlZEhleCA9IGRlY29kZUVkMjU1MTlTdHJLZXlTZWNyZXRTZWVkKHJvb3RQcnYpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3QgY2hpbGRTZWVkID0gRWQyNTUxOUtleURlcml2ZXIuZGVyaXZlUGF0aChkZXJpdmF0aW9uUGF0aCwgcmF3U2VlZEhleCkua2V5O1xuICBjb25zdCBrZXlQYWlyID0gbmFjbC5zaWduLmtleVBhaXIuZnJvbVNlZWQoVWludDhBcnJheS5mcm9tKGNoaWxkU2VlZCkpO1xuICBjb25zdCBwdWIgPSBlbmNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5KEJ1ZmZlci5mcm9tKGtleVBhaXIucHVibGljS2V5KSk7XG4gIHJldHVybiB7XG4gICAgcHJ2OiBCdWZmZXIuZnJvbShjaGlsZFNlZWQpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICBwdWIsXG4gICAgZGVyaXZhdGlvblBhdGgsXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*
|
|
4
|
+
* @experimental Shared safe recovery support registry.
|
|
5
|
+
*
|
|
6
|
+
* Declares which safe root slot x recovery-family pairs are supported for
|
|
7
|
+
* offline recovery, and fails closed for everything else. v1 supports exactly
|
|
8
|
+
* one pair: slot 1 (secp256k1Multisig) x utxo. The executable adapters live in
|
|
9
|
+
* the coin layers (e.g. abstract-utxo); this leaf owns only the support truth
|
|
10
|
+
* and the guard, so it never imports sdk-core or the coin packages.
|
|
11
|
+
*/
|
|
12
|
+
import type { RootKeyType } from '@bitgo/public-types';
|
|
13
|
+
export declare class SafeRecoveryUnsupportedError extends Error {
|
|
14
|
+
readonly slot: RootKeyType;
|
|
15
|
+
readonly family: string;
|
|
16
|
+
readonly coin?: string | undefined;
|
|
17
|
+
readonly code = "SAFE_RECOVERY_UNSUPPORTED";
|
|
18
|
+
constructor(slot: RootKeyType, family: string, coin?: string | undefined);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Checks an already-resolved Safe recovery capability.
|
|
22
|
+
*
|
|
23
|
+
* TODO(WCN-2741): derive the slot from the concrete coin and recovery mode,
|
|
24
|
+
* then invoke this guard before coin.recover() or any provider activity.
|
|
25
|
+
*/
|
|
26
|
+
export declare function assertSafeRecoverySupported(slot: RootKeyType, family: string, coin?: string): void;
|
|
27
|
+
//# sourceMappingURL=safeRecovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safeRecovery.d.ts","sourceRoot":"","sources":["../../src/safeRecovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,4BAA6B,SAAQ,KAAK;aAGzB,IAAI,EAAE,WAAW;aAAkB,MAAM,EAAE,MAAM;aAAkB,IAAI,CAAC,EAAE,MAAM;IAF5G,SAAgB,IAAI,+BAA+B;gBAEvB,IAAI,EAAE,WAAW,EAAkB,MAAM,EAAE,MAAM,EAAkB,IAAI,CAAC,EAAE,MAAM,YAAA;CAI7G;AAWD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAKlG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafeRecoveryUnsupportedError = void 0;
|
|
4
|
+
exports.assertSafeRecoverySupported = assertSafeRecoverySupported;
|
|
5
|
+
class SafeRecoveryUnsupportedError extends Error {
|
|
6
|
+
constructor(slot, family, coin) {
|
|
7
|
+
super(`Safe recovery for family '${family}' on slot '${slot}'${coin ? ` (coin '${coin}')` : ''} is not supported`);
|
|
8
|
+
this.slot = slot;
|
|
9
|
+
this.family = family;
|
|
10
|
+
this.coin = coin;
|
|
11
|
+
this.code = 'SAFE_RECOVERY_UNSUPPORTED';
|
|
12
|
+
this.name = 'SafeRecoveryUnsupportedError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.SafeRecoveryUnsupportedError = SafeRecoveryUnsupportedError;
|
|
16
|
+
const SAFE_RECOVERY_SUPPORT = {
|
|
17
|
+
secp256k1Multisig: {
|
|
18
|
+
utxo: true,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Checks an already-resolved Safe recovery capability.
|
|
23
|
+
*
|
|
24
|
+
* TODO(WCN-2741): derive the slot from the concrete coin and recovery mode,
|
|
25
|
+
* then invoke this guard before coin.recover() or any provider activity.
|
|
26
|
+
*/
|
|
27
|
+
function assertSafeRecoverySupported(slot, family, coin) {
|
|
28
|
+
const supportedFamilies = SAFE_RECOVERY_SUPPORT[slot];
|
|
29
|
+
if (supportedFamilies?.[family] !== true) {
|
|
30
|
+
throw new SafeRecoveryUnsupportedError(slot, family, coin);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZVJlY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NhZmVSZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxQ0Esa0VBS0M7QUE3QkQsTUFBYSw0QkFBNkIsU0FBUSxLQUFLO0lBR3JELFlBQTRCLElBQWlCLEVBQWtCLE1BQWMsRUFBa0IsSUFBYTtRQUMxRyxLQUFLLENBQUMsNkJBQTZCLE1BQU0sY0FBYyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFEekYsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUFrQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQWtCLFNBQUksR0FBSixJQUFJLENBQVM7UUFGNUYsU0FBSSxHQUFHLDJCQUEyQixDQUFDO1FBSWpELElBQUksQ0FBQyxJQUFJLEdBQUcsOEJBQThCLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBUEQsb0VBT0M7QUFLRCxNQUFNLHFCQUFxQixHQUFpRjtJQUMxRyxpQkFBaUIsRUFBRTtRQUNqQixJQUFJLEVBQUUsSUFBSTtLQUNYO0NBQ0YsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsSUFBaUIsRUFBRSxNQUFjLEVBQUUsSUFBYTtJQUMxRixNQUFNLGlCQUFpQixHQUFJLHFCQUE2RSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9HLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksNEJBQTRCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogQGV4cGVyaW1lbnRhbCBTaGFyZWQgc2FmZSByZWNvdmVyeSBzdXBwb3J0IHJlZ2lzdHJ5LlxuICpcbiAqIERlY2xhcmVzIHdoaWNoIHNhZmUgcm9vdCBzbG90IHggcmVjb3ZlcnktZmFtaWx5IHBhaXJzIGFyZSBzdXBwb3J0ZWQgZm9yXG4gKiBvZmZsaW5lIHJlY292ZXJ5LCBhbmQgZmFpbHMgY2xvc2VkIGZvciBldmVyeXRoaW5nIGVsc2UuIHYxIHN1cHBvcnRzIGV4YWN0bHlcbiAqIG9uZSBwYWlyOiBzbG90IDEgKHNlY3AyNTZrMU11bHRpc2lnKSB4IHV0eG8uIFRoZSBleGVjdXRhYmxlIGFkYXB0ZXJzIGxpdmUgaW5cbiAqIHRoZSBjb2luIGxheWVycyAoZS5nLiBhYnN0cmFjdC11dHhvKTsgdGhpcyBsZWFmIG93bnMgb25seSB0aGUgc3VwcG9ydCB0cnV0aFxuICogYW5kIHRoZSBndWFyZCwgc28gaXQgbmV2ZXIgaW1wb3J0cyBzZGstY29yZSBvciB0aGUgY29pbiBwYWNrYWdlcy5cbiAqL1xuaW1wb3J0IHR5cGUgeyBSb290S2V5VHlwZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgU2FmZVJlY292ZXJ5VW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvZGUgPSAnU0FGRV9SRUNPVkVSWV9VTlNVUFBPUlRFRCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNsb3Q6IFJvb3RLZXlUeXBlLCBwdWJsaWMgcmVhZG9ubHkgZmFtaWx5OiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSBjb2luPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFNhZmUgcmVjb3ZlcnkgZm9yIGZhbWlseSAnJHtmYW1pbHl9JyBvbiBzbG90ICcke3Nsb3R9JyR7Y29pbiA/IGAgKGNvaW4gJyR7Y29pbn0nKWAgOiAnJ30gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgIHRoaXMubmFtZSA9ICdTYWZlUmVjb3ZlcnlVbnN1cHBvcnRlZEVycm9yJztcbiAgfVxufVxuXG50eXBlIFNhZmVSZWNvdmVyeVN1cHBvcnRlZFNsb3QgPSAnc2VjcDI1NmsxTXVsdGlzaWcnO1xudHlwZSBTYWZlUmVjb3ZlcnlTdXBwb3J0ZWRGYW1pbHkgPSAndXR4byc7XG5cbmNvbnN0IFNBRkVfUkVDT1ZFUllfU1VQUE9SVDogUmVjb3JkPFNhZmVSZWNvdmVyeVN1cHBvcnRlZFNsb3QsIFJlY29yZDxTYWZlUmVjb3ZlcnlTdXBwb3J0ZWRGYW1pbHksIHRydWU+PiA9IHtcbiAgc2VjcDI1NmsxTXVsdGlzaWc6IHtcbiAgICB1dHhvOiB0cnVlLFxuICB9LFxufTtcblxuLyoqXG4gKiBDaGVja3MgYW4gYWxyZWFkeS1yZXNvbHZlZCBTYWZlIHJlY292ZXJ5IGNhcGFiaWxpdHkuXG4gKlxuICogVE9ETyhXQ04tMjc0MSk6IGRlcml2ZSB0aGUgc2xvdCBmcm9tIHRoZSBjb25jcmV0ZSBjb2luIGFuZCByZWNvdmVyeSBtb2RlLFxuICogdGhlbiBpbnZva2UgdGhpcyBndWFyZCBiZWZvcmUgY29pbi5yZWNvdmVyKCkgb3IgYW55IHByb3ZpZGVyIGFjdGl2aXR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U2FmZVJlY292ZXJ5U3VwcG9ydGVkKHNsb3Q6IFJvb3RLZXlUeXBlLCBmYW1pbHk6IHN0cmluZywgY29pbj86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBzdXBwb3J0ZWRGYW1pbGllcyA9IChTQUZFX1JFQ09WRVJZX1NVUFBPUlQgYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gfCB1bmRlZmluZWQ+KVtzbG90XTtcbiAgaWYgKHN1cHBvcnRlZEZhbWlsaWVzPy5bZmFtaWx5XSAhPT0gdHJ1ZSkge1xuICAgIHRocm93IG5ldyBTYWZlUmVjb3ZlcnlVbnN1cHBvcnRlZEVycm9yKHNsb3QsIGZhbWlseSwgY29pbik7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/safeSlot.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RootKeyType } from '@bitgo/public-types';
|
|
2
2
|
type OnchainSafeRootKeySlot = Extract<RootKeyType, 'secp256k1Multisig' | 'ed25519Multisig'>;
|
|
3
|
-
type TssSafeRootKeySlot = Extract<RootKeyType, 'ecdsaMpc'>;
|
|
3
|
+
type TssSafeRootKeySlot = Extract<RootKeyType, 'ecdsaMpc' | 'eddsaMpc'>;
|
|
4
4
|
export declare function onchainSlotForCoin(chain: string): OnchainSafeRootKeySlot;
|
|
5
5
|
export declare function tssSlotForCoin(chain: string): TssSafeRootKeySlot;
|
|
6
6
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safeSlot.d.ts","sourceRoot":"","sources":["../../src/safeSlot.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,KAAK,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,mBAAmB,GAAG,iBAAiB,CAAC,CAAC;AAC5F,KAAK,kBAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"safeSlot.d.ts","sourceRoot":"","sources":["../../src/safeSlot.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,KAAK,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,mBAAmB,GAAG,iBAAiB,CAAC,CAAC;AAC5F,KAAK,kBAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;AAExE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CASxE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAShE"}
|
package/dist/src/safeSlot.js
CHANGED
|
@@ -9,7 +9,7 @@ exports.tssSlotForCoin = tssSlotForCoin;
|
|
|
9
9
|
*
|
|
10
10
|
* Maps a coin chain + minting model to the safe root slot that derives it. The slot
|
|
11
11
|
* is a signing scheme, not a coin: slot ① secp256k1Multisig serves UTXO + XRP + TRX + …,
|
|
12
|
-
* slot ④ ed25519Multisig serves ALGO/XLM/HBAR, and
|
|
12
|
+
* slot ④ ed25519Multisig serves ALGO/XLM/HBAR, and the MPC slots serve TSS coins.
|
|
13
13
|
*
|
|
14
14
|
* The multisigType-vs-coin validation stays in sdk-core (it needs IBaseCoin); these
|
|
15
15
|
* functions take only the chain so this leaf never imports sdk-core.
|
|
@@ -31,8 +31,8 @@ function tssSlotForCoin(chain) {
|
|
|
31
31
|
return 'ecdsaMpc';
|
|
32
32
|
}
|
|
33
33
|
if (curve === statics_1.KeyCurve.Ed25519) {
|
|
34
|
-
|
|
34
|
+
return 'eddsaMpc';
|
|
35
35
|
}
|
|
36
36
|
throw new Error(`Coin '${chain}' is not supported for safe wallet minting`);
|
|
37
37
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZVNsb3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2FmZVNsb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrQkEsZ0RBU0M7QUFFRCx3Q0FTQztBQXRDRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILGlEQUFzRDtBQU10RCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFhO0lBQzlDLE1BQU0sS0FBSyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDO0lBQy9DLElBQUksS0FBSyxLQUFLLGtCQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxLQUFLLEtBQUssa0JBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyw0Q0FBNEMsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsS0FBYTtJQUMxQyxNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUMvQyxJQUFJLEtBQUssS0FBSyxrQkFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLEtBQUssS0FBSyxrQkFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyw0Q0FBNEMsQ0FBQyxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgU2hhcmVkIHNhZmUgc2xvdC1mb3ItY29pbiBtYXBwaW5nLlxuICpcbiAqIE1hcHMgYSBjb2luIGNoYWluICsgbWludGluZyBtb2RlbCB0byB0aGUgc2FmZSByb290IHNsb3QgdGhhdCBkZXJpdmVzIGl0LiBUaGUgc2xvdFxuICogaXMgYSBzaWduaW5nIHNjaGVtZSwgbm90IGEgY29pbjogc2xvdCDikaAgc2VjcDI1NmsxTXVsdGlzaWcgc2VydmVzIFVUWE8gKyBYUlAgKyBUUlggKyDigKYsXG4gKiBzbG90IOKRoyBlZDI1NTE5TXVsdGlzaWcgc2VydmVzIEFMR08vWExNL0hCQVIsIGFuZCB0aGUgTVBDIHNsb3RzIHNlcnZlIFRTUyBjb2lucy5cbiAqXG4gKiBUaGUgbXVsdGlzaWdUeXBlLXZzLWNvaW4gdmFsaWRhdGlvbiBzdGF5cyBpbiBzZGstY29yZSAoaXQgbmVlZHMgSUJhc2VDb2luKTsgdGhlc2VcbiAqIGZ1bmN0aW9ucyB0YWtlIG9ubHkgdGhlIGNoYWluIHNvIHRoaXMgbGVhZiBuZXZlciBpbXBvcnRzIHNkay1jb3JlLlxuICovXG5pbXBvcnQgeyBjb2lucywgS2V5Q3VydmUgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB0eXBlIHsgUm9vdEtleVR5cGUgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcblxudHlwZSBPbmNoYWluU2FmZVJvb3RLZXlTbG90ID0gRXh0cmFjdDxSb290S2V5VHlwZSwgJ3NlY3AyNTZrMU11bHRpc2lnJyB8ICdlZDI1NTE5TXVsdGlzaWcnPjtcbnR5cGUgVHNzU2FmZVJvb3RLZXlTbG90ID0gRXh0cmFjdDxSb290S2V5VHlwZSwgJ2VjZHNhTXBjJyB8ICdlZGRzYU1wYyc+O1xuXG5leHBvcnQgZnVuY3Rpb24gb25jaGFpblNsb3RGb3JDb2luKGNoYWluOiBzdHJpbmcpOiBPbmNoYWluU2FmZVJvb3RLZXlTbG90IHtcbiAgY29uc3QgY3VydmUgPSBjb2lucy5nZXQoY2hhaW4pLnByaW1hcnlLZXlDdXJ2ZTtcbiAgaWYgKGN1cnZlID09PSBLZXlDdXJ2ZS5TZWNwMjU2azEpIHtcbiAgICByZXR1cm4gJ3NlY3AyNTZrMU11bHRpc2lnJztcbiAgfVxuICBpZiAoY3VydmUgPT09IEtleUN1cnZlLkVkMjU1MTkpIHtcbiAgICByZXR1cm4gJ2VkMjU1MTlNdWx0aXNpZyc7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBDb2luICcke2NoYWlufScgaXMgbm90IHN1cHBvcnRlZCBmb3Igc2FmZSB3YWxsZXQgbWludGluZ2ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHNzU2xvdEZvckNvaW4oY2hhaW46IHN0cmluZyk6IFRzc1NhZmVSb290S2V5U2xvdCB7XG4gIGNvbnN0IGN1cnZlID0gY29pbnMuZ2V0KGNoYWluKS5wcmltYXJ5S2V5Q3VydmU7XG4gIGlmIChjdXJ2ZSA9PT0gS2V5Q3VydmUuU2VjcDI1NmsxKSB7XG4gICAgcmV0dXJuICdlY2RzYU1wYyc7XG4gIH1cbiAgaWYgKGN1cnZlID09PSBLZXlDdXJ2ZS5FZDI1NTE5KSB7XG4gICAgcmV0dXJuICdlZGRzYU1wYyc7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBDb2luICcke2NoYWlufScgaXMgbm90IHN1cHBvcnRlZCBmb3Igc2FmZSB3YWxsZXQgbWludGluZ2ApO1xufVxuIl19
|