@bitgo-beta/sdk-lib-safes 1.0.0-beta.57 → 1.0.0-beta.58
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/ed25519Pub.d.ts +2 -0
- package/dist/src/ed25519Pub.d.ts.map +1 -1
- package/dist/src/ed25519Pub.js +9 -1
- package/dist/src/keycardCodec.d.ts +21 -3
- package/dist/src/keycardCodec.d.ts.map +1 -1
- package/dist/src/keycardCodec.js +18 -6
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
package/dist/src/ed25519Pub.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ export declare function decodeDerivableEd25519Pub(composite: string): {
|
|
|
26
26
|
};
|
|
27
27
|
/** Generate a fresh raw 32-byte chain code for root composition. */
|
|
28
28
|
export declare function generateEd25519ChainCode(): Buffer;
|
|
29
|
+
/** Encode a raw 32-byte chain code as canonical unpadded RFC 4648 base32 (52 characters). */
|
|
30
|
+
export declare function encodeEd25519ChainCode(chainCode: Buffer): string;
|
|
29
31
|
export declare function decodeEd25519StrKeyPublicKey(pub: string): Buffer;
|
|
30
32
|
export declare function isValidEd25519StrKeyPublicKey(pub: string): boolean;
|
|
31
33
|
export declare function decodeEd25519StrKeySecretSeed(seed: string): Buffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ed25519Pub.d.ts","sourceRoot":"","sources":["../../src/ed25519Pub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAoEhD,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3D;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAO/F;AAED,oEAAoE;AACpE,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlE;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQnE;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOpE"}
|
|
1
|
+
{"version":3,"file":"ed25519Pub.d.ts","sourceRoot":"","sources":["../../src/ed25519Pub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAoEhD,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3D;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAO/F;AAED,oEAAoE;AACpE,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlE;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQnE;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOpE"}
|
package/dist/src/ed25519Pub.js
CHANGED
|
@@ -18,6 +18,7 @@ exports.assertDerivableEd25519Pub = assertDerivableEd25519Pub;
|
|
|
18
18
|
exports.encodeDerivableEd25519Pub = encodeDerivableEd25519Pub;
|
|
19
19
|
exports.decodeDerivableEd25519Pub = decodeDerivableEd25519Pub;
|
|
20
20
|
exports.generateEd25519ChainCode = generateEd25519ChainCode;
|
|
21
|
+
exports.encodeEd25519ChainCode = encodeEd25519ChainCode;
|
|
21
22
|
exports.decodeEd25519StrKeyPublicKey = decodeEd25519StrKeyPublicKey;
|
|
22
23
|
exports.isValidEd25519StrKeyPublicKey = isValidEd25519StrKeyPublicKey;
|
|
23
24
|
exports.decodeEd25519StrKeySecretSeed = decodeEd25519StrKeySecretSeed;
|
|
@@ -116,6 +117,13 @@ function decodeDerivableEd25519Pub(composite) {
|
|
|
116
117
|
function generateEd25519ChainCode() {
|
|
117
118
|
return (0, crypto_1.randomBytes)(exports.DERIVABLE_ED25519_CHAIN_CODE_BYTES);
|
|
118
119
|
}
|
|
120
|
+
/** Encode a raw 32-byte chain code as canonical unpadded RFC 4648 base32 (52 characters). */
|
|
121
|
+
function encodeEd25519ChainCode(chainCode) {
|
|
122
|
+
if (chainCode.length !== exports.DERIVABLE_ED25519_CHAIN_CODE_BYTES) {
|
|
123
|
+
throw new Error('Invalid ed25519 chain code: expected 32 bytes');
|
|
124
|
+
}
|
|
125
|
+
return base32Encode(chainCode);
|
|
126
|
+
}
|
|
119
127
|
function decodeEd25519StrKeyPublicKey(pub) {
|
|
120
128
|
if (!STRKEY_PUBLIC_KEY_REGEX.test(pub)) {
|
|
121
129
|
throw new Error('Invalid ed25519 StrKey public key');
|
|
@@ -155,4 +163,4 @@ function isChecksumValidStrKeyEd25519Pub(pub) {
|
|
|
155
163
|
return false;
|
|
156
164
|
}
|
|
157
165
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWQyNTUxOVB1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZDI1NTE5UHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBMkVILHNEQUVDO0FBR0QsOERBSUM7QUFHRCw4REFLQztBQUdELDhEQU9DO0FBR0QsNERBRUM7QUFFRCxvRUFLQztBQUVELHNFQU9DO0FBRUQsc0VBS0M7QUFFRCxvRUFRQztBQUVELDBFQU9DO0FBbkpELG1DQUFxQztBQUV4QixRQUFBLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztBQUN4QyxRQUFBLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztBQUN4QyxRQUFBLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUVoRCxNQUFNLGVBQWUsR0FBRyxrQ0FBa0MsQ0FBQztBQUMzRCxNQUFNLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0FBQzVDLE1BQU0sdUJBQXVCLEdBQUcsaUJBQWlCLENBQUM7QUFDbEQsTUFBTSx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztBQUNuRCxNQUFNLHlCQUF5QixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekMsTUFBTSwwQkFBMEIsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRWhDLFNBQVMsWUFBWSxDQUFDLEtBQWE7SUFDakMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIs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QUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQWdCLCtCQUErQixDQUFDLEdBQVc7SUFDekQsSUFBSSxDQUFDO1FBQ0gsNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogRWQyNTUxOSBzYWZlLXJvb3QgcHVibGljIGRlcml2YXRpb24gbWF0ZXJpYWwgYW5kIFN0ZWxsYXIgdXNlci1rZXkgY29kZWNzLlxuICpcbiAqIFNhZmUgYmFja3VwIGFuZCBCaXRHbyByb290cyBzdG9yZSByYXcgcHVibGljIGtleSAoMzIgYnl0ZXMpIHx8IHJhdyBjaGFpbiBjb2RlICgzMiBieXRlcyksXG4gKiBlbmNvZGVkIHRvZ2V0aGVyIGFzIGNhbm9uaWNhbCB1bnBhZGRlZCBSRkMgNDY0OCBiYXNlMzIuIENvaW4tc3BlY2lmaWMgcHVibGljLWtleSBlbmNvZGluZ3MgYXJlXG4gKiBhcHBsaWVkIG9ubHkgdG8gZGVyaXZlZCB3YWxsZXQgY2hpbGRyZW4uXG4gKlxuICogVGhlIFdBU00gc29mdC1kZXJpdmF0aW9uIChgc29mdERlcml2ZUNoaWxkUHViRWQyNTUxOWApIHN0YXlzIGluIHNkay1jb3JlJ3NcbiAqIGJpdGdvL3NhZmUvZGVyaXZhYmxlRWQyNTUxOVB1YiDigJQgaXQgbmVlZHMgRWQyNTUxOUJJUDMyL0VkZHNhIGFuZCBpcyBub3QgcGFydCBvZiB0aGlzIGxlYWYuXG4gKi9cblxuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuXG5leHBvcnQgY29uc3QgREVSSVZBQkxFX0VEMjU1MTlfUFVCTElDX0tFWV9CWVRFUyA9IDMyO1xuZXhwb3J0IGNvbnN0IERFUklWQUJMRV9FRDI1NTE5X0NIQUlOX0NPREVfQllURVMgPSAzMjtcbmV4cG9ydCBjb25zdCBERVJJVkFCTEVfRUQyNTUxOV9QVUJfTEVOR1RIID0gMTAzO1xuXG5jb25zdCBCQVNFMzJfQUxQSEFCRVQgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1NjcnO1xuY29uc3QgQkFTRTMyX1JPT1RfUkVHRVggPSAvXltBLVoyLTddezEwM30kLztcbmNvbnN0IFNUUktFWV9QVUJMSUNfS0VZX1JFR0VYID0gL15HW0EtWjItN117NTV9JC87XG5jb25zdCBTVFJLRVlfU0VDUkVUX1NFRURfUkVHRVggPSAvXlNbQS1aMi03XXs1NX0kLztcbmNvbnN0IFNUUktFWV9WRVJTSU9OX1BVQkxJQ19LRVkgPSA2IDw8IDM7XG5jb25zdCBTVFJLRVlfVkVSU0lPTl9TRUNSRVRfU0VFRCA9IDE4IDw8IDM7XG5jb25zdCBTVFJLRVlfREVDT0RFRF9CWVRFUyA9IDM1O1xuXG5mdW5jdGlvbiBiYXNlMzJEZWNvZGUoaW5wdXQ6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGNvbnN0IG91dHB1dCA9IEJ1ZmZlci5hbGxvYyhNYXRoLmZsb29yKChpbnB1dC5sZW5ndGggKiA1KSAvIDgpKTtcbiAgbGV0IGJpdHMgPSAwO1xuICBsZXQgdmFsdWUgPSAwO1xuICBsZXQgb2Zmc2V0ID0gMDtcbiAgZm9yIChjb25zdCBjaGFyIG9mIGlucHV0KSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgNSkgfCBCQVNFMzJfQUxQSEFCRVQuaW5kZXhPZihjaGFyKTtcbiAgICBiaXRzICs9IDU7XG4gICAgaWYgKGJpdHMgPj0gOCkge1xuICAgICAgYml0cyAtPSA4O1xuICAgICAgb3V0cHV0W29mZnNldCsrXSA9ICh2YWx1ZSA+Pj4gYml0cykgJiAweGZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5mdW5jdGlvbiBiYXNlMzJFbmNvZGUoZGF0YTogQnVmZmVyKTogc3RyaW5nIHtcbiAgbGV0IGJpdHMgPSAwO1xuICBsZXQgdmFsdWUgPSAwO1xuICBsZXQgb3V0cHV0ID0gJyc7XG4gIGZvciAoY29uc3QgYnl0ZSBvZiBkYXRhKSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgOCkgfCBieXRlO1xuICAgIGJpdHMgKz0gODtcbiAgICB3aGlsZSAoYml0cyA+PSA1KSB7XG4gICAgICBiaXRzIC09IDU7XG4gICAgICBvdXRwdXQgKz0gQkFTRTMyX0FMUEhBQkVUWyh2YWx1ZSA+Pj4gYml0cykgJiAweDFmXTtcbiAgICB9XG4gIH1cbiAgaWYgKGJpdHMgPiAwKSB7XG4gICAgb3V0cHV0ICs9IEJBU0UzMl9BTFBIQUJFVFsodmFsdWUgPDwgKDUgLSBiaXRzKSkgJiAweDFmXTtcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5mdW5jdGlvbiBjcmMxNlhtb2RlbShkYXRhOiBCdWZmZXIpOiBudW1iZXIge1xuICBsZXQgY3JjID0gMDtcbiAgZm9yIChjb25zdCBieXRlIG9mIGRhdGEpIHtcbiAgICBjcmMgXj0gYnl0ZSA8PCA4O1xuICAgIGZvciAobGV0IGJpdCA9IDA7IGJpdCA8IDg7IGJpdCsrKSB7XG4gICAgICBjcmMgPSBjcmMgJiAweDgwMDAgPyAoKGNyYyA8PCAxKSBeIDB4MTAyMSkgJiAweGZmZmYgOiAoY3JjIDw8IDEpICYgMHhmZmZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY3JjO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVTdHJLZXkodmFsdWU6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBsYWJlbDogc3RyaW5nKTogQnVmZmVyIHtcbiAgY29uc3QgZGVjb2RlZCA9IGJhc2UzMkRlY29kZSh2YWx1ZSk7XG4gIGlmIChcbiAgICBkZWNvZGVkLmxlbmd0aCAhPT0gU1RSS0VZX0RFQ09ERURfQllURVMgfHxcbiAgICBkZWNvZGVkWzBdICE9PSB2ZXJzaW9uIHx8XG4gICAgYmFzZTMyRW5jb2RlKGRlY29kZWQpICE9PSB2YWx1ZSB8fFxuICAgIGNyYzE2WG1vZGVtKGRlY29kZWQuc3ViYXJyYXkoMCwgU1RSS0VZX0RFQ09ERURfQllURVMgLSAyKSkgIT09IGRlY29kZWQucmVhZFVJbnQxNkxFKFNUUktFWV9ERUNPREVEX0JZVEVTIC0gMilcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVkMjU1MTkgU3RyS2V5ICR7bGFiZWx9YCk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZWQuc3ViYXJyYXkoMSwgMzMpO1xufVxuXG4vKiogUmV0dXJucyB0cnVlIGZvciBjYW5vbmljYWwgYmFzZTMyLWVuY29kZWQgNjQtYnl0ZSBwdWJsaWMgZGVyaXZhdGlvbiBtYXRlcmlhbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Rlcml2YWJsZUVkMjU1MTlQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIEJBU0UzMl9ST09UX1JFR0VYLnRlc3QocHViKSAmJiBiYXNlMzJFbmNvZGUoYmFzZTMyRGVjb2RlKHB1YikpID09PSBwdWI7XG59XG5cbi8qKiBUaHJvd3MgdW5sZXNzIHRoZSB2YWx1ZSBpcyBjYW5vbmljYWwgYmFzZTMyLWVuY29kZWQgNjQtYnl0ZSByb290IG1hdGVyaWFsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydERlcml2YWJsZUVkMjU1MTlQdWIocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFpc0Rlcml2YWJsZUVkMjU1MTlQdWIocHViKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkZXJpdmFibGUgZWQyNTUxOSBwdWI6IGV4cGVjdGVkIDY0IGJ5dGVzIG9mIGNhbm9uaWNhbCBiYXNlMzInKTtcbiAgfVxufVxuXG4vKiogQ29tcG9zZSByYXcgcHVibGljLWtleSBhbmQgY2hhaW4tY29kZSBieXRlcyBpbnRvIG9uZSBiYXNlMzIgcm9vdCB2YWx1ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVEZXJpdmFibGVFZDI1NTE5UHViKHB1YjogQnVmZmVyLCBjaGFpbkNvZGU6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIGlmIChwdWIubGVuZ3RoICE9PSBERVJJVkFCTEVfRUQyNTUxOV9QVUJMSUNfS0VZX0JZVEVTIHx8IGNoYWluQ29kZS5sZW5ndGggIT09IERFUklWQUJMRV9FRDI1NTE5X0NIQUlOX0NPREVfQllURVMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVyaXZhYmxlIGVkMjU1MTkgcHViOiBleHBlY3RlZCAzMi1ieXRlIHB1YmxpYyBrZXkgYW5kIGNoYWluIGNvZGUgYnVmZmVycycpO1xuICB9XG4gIHJldHVybiBiYXNlMzJFbmNvZGUoQnVmZmVyLmNvbmNhdChbcHViLCBjaGFpbkNvZGVdKSk7XG59XG5cbi8qKiBEZWNvZGUgYSBiYXNlMzIgcm9vdCBpbnRvIHJhdyBwdWJsaWMta2V5IGFuZCBjaGFpbi1jb2RlIGJ1ZmZlcnMuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRGVyaXZhYmxlRWQyNTUxOVB1Yihjb21wb3NpdGU6IHN0cmluZyk6IHsgcHViOiBCdWZmZXI7IGNoYWluQ29kZTogQnVmZmVyIH0ge1xuICBhc3NlcnREZXJpdmFibGVFZDI1NTE5UHViKGNvbXBvc2l0ZSk7XG4gIGNvbnN0IGRlY29kZWQgPSBiYXNlMzJEZWNvZGUoY29tcG9zaXRlKTtcbiAgcmV0dXJuIHtcbiAgICBwdWI6IGRlY29kZWQuc3ViYXJyYXkoMCwgREVSSVZBQkxFX0VEMjU1MTlfUFVCTElDX0tFWV9CWVRFUyksXG4gICAgY2hhaW5Db2RlOiBkZWNvZGVkLnN1YmFycmF5KERFUklWQUJMRV9FRDI1NTE5X1BVQkxJQ19LRVlfQllURVMpLFxuICB9O1xufVxuXG4vKiogR2VuZXJhdGUgYSBmcmVzaCByYXcgMzItYnl0ZSBjaGFpbiBjb2RlIGZvciByb290IGNvbXBvc2l0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRWQyNTUxOUNoYWluQ29kZSgpOiBCdWZmZXIge1xuICByZXR1cm4gcmFuZG9tQnl0ZXMoREVSSVZBQkxFX0VEMjU1MTlfQ0hBSU5fQ09ERV9CWVRFUyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5KHB1Yjogc3RyaW5nKTogQnVmZmVyIHtcbiAgaWYgKCFTVFJLRVlfUFVCTElDX0tFWV9SRUdFWC50ZXN0KHB1YikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgcHVibGljIGtleScpO1xuICB9XG4gIHJldHVybiBkZWNvZGVTdHJLZXkocHViLCBTVFJLRVlfVkVSU0lPTl9QVUJMSUNfS0VZLCAncHVibGljIGtleScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEVkMjU1MTlTdHJLZXlQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBkZWNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5KHB1Yik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRWQyNTUxOVN0cktleVNlY3JldFNlZWQoc2VlZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgaWYgKCFTVFJLRVlfU0VDUkVUX1NFRURfUkVHRVgudGVzdChzZWVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlZDI1NTE5IFN0cktleSBzZWNyZXQgc2VlZCcpO1xuICB9XG4gIHJldHVybiBkZWNvZGVTdHJLZXkoc2VlZCwgU1RSS0VZX1ZFUlNJT05fU0VDUkVUX1NFRUQsICdzZWNyZXQgc2VlZCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleShyYXdQdWI6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIGlmIChyYXdQdWIubGVuZ3RoICE9PSBERVJJVkFCTEVfRUQyNTUxOV9QVUJMSUNfS0VZX0JZVEVTKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdlZDI1NTE5IHB1YmxpYyBrZXkgbXVzdCBiZSAzMiBieXRlcycpO1xuICB9XG4gIGNvbnN0IHBheWxvYWQgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShbU1RSS0VZX1ZFUlNJT05fUFVCTElDX0tFWV0pLCByYXdQdWJdKTtcbiAgY29uc3QgY2hlY2tzdW0gPSBCdWZmZXIuYWxsb2MoMik7XG4gIGNoZWNrc3VtLndyaXRlVUludDE2TEUoY3JjMTZYbW9kZW0ocGF5bG9hZCksIDApO1xuICByZXR1cm4gYmFzZTMyRW5jb2RlKEJ1ZmZlci5jb25jYXQoW3BheWxvYWQsIGNoZWNrc3VtXSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDaGVja3N1bVZhbGlkU3RyS2V5RWQyNTUxOVB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGRlY29kZUVkMjU1MTlTdHJLZXlQdWJsaWNLZXkocHViKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWQyNTUxOVB1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZDI1NTE5UHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBMkVILHNEQUVDO0FBR0QsOERBSUM7QUFHRCw4REFLQztBQUdELDhEQU9DO0FBR0QsNERBRUM7QUFHRCx3REFLQztBQUVELG9FQUtDO0FBRUQsc0VBT0M7QUFFRCxzRUFLQztBQUVELG9FQVFDO0FBRUQsMEVBT0M7QUEzSkQsbUNBQXFDO0FBRXhCLFFBQUEsa0NBQWtDLEdBQUcsRUFBRSxDQUFDO0FBQ3hDLFFBQUEsa0NBQWtDLEdBQUcsRUFBRSxDQUFDO0FBQ3hDLFFBQUEsNEJBQTRCLEdBQUcsR0FBRyxDQUFDO0FBRWhELE1BQU0sZUFBZSxHQUFHLGtDQUFrQyxDQUFDO0FBQzNELE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7QUFDNUMsTUFBTSx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQztBQUNsRCxNQUFNLHdCQUF3QixHQUFHLGlCQUFpQixDQUFDO0FBQ25ELE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxNQUFNLDBCQUEwQixHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0MsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFFaEMsU0FBUyxZQUFZLENBQUMsS0FBYTtJQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUs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TUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQWdCLCtCQUErQixDQUFDLEdBQVc7SUFDekQsSUFBSSxDQUFDO1FBQ0gsNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogRWQyNTUxOSBzYWZlLXJvb3QgcHVibGljIGRlcml2YXRpb24gbWF0ZXJpYWwgYW5kIFN0ZWxsYXIgdXNlci1rZXkgY29kZWNzLlxuICpcbiAqIFNhZmUgYmFja3VwIGFuZCBCaXRHbyByb290cyBzdG9yZSByYXcgcHVibGljIGtleSAoMzIgYnl0ZXMpIHx8IHJhdyBjaGFpbiBjb2RlICgzMiBieXRlcyksXG4gKiBlbmNvZGVkIHRvZ2V0aGVyIGFzIGNhbm9uaWNhbCB1bnBhZGRlZCBSRkMgNDY0OCBiYXNlMzIuIENvaW4tc3BlY2lmaWMgcHVibGljLWtleSBlbmNvZGluZ3MgYXJlXG4gKiBhcHBsaWVkIG9ubHkgdG8gZGVyaXZlZCB3YWxsZXQgY2hpbGRyZW4uXG4gKlxuICogVGhlIFdBU00gc29mdC1kZXJpdmF0aW9uIChgc29mdERlcml2ZUNoaWxkUHViRWQyNTUxOWApIHN0YXlzIGluIHNkay1jb3JlJ3NcbiAqIGJpdGdvL3NhZmUvZGVyaXZhYmxlRWQyNTUxOVB1YiDigJQgaXQgbmVlZHMgRWQyNTUxOUJJUDMyL0VkZHNhIGFuZCBpcyBub3QgcGFydCBvZiB0aGlzIGxlYWYuXG4gKi9cblxuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuXG5leHBvcnQgY29uc3QgREVSSVZBQkxFX0VEMjU1MTlfUFVCTElDX0tFWV9CWVRFUyA9IDMyO1xuZXhwb3J0IGNvbnN0IERFUklWQUJMRV9FRDI1NTE5X0NIQUlOX0NPREVfQllURVMgPSAzMjtcbmV4cG9ydCBjb25zdCBERVJJVkFCTEVfRUQyNTUxOV9QVUJfTEVOR1RIID0gMTAzO1xuXG5jb25zdCBCQVNFMzJfQUxQSEFCRVQgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1NjcnO1xuY29uc3QgQkFTRTMyX1JPT1RfUkVHRVggPSAvXltBLVoyLTddezEwM30kLztcbmNvbnN0IFNUUktFWV9QVUJMSUNfS0VZX1JFR0VYID0gL15HW0EtWjItN117NTV9JC87XG5jb25zdCBTVFJLRVlfU0VDUkVUX1NFRURfUkVHRVggPSAvXlNbQS1aMi03XXs1NX0kLztcbmNvbnN0IFNUUktFWV9WRVJTSU9OX1BVQkxJQ19LRVkgPSA2IDw8IDM7XG5jb25zdCBTVFJLRVlfVkVSU0lPTl9TRUNSRVRfU0VFRCA9IDE4IDw8IDM7XG5jb25zdCBTVFJLRVlfREVDT0RFRF9CWVRFUyA9IDM1O1xuXG5mdW5jdGlvbiBiYXNlMzJEZWNvZGUoaW5wdXQ6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGNvbnN0IG91dHB1dCA9IEJ1ZmZlci5hbGxvYyhNYXRoLmZsb29yKChpbnB1dC5sZW5ndGggKiA1KSAvIDgpKTtcbiAgbGV0IGJpdHMgPSAwO1xuICBsZXQgdmFsdWUgPSAwO1xuICBsZXQgb2Zmc2V0ID0gMDtcbiAgZm9yIChjb25zdCBjaGFyIG9mIGlucHV0KSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgNSkgfCBCQVNFMzJfQUxQSEFCRVQuaW5kZXhPZihjaGFyKTtcbiAgICBiaXRzICs9IDU7XG4gICAgaWYgKGJpdHMgPj0gOCkge1xuICAgICAgYml0cyAtPSA4O1xuICAgICAgb3V0cHV0W29mZnNldCsrXSA9ICh2YWx1ZSA+Pj4gYml0cykgJiAweGZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5mdW5jdGlvbiBiYXNlMzJFbmNvZGUoZGF0YTogQnVmZmVyKTogc3RyaW5nIHtcbiAgbGV0IGJpdHMgPSAwO1xuICBsZXQgdmFsdWUgPSAwO1xuICBsZXQgb3V0cHV0ID0gJyc7XG4gIGZvciAoY29uc3QgYnl0ZSBvZiBkYXRhKSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgOCkgfCBieXRlO1xuICAgIGJpdHMgKz0gODtcbiAgICB3aGlsZSAoYml0cyA+PSA1KSB7XG4gICAgICBiaXRzIC09IDU7XG4gICAgICBvdXRwdXQgKz0gQkFTRTMyX0FMUEhBQkVUWyh2YWx1ZSA+Pj4gYml0cykgJiAweDFmXTtcbiAgICB9XG4gIH1cbiAgaWYgKGJpdHMgPiAwKSB7XG4gICAgb3V0cHV0ICs9IEJBU0UzMl9BTFBIQUJFVFsodmFsdWUgPDwgKDUgLSBiaXRzKSkgJiAweDFmXTtcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5mdW5jdGlvbiBjcmMxNlhtb2RlbShkYXRhOiBCdWZmZXIpOiBudW1iZXIge1xuICBsZXQgY3JjID0gMDtcbiAgZm9yIChjb25zdCBieXRlIG9mIGRhdGEpIHtcbiAgICBjcmMgXj0gYnl0ZSA8PCA4O1xuICAgIGZvciAobGV0IGJpdCA9IDA7IGJpdCA8IDg7IGJpdCsrKSB7XG4gICAgICBjcmMgPSBjcmMgJiAweDgwMDAgPyAoKGNyYyA8PCAxKSBeIDB4MTAyMSkgJiAweGZmZmYgOiAoY3JjIDw8IDEpICYgMHhmZmZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY3JjO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVTdHJLZXkodmFsdWU6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBsYWJlbDogc3RyaW5nKTogQnVmZmVyIHtcbiAgY29uc3QgZGVjb2RlZCA9IGJhc2UzMkRlY29kZSh2YWx1ZSk7XG4gIGlmIChcbiAgICBkZWNvZGVkLmxlbmd0aCAhPT0gU1RSS0VZX0RFQ09ERURfQllURVMgfHxcbiAgICBkZWNvZGVkWzBdICE9PSB2ZXJzaW9uIHx8XG4gICAgYmFzZTMyRW5jb2RlKGRlY29kZWQpICE9PSB2YWx1ZSB8fFxuICAgIGNyYzE2WG1vZGVtKGRlY29kZWQuc3ViYXJyYXkoMCwgU1RSS0VZX0RFQ09ERURfQllURVMgLSAyKSkgIT09IGRlY29kZWQucmVhZFVJbnQxNkxFKFNUUktFWV9ERUNPREVEX0JZVEVTIC0gMilcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVkMjU1MTkgU3RyS2V5ICR7bGFiZWx9YCk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZWQuc3ViYXJyYXkoMSwgMzMpO1xufVxuXG4vKiogUmV0dXJucyB0cnVlIGZvciBjYW5vbmljYWwgYmFzZTMyLWVuY29kZWQgNjQtYnl0ZSBwdWJsaWMgZGVyaXZhdGlvbiBtYXRlcmlhbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Rlcml2YWJsZUVkMjU1MTlQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIEJBU0UzMl9ST09UX1JFR0VYLnRlc3QocHViKSAmJiBiYXNlMzJFbmNvZGUoYmFzZTMyRGVjb2RlKHB1YikpID09PSBwdWI7XG59XG5cbi8qKiBUaHJvd3MgdW5sZXNzIHRoZSB2YWx1ZSBpcyBjYW5vbmljYWwgYmFzZTMyLWVuY29kZWQgNjQtYnl0ZSByb290IG1hdGVyaWFsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydERlcml2YWJsZUVkMjU1MTlQdWIocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFpc0Rlcml2YWJsZUVkMjU1MTlQdWIocHViKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkZXJpdmFibGUgZWQyNTUxOSBwdWI6IGV4cGVjdGVkIDY0IGJ5dGVzIG9mIGNhbm9uaWNhbCBiYXNlMzInKTtcbiAgfVxufVxuXG4vKiogQ29tcG9zZSByYXcgcHVibGljLWtleSBhbmQgY2hhaW4tY29kZSBieXRlcyBpbnRvIG9uZSBiYXNlMzIgcm9vdCB2YWx1ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVEZXJpdmFibGVFZDI1NTE5UHViKHB1YjogQnVmZmVyLCBjaGFpbkNvZGU6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIGlmIChwdWIubGVuZ3RoICE9PSBERVJJVkFCTEVfRUQyNTUxOV9QVUJMSUNfS0VZX0JZVEVTIHx8IGNoYWluQ29kZS5sZW5ndGggIT09IERFUklWQUJMRV9FRDI1NTE5X0NIQUlOX0NPREVfQllURVMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVyaXZhYmxlIGVkMjU1MTkgcHViOiBleHBlY3RlZCAzMi1ieXRlIHB1YmxpYyBrZXkgYW5kIGNoYWluIGNvZGUgYnVmZmVycycpO1xuICB9XG4gIHJldHVybiBiYXNlMzJFbmNvZGUoQnVmZmVyLmNvbmNhdChbcHViLCBjaGFpbkNvZGVdKSk7XG59XG5cbi8qKiBEZWNvZGUgYSBiYXNlMzIgcm9vdCBpbnRvIHJhdyBwdWJsaWMta2V5IGFuZCBjaGFpbi1jb2RlIGJ1ZmZlcnMuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRGVyaXZhYmxlRWQyNTUxOVB1Yihjb21wb3NpdGU6IHN0cmluZyk6IHsgcHViOiBCdWZmZXI7IGNoYWluQ29kZTogQnVmZmVyIH0ge1xuICBhc3NlcnREZXJpdmFibGVFZDI1NTE5UHViKGNvbXBvc2l0ZSk7XG4gIGNvbnN0IGRlY29kZWQgPSBiYXNlMzJEZWNvZGUoY29tcG9zaXRlKTtcbiAgcmV0dXJuIHtcbiAgICBwdWI6IGRlY29kZWQuc3ViYXJyYXkoMCwgREVSSVZBQkxFX0VEMjU1MTlfUFVCTElDX0tFWV9CWVRFUyksXG4gICAgY2hhaW5Db2RlOiBkZWNvZGVkLnN1YmFycmF5KERFUklWQUJMRV9FRDI1NTE5X1BVQkxJQ19LRVlfQllURVMpLFxuICB9O1xufVxuXG4vKiogR2VuZXJhdGUgYSBmcmVzaCByYXcgMzItYnl0ZSBjaGFpbiBjb2RlIGZvciByb290IGNvbXBvc2l0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRWQyNTUxOUNoYWluQ29kZSgpOiBCdWZmZXIge1xuICByZXR1cm4gcmFuZG9tQnl0ZXMoREVSSVZBQkxFX0VEMjU1MTlfQ0hBSU5fQ09ERV9CWVRFUyk7XG59XG5cbi8qKiBFbmNvZGUgYSByYXcgMzItYnl0ZSBjaGFpbiBjb2RlIGFzIGNhbm9uaWNhbCB1bnBhZGRlZCBSRkMgNDY0OCBiYXNlMzIgKDUyIGNoYXJhY3RlcnMpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUVkMjU1MTlDaGFpbkNvZGUoY2hhaW5Db2RlOiBCdWZmZXIpOiBzdHJpbmcge1xuICBpZiAoY2hhaW5Db2RlLmxlbmd0aCAhPT0gREVSSVZBQkxFX0VEMjU1MTlfQ0hBSU5fQ09ERV9CWVRFUykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlZDI1NTE5IGNoYWluIGNvZGU6IGV4cGVjdGVkIDMyIGJ5dGVzJyk7XG4gIH1cbiAgcmV0dXJuIGJhc2UzMkVuY29kZShjaGFpbkNvZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleShwdWI6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGlmICghU1RSS0VZX1BVQkxJQ19LRVlfUkVHRVgudGVzdChwdWIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVkMjU1MTkgU3RyS2V5IHB1YmxpYyBrZXknKTtcbiAgfVxuICByZXR1cm4gZGVjb2RlU3RyS2V5KHB1YiwgU1RSS0VZX1ZFUlNJT05fUFVCTElDX0tFWSwgJ3B1YmxpYyBrZXknKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5U3RyS2V5UHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgZGVjb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleShwdWIpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUVkMjU1MTlTdHJLZXlTZWNyZXRTZWVkKHNlZWQ6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGlmICghU1RSS0VZX1NFQ1JFVF9TRUVEX1JFR0VYLnRlc3Qoc2VlZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgc2VjcmV0IHNlZWQnKTtcbiAgfVxuICByZXR1cm4gZGVjb2RlU3RyS2V5KHNlZWQsIFNUUktFWV9WRVJTSU9OX1NFQ1JFVF9TRUVELCAnc2VjcmV0IHNlZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUVkMjU1MTlTdHJLZXlQdWJsaWNLZXkocmF3UHViOiBCdWZmZXIpOiBzdHJpbmcge1xuICBpZiAocmF3UHViLmxlbmd0aCAhPT0gREVSSVZBQkxFX0VEMjU1MTlfUFVCTElDX0tFWV9CWVRFUykge1xuICAgIHRocm93IG5ldyBFcnJvcignZWQyNTUxOSBwdWJsaWMga2V5IG11c3QgYmUgMzIgYnl0ZXMnKTtcbiAgfVxuICBjb25zdCBwYXlsb2FkID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oW1NUUktFWV9WRVJTSU9OX1BVQkxJQ19LRVldKSwgcmF3UHViXSk7XG4gIGNvbnN0IGNoZWNrc3VtID0gQnVmZmVyLmFsbG9jKDIpO1xuICBjaGVja3N1bS53cml0ZVVJbnQxNkxFKGNyYzE2WG1vZGVtKHBheWxvYWQpLCAwKTtcbiAgcmV0dXJuIGJhc2UzMkVuY29kZShCdWZmZXIuY29uY2F0KFtwYXlsb2FkLCBjaGVja3N1bV0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hlY2tzdW1WYWxpZFN0cktleUVkMjU1MTlQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBkZWNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5KHB1Yik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*
|
|
4
|
+
* @experimental Safe keycard box codec.
|
|
5
|
+
*
|
|
6
|
+
* Each of Boxes A/B/C on a Safe keycard is a JSON object mapping a root slot name to that slot's key
|
|
7
|
+
* string. It lives in this leaf so sdk-core and WRW can parse a box without depending on key-card,
|
|
8
|
+
* which pulls in PDF/QR libraries and itself depends on sdk-core.
|
|
9
|
+
*/
|
|
10
|
+
import * as t from 'io-ts';
|
|
1
11
|
import type { RootKeyType } from '@bitgo/public-types';
|
|
2
12
|
/**
|
|
3
13
|
* Identifier for one of a safe's four roots (one per signing scheme). Each value is the
|
|
@@ -9,13 +19,21 @@ export type SafeRootKeyType = RootKeyType;
|
|
|
9
19
|
* {@link SafeRootKeyType}. Values are per-root ciphertext for A/B (encryptedPrv or
|
|
10
20
|
* reducedEncryptedPrv; safe MPC ciphertext decrypts to a versioned signing+VRF envelope) or
|
|
11
21
|
* public keys for C. The root-key-type keys are self-identifying, so a
|
|
12
|
-
* consumer parses by key rather than by size/offset.
|
|
22
|
+
* consumer parses by key rather than by size/offset. Box B's `ed25519Multisig` entry carries a
|
|
23
|
+
* `{ prv, chainCode }` object (the chain code is independent randomness not recomputable from the
|
|
24
|
+
* seed); every other entry is a bare string.
|
|
13
25
|
*/
|
|
14
|
-
export
|
|
26
|
+
export declare const Ed25519ChainCodeEntryCodec: t.TypeC<{
|
|
27
|
+
prv: t.StringC;
|
|
28
|
+
chainCode: t.StringC;
|
|
29
|
+
}>;
|
|
30
|
+
export type Ed25519ChainCodeEntry = t.TypeOf<typeof Ed25519ChainCodeEntryCodec>;
|
|
31
|
+
export type SafeKeycardRootEntry = string | Ed25519ChainCodeEntry;
|
|
32
|
+
export type SafeKeycardRoots = Record<SafeRootKeyType, SafeKeycardRootEntry>;
|
|
15
33
|
/**
|
|
16
34
|
* Parses a safe keycard box value — the JSON packed by key-card's `generateSafeQrData`, e.g.
|
|
17
35
|
* `{"secp256k1Multisig":"…","ecdsaMpc":"…",…}` — into its four roots. Throws if the value is
|
|
18
|
-
* not valid JSON or any root is
|
|
36
|
+
* not valid JSON or any root is not a bare string or a `{ prv, chainCode }` entry. Recovery tooling calls this on the A/B/C
|
|
19
37
|
* box value, then decrypts each root value with the safe password. An MPC root value is an
|
|
20
38
|
* opaque versioned envelope; recovery must unwrap its `prvKeyShare` and `vrf` fields instead
|
|
21
39
|
* of treating the decrypted bytes as a bare share.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycardCodec.d.ts","sourceRoot":"","sources":["../../src/keycardCodec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keycardCodec.d.ts","sourceRoot":"","sources":["../../src/keycardCodec.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAI3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAE1C;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B;;;EAAiD,CAAC;AACzF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEhF,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,qBAAqB,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;AAe7E;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAOlE"}
|
package/dist/src/keycardCodec.js
CHANGED
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Ed25519ChainCodeEntryCodec = void 0;
|
|
36
37
|
exports.parseSafeKeycardBox = parseSafeKeycardBox;
|
|
37
38
|
/**
|
|
38
39
|
* @prettier
|
|
@@ -47,19 +48,30 @@ const t = __importStar(require("io-ts"));
|
|
|
47
48
|
const E = __importStar(require("fp-ts/Either"));
|
|
48
49
|
const PathReporter_1 = require("io-ts/lib/PathReporter");
|
|
49
50
|
const io_ts_types_1 = require("io-ts-types");
|
|
51
|
+
/**
|
|
52
|
+
* The JSON object encoded in a safe keycard box (A/B/C): the four roots keyed by
|
|
53
|
+
* {@link SafeRootKeyType}. Values are per-root ciphertext for A/B (encryptedPrv or
|
|
54
|
+
* reducedEncryptedPrv; safe MPC ciphertext decrypts to a versioned signing+VRF envelope) or
|
|
55
|
+
* public keys for C. The root-key-type keys are self-identifying, so a
|
|
56
|
+
* consumer parses by key rather than by size/offset. Box B's `ed25519Multisig` entry carries a
|
|
57
|
+
* `{ prv, chainCode }` object (the chain code is independent randomness not recomputable from the
|
|
58
|
+
* seed); every other entry is a bare string.
|
|
59
|
+
*/
|
|
60
|
+
exports.Ed25519ChainCodeEntryCodec = t.type({ prv: t.string, chainCode: t.string });
|
|
61
|
+
const SafeKeycardRootEntryCodec = t.union([t.string, exports.Ed25519ChainCodeEntryCodec]);
|
|
50
62
|
// Annotating with SafeKeycardRoots makes the compiler reject a key added to or removed from one side only.
|
|
51
63
|
const SafeKeycardRootsCodec = t.type({
|
|
52
|
-
secp256k1Multisig:
|
|
53
|
-
ecdsaMpc:
|
|
54
|
-
eddsaMpc:
|
|
55
|
-
ed25519Multisig:
|
|
64
|
+
secp256k1Multisig: SafeKeycardRootEntryCodec,
|
|
65
|
+
ecdsaMpc: SafeKeycardRootEntryCodec,
|
|
66
|
+
eddsaMpc: SafeKeycardRootEntryCodec,
|
|
67
|
+
ed25519Multisig: SafeKeycardRootEntryCodec,
|
|
56
68
|
});
|
|
57
69
|
// Decodes a box's JSON string straight into the validated roots record.
|
|
58
70
|
const SafeKeycardBoxFromString = io_ts_types_1.JsonFromString.pipe(SafeKeycardRootsCodec);
|
|
59
71
|
/**
|
|
60
72
|
* Parses a safe keycard box value — the JSON packed by key-card's `generateSafeQrData`, e.g.
|
|
61
73
|
* `{"secp256k1Multisig":"…","ecdsaMpc":"…",…}` — into its four roots. Throws if the value is
|
|
62
|
-
* not valid JSON or any root is
|
|
74
|
+
* not valid JSON or any root is not a bare string or a `{ prv, chainCode }` entry. Recovery tooling calls this on the A/B/C
|
|
63
75
|
* box value, then decrypts each root value with the safe password. An MPC root value is an
|
|
64
76
|
* opaque versioned envelope; recovery must unwrap its `prvKeyShare` and `vrf` fields instead
|
|
65
77
|
* of treating the decrypted bytes as a bare share.
|
|
@@ -72,4 +84,4 @@ function parseSafeKeycardBox(data) {
|
|
|
72
84
|
}
|
|
73
85
|
return decoded.right;
|
|
74
86
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZENvZGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2tleWNhcmRDb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwREEsa0RBT0M7QUFqRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx5Q0FBMkI7QUFDM0IsZ0RBQWtDO0FBQ2xDLHlEQUFzRDtBQUN0RCw2Q0FBNkM7QUFTN0M7Ozs7Ozs7O0dBUUc7QUFDVSxRQUFBLDBCQUEwQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFPekYsTUFBTSx5QkFBeUIsR0FBaUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsa0NBQTBCLENBQUMsQ0FBQyxDQUFDO0FBRWhILDJHQUEyRztBQUMzRyxNQUFNLHFCQUFxQixHQUE2QixDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELGlCQUFpQixFQUFFLHlCQUF5QjtJQUM1QyxRQUFRLEVBQUUseUJBQXlCO0lBQ25DLFFBQVEsRUFBRSx5QkFBeUI7SUFDbkMsZUFBZSxFQUFFLHlCQUF5QjtDQUMzQyxDQUFDLENBQUM7QUFFSCx3RUFBd0U7QUFDeEUsTUFBTSx3QkFBd0IsR0FBRyw0QkFBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTVFOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxJQUFZO0lBQzlDLE1BQU0sT0FBTyxHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN0QixvSEFBb0g7UUFDcEgsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsMkJBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgU2FmZSBrZXljYXJkIGJveCBjb2RlYy5cbiAqXG4gKiBFYWNoIG9mIEJveGVzIEEvQi9DIG9uIGEgU2FmZSBrZXljYXJkIGlzIGEgSlNPTiBvYmplY3QgbWFwcGluZyBhIHJvb3Qgc2xvdCBuYW1lIHRvIHRoYXQgc2xvdCdzIGtleVxuICogc3RyaW5nLiBJdCBsaXZlcyBpbiB0aGlzIGxlYWYgc28gc2RrLWNvcmUgYW5kIFdSVyBjYW4gcGFyc2UgYSBib3ggd2l0aG91dCBkZXBlbmRpbmcgb24ga2V5LWNhcmQsXG4gKiB3aGljaCBwdWxscyBpbiBQREYvUVIgbGlicmFyaWVzIGFuZCBpdHNlbGYgZGVwZW5kcyBvbiBzZGstY29yZS5cbiAqL1xuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQgKiBhcyBFIGZyb20gJ2ZwLXRzL0VpdGhlcic7XG5pbXBvcnQgeyBQYXRoUmVwb3J0ZXIgfSBmcm9tICdpby10cy9saWIvUGF0aFJlcG9ydGVyJztcbmltcG9ydCB7IEpzb25Gcm9tU3RyaW5nIH0gZnJvbSAnaW8tdHMtdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBSb290S2V5VHlwZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuXG4vKipcbiAqIElkZW50aWZpZXIgZm9yIG9uZSBvZiBhIHNhZmUncyBmb3VyIHJvb3RzIChvbmUgcGVyIHNpZ25pbmcgc2NoZW1lKS4gRWFjaCB2YWx1ZSBpcyB0aGVcbiAqIHJvb3QncyBgcm9vdEtleVR5cGVgLCB3aGljaCBpcyBhbHNvIHRoZSBrZXkgdXNlZCBpbiB0aGUga2V5Y2FyZCdzIHBlci1ib3ggSlNPTi5cbiAqL1xuZXhwb3J0IHR5cGUgU2FmZVJvb3RLZXlUeXBlID0gUm9vdEtleVR5cGU7XG5cbi8qKlxuICogVGhlIEpTT04gb2JqZWN0IGVuY29kZWQgaW4gYSBzYWZlIGtleWNhcmQgYm94IChBL0IvQyk6IHRoZSBmb3VyIHJvb3RzIGtleWVkIGJ5XG4gKiB7QGxpbmsgU2FmZVJvb3RLZXlUeXBlfS4gVmFsdWVzIGFyZSBwZXItcm9vdCBjaXBoZXJ0ZXh0IGZvciBBL0IgKGVuY3J5cHRlZFBydiBvclxuICogcmVkdWNlZEVuY3J5cHRlZFBydjsgc2FmZSBNUEMgY2lwaGVydGV4dCBkZWNyeXB0cyB0byBhIHZlcnNpb25lZCBzaWduaW5nK1ZSRiBlbnZlbG9wZSkgb3JcbiAqIHB1YmxpYyBrZXlzIGZvciBDLiBUaGUgcm9vdC1rZXktdHlwZSBrZXlzIGFyZSBzZWxmLWlkZW50aWZ5aW5nLCBzbyBhXG4gKiBjb25zdW1lciBwYXJzZXMgYnkga2V5IHJhdGhlciB0aGFuIGJ5IHNpemUvb2Zmc2V0LiBCb3ggQidzIGBlZDI1NTE5TXVsdGlzaWdgIGVudHJ5IGNhcnJpZXMgYVxuICogYHsgcHJ2LCBjaGFpbkNvZGUgfWAgb2JqZWN0ICh0aGUgY2hhaW4gY29kZSBpcyBpbmRlcGVuZGVudCByYW5kb21uZXNzIG5vdCByZWNvbXB1dGFibGUgZnJvbSB0aGVcbiAqIHNlZWQpOyBldmVyeSBvdGhlciBlbnRyeSBpcyBhIGJhcmUgc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgRWQyNTUxOUNoYWluQ29kZUVudHJ5Q29kZWMgPSB0LnR5cGUoeyBwcnY6IHQuc3RyaW5nLCBjaGFpbkNvZGU6IHQuc3RyaW5nIH0pO1xuZXhwb3J0IHR5cGUgRWQyNTUxOUNoYWluQ29kZUVudHJ5ID0gdC5UeXBlT2Y8dHlwZW9mIEVkMjU1MTlDaGFpbkNvZGVFbnRyeUNvZGVjPjtcblxuZXhwb3J0IHR5cGUgU2FmZUtleWNhcmRSb290RW50cnkgPSBzdHJpbmcgfCBFZDI1NTE5Q2hhaW5Db2RlRW50cnk7XG5cbmV4cG9ydCB0eXBlIFNhZmVLZXljYXJkUm9vdHMgPSBSZWNvcmQ8U2FmZVJvb3RLZXlUeXBlLCBTYWZlS2V5Y2FyZFJvb3RFbnRyeT47XG5cbmNvbnN0IFNhZmVLZXljYXJkUm9vdEVudHJ5Q29kZWM6IHQuVHlwZTxTYWZlS2V5Y2FyZFJvb3RFbnRyeT4gPSB0LnVuaW9uKFt0LnN0cmluZywgRWQyNTUxOUNoYWluQ29kZUVudHJ5Q29kZWNdKTtcblxuLy8gQW5ub3RhdGluZyB3aXRoIFNhZmVLZXljYXJkUm9vdHMgbWFrZXMgdGhlIGNvbXBpbGVyIHJlamVjdCBhIGtleSBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gb25lIHNpZGUgb25seS5cbmNvbnN0IFNhZmVLZXljYXJkUm9vdHNDb2RlYzogdC5UeXBlPFNhZmVLZXljYXJkUm9vdHM+ID0gdC50eXBlKHtcbiAgc2VjcDI1NmsxTXVsdGlzaWc6IFNhZmVLZXljYXJkUm9vdEVudHJ5Q29kZWMsXG4gIGVjZHNhTXBjOiBTYWZlS2V5Y2FyZFJvb3RFbnRyeUNvZGVjLFxuICBlZGRzYU1wYzogU2FmZUtleWNhcmRSb290RW50cnlDb2RlYyxcbiAgZWQyNTUxOU11bHRpc2lnOiBTYWZlS2V5Y2FyZFJvb3RFbnRyeUNvZGVjLFxufSk7XG5cbi8vIERlY29kZXMgYSBib3gncyBKU09OIHN0cmluZyBzdHJhaWdodCBpbnRvIHRoZSB2YWxpZGF0ZWQgcm9vdHMgcmVjb3JkLlxuY29uc3QgU2FmZUtleWNhcmRCb3hGcm9tU3RyaW5nID0gSnNvbkZyb21TdHJpbmcucGlwZShTYWZlS2V5Y2FyZFJvb3RzQ29kZWMpO1xuXG4vKipcbiAqIFBhcnNlcyBhIHNhZmUga2V5Y2FyZCBib3ggdmFsdWUg4oCUIHRoZSBKU09OIHBhY2tlZCBieSBrZXktY2FyZCdzIGBnZW5lcmF0ZVNhZmVRckRhdGFgLCBlLmcuXG4gKiBge1wic2VjcDI1NmsxTXVsdGlzaWdcIjpcIuKAplwiLFwiZWNkc2FNcGNcIjpcIuKAplwiLOKApn1gIOKAlCBpbnRvIGl0cyBmb3VyIHJvb3RzLiBUaHJvd3MgaWYgdGhlIHZhbHVlIGlzXG4gKiBub3QgdmFsaWQgSlNPTiBvciBhbnkgcm9vdCBpcyBub3QgYSBiYXJlIHN0cmluZyBvciBhIGB7IHBydiwgY2hhaW5Db2RlIH1gIGVudHJ5LiBSZWNvdmVyeSB0b29saW5nIGNhbGxzIHRoaXMgb24gdGhlIEEvQi9DXG4gKiBib3ggdmFsdWUsIHRoZW4gZGVjcnlwdHMgZWFjaCByb290IHZhbHVlIHdpdGggdGhlIHNhZmUgcGFzc3dvcmQuIEFuIE1QQyByb290IHZhbHVlIGlzIGFuXG4gKiBvcGFxdWUgdmVyc2lvbmVkIGVudmVsb3BlOyByZWNvdmVyeSBtdXN0IHVud3JhcCBpdHMgYHBydktleVNoYXJlYCBhbmQgYHZyZmAgZmllbGRzIGluc3RlYWRcbiAqIG9mIHRyZWF0aW5nIHRoZSBkZWNyeXB0ZWQgYnl0ZXMgYXMgYSBiYXJlIHNoYXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTYWZlS2V5Y2FyZEJveChkYXRhOiBzdHJpbmcpOiBTYWZlS2V5Y2FyZFJvb3RzIHtcbiAgY29uc3QgZGVjb2RlZCA9IFNhZmVLZXljYXJkQm94RnJvbVN0cmluZy5kZWNvZGUoZGF0YSk7XG4gIGlmIChFLmlzTGVmdChkZWNvZGVkKSkge1xuICAgIC8vIFBhdGhSZXBvcnRlciwgbm90IGRlY29kZVdpdGhDb2RlYzogaW8tdHMgZXJyb3JzIGNhcnJ5IG5vIG1lc3NhZ2UsIHNvIGRlY29kZVdpdGhDb2RlYyB3b3VsZCByZXBvcnQgb25seSBcInVua25vd25cIi5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBhcnNlU2FmZUtleWNhcmRCb3g6ICR7UGF0aFJlcG9ydGVyLnJlcG9ydChkZWNvZGVkKS5qb2luKCc7ICcpfWApO1xuICB9XG4gIHJldHVybiBkZWNvZGVkLnJpZ2h0O1xufVxuIl19
|