@bitgo-beta/abstract-utxo 1.6.1-alpha.244 → 1.6.1-alpha.246
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/CHANGELOG.md +6 -0
- package/dist/src/core/descriptor/DescriptorMap.d.ts +1 -1
- package/dist/src/core/descriptor/DescriptorMap.d.ts.map +1 -1
- package/dist/src/core/descriptor/DescriptorMap.js +5 -2
- package/dist/src/descriptor/NamedDescriptor.d.ts +14 -3
- package/dist/src/descriptor/NamedDescriptor.d.ts.map +1 -1
- package/dist/src/descriptor/NamedDescriptor.js +35 -5
- package/dist/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
- package/dist/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/createDescriptorWallet.js +74 -0
- package/dist/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
- package/dist/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/createDescriptors.js +33 -0
- package/dist/src/descriptor/createWallet/index.d.ts +3 -0
- package/dist/src/descriptor/createWallet/index.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/index.js +19 -0
- package/dist/src/descriptor/index.d.ts +2 -1
- package/dist/src/descriptor/index.d.ts.map +1 -1
- package/dist/src/descriptor/index.js +37 -2
- package/dist/src/descriptor/validatePolicy.d.ts +14 -5
- package/dist/src/descriptor/validatePolicy.d.ts.map +1 -1
- package/dist/src/descriptor/validatePolicy.js +71 -28
- package/dist/test/descriptor/NamedDescriptor.d.ts +2 -0
- package/dist/test/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/test/descriptor/NamedDescriptor.js +19 -0
- package/dist/test/descriptor/createWallet/createDescriptors.d.ts +2 -0
- package/dist/test/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
- package/dist/test/descriptor/createWallet/createDescriptors.js +21 -0
- package/dist/test/descriptor/descriptorWallet.js +3 -2
- package/dist/test/transaction/descriptor/validatePolicy.d.ts +2 -0
- package/dist/test/transaction/descriptor/validatePolicy.d.ts.map +1 -0
- package/dist/test/transaction/descriptor/validatePolicy.js +40 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [9.10.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@9.9.0...@bitgo/abstract-utxo@9.10.0) (2025-01-03)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **abstract-utxo:** sign descriptors when creating wallet ([079d9b9](https://github.com/BitGo/BitGoJS/commit/079d9b91281ee05b1140aaf8fbf0758627820bba))
|
|
11
|
+
|
|
6
12
|
# [9.9.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@9.8.0...@bitgo/abstract-utxo@9.9.0) (2024-12-24)
|
|
7
13
|
|
|
8
14
|
### Features
|
|
@@ -4,6 +4,6 @@ export type DescriptorMap = Map<string, Descriptor>;
|
|
|
4
4
|
/** Convert an array of descriptor name-value pairs to a descriptor map */
|
|
5
5
|
export declare function toDescriptorMap(descriptors: {
|
|
6
6
|
name: string;
|
|
7
|
-
value: string;
|
|
7
|
+
value: Descriptor | string;
|
|
8
8
|
}[]): DescriptorMap;
|
|
9
9
|
//# sourceMappingURL=DescriptorMap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DescriptorMap.d.ts","sourceRoot":"","sources":["../../../../src/core/descriptor/DescriptorMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEpD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"DescriptorMap.d.ts","sourceRoot":"","sources":["../../../../src/core/descriptor/DescriptorMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEpD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAA;CAAE,EAAE,GAAG,aAAa,CAO1G"}
|
|
@@ -4,6 +4,9 @@ exports.toDescriptorMap = toDescriptorMap;
|
|
|
4
4
|
const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
|
|
5
5
|
/** Convert an array of descriptor name-value pairs to a descriptor map */
|
|
6
6
|
function toDescriptorMap(descriptors) {
|
|
7
|
-
return new Map(descriptors.map((d) => [
|
|
7
|
+
return new Map(descriptors.map((d) => [
|
|
8
|
+
d.name,
|
|
9
|
+
d.value instanceof wasm_miniscript_1.Descriptor ? d.value : wasm_miniscript_1.Descriptor.fromString(d.value, 'derivable'),
|
|
10
|
+
]));
|
|
8
11
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVzY3JpcHRvck1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL2Rlc2NyaXB0b3IvRGVzY3JpcHRvck1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLDBDQU9DO0FBYkQsNERBQW9EO0FBS3BELDBFQUEwRTtBQUMxRSxTQUFnQixlQUFlLENBQUMsV0FBMkQ7SUFDekYsT0FBTyxJQUFJLEdBQUcsQ0FDWixXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsSUFBSTtRQUNOLENBQUMsQ0FBQyxLQUFLLFlBQVksNEJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNEJBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7S0FDdEYsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuXG4vKiogTWFwIGZyb20gZGVzY3JpcHRvciBuYW1lIHRvIGRlc2NyaXB0b3IgKi9cbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JNYXAgPSBNYXA8c3RyaW5nLCBEZXNjcmlwdG9yPjtcblxuLyoqIENvbnZlcnQgYW4gYXJyYXkgb2YgZGVzY3JpcHRvciBuYW1lLXZhbHVlIHBhaXJzIHRvIGEgZGVzY3JpcHRvciBtYXAgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Rlc2NyaXB0b3JNYXAoZGVzY3JpcHRvcnM6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogRGVzY3JpcHRvciB8IHN0cmluZyB9W10pOiBEZXNjcmlwdG9yTWFwIHtcbiAgcmV0dXJuIG5ldyBNYXAoXG4gICAgZGVzY3JpcHRvcnMubWFwKChkKSA9PiBbXG4gICAgICBkLm5hbWUsXG4gICAgICBkLnZhbHVlIGluc3RhbmNlb2YgRGVzY3JpcHRvciA/IGQudmFsdWUgOiBEZXNjcmlwdG9yLmZyb21TdHJpbmcoZC52YWx1ZSwgJ2Rlcml2YWJsZScpLFxuICAgIF0pXG4gICk7XG59XG4iXX0=
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import * as t from 'io-ts';
|
|
2
|
-
|
|
2
|
+
import { Descriptor } from '@bitgo/wasm-miniscript';
|
|
3
|
+
import { BIP32Interface } from '@bitgo-beta/utxo-lib';
|
|
4
|
+
export declare const NamedDescriptor: t.IntersectionC<[t.TypeC<{
|
|
3
5
|
name: t.StringC;
|
|
4
6
|
value: t.StringC;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
+
}>, t.PartialC<{
|
|
8
|
+
signatures: t.UnionC<[t.ArrayC<t.StringC>, t.UndefinedC]>;
|
|
9
|
+
}>]>;
|
|
10
|
+
export type NamedDescriptor<T = string> = {
|
|
11
|
+
name: string;
|
|
12
|
+
value: T;
|
|
13
|
+
signatures?: string[];
|
|
14
|
+
};
|
|
15
|
+
export declare function createNamedDescriptorWithSignature(name: string, descriptor: Descriptor, signingKey: BIP32Interface): NamedDescriptor;
|
|
16
|
+
export declare function hasValidSignature(descriptor: string | Descriptor, key: BIP32Interface, signatures: string[]): boolean;
|
|
17
|
+
export declare function assertHasValidSignature(namedDescriptor: NamedDescriptor, key: BIP32Interface): void;
|
|
7
18
|
//# sourceMappingURL=NamedDescriptor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NamedDescriptor.d.ts","sourceRoot":"","sources":["../../../src/descriptor/NamedDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"NamedDescriptor.d.ts","sourceRoot":"","sources":["../../../src/descriptor/NamedDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAY,MAAM,sBAAsB,CAAC;AAGhE,eAAO,MAAM,eAAe;;;;;IAW3B,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,MAAM,IAAI;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,cAAc,GACzB,eAAe,CAIjB;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CASrH;AAED,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAInG"}
|
|
@@ -34,9 +34,39 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.NamedDescriptor = void 0;
|
|
37
|
+
exports.createNamedDescriptorWithSignature = createNamedDescriptorWithSignature;
|
|
38
|
+
exports.hasValidSignature = hasValidSignature;
|
|
39
|
+
exports.assertHasValidSignature = assertHasValidSignature;
|
|
37
40
|
const t = __importStar(require("io-ts"));
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
|
|
42
|
+
const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
|
|
43
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
44
|
+
exports.NamedDescriptor = t.intersection([
|
|
45
|
+
t.type({
|
|
46
|
+
name: t.string,
|
|
47
|
+
value: t.string,
|
|
48
|
+
}),
|
|
49
|
+
t.partial({
|
|
50
|
+
signatures: t.union([t.array(t.string), t.undefined]),
|
|
51
|
+
}),
|
|
52
|
+
], 'NamedDescriptor');
|
|
53
|
+
function createNamedDescriptorWithSignature(name, descriptor, signingKey) {
|
|
54
|
+
const value = descriptor.toString();
|
|
55
|
+
const signature = (0, sdk_core_1.signMessage)(value, signingKey, utxo_lib_1.networks.bitcoin).toString('hex');
|
|
56
|
+
return { name, value, signatures: [signature] };
|
|
57
|
+
}
|
|
58
|
+
function hasValidSignature(descriptor, key, signatures) {
|
|
59
|
+
if (typeof descriptor === 'string') {
|
|
60
|
+
descriptor = wasm_miniscript_1.Descriptor.fromString(descriptor, 'derivable');
|
|
61
|
+
}
|
|
62
|
+
const message = descriptor.toString();
|
|
63
|
+
return signatures.some((signature) => {
|
|
64
|
+
return (0, sdk_core_1.verifyMessage)(message, key, Buffer.from(signature, 'hex'), utxo_lib_1.networks.bitcoin);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function assertHasValidSignature(namedDescriptor, key) {
|
|
68
|
+
if (!hasValidSignature(namedDescriptor.value, key, namedDescriptor.signatures ?? [])) {
|
|
69
|
+
throw new Error(`Descriptor ${namedDescriptor.name} does not have a valid signature (key=${key.toBase58()})`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFtZWREZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvTmFtZWREZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQSxnRkFRQztBQUVELDhDQVNDO0FBRUQsMERBSUM7QUFqREQseUNBQTJCO0FBQzNCLDREQUFvRDtBQUNwRCxtREFBZ0U7QUFDaEUsbURBQWtFO0FBRXJELFFBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQzNDO0lBQ0UsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNMLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTtRQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTTtLQUNoQixDQUFDO0lBQ0YsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNSLFVBQVUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ3RELENBQUM7Q0FDSCxFQUNELGlCQUFpQixDQUNsQixDQUFDO0FBUUYsU0FBZ0Isa0NBQWtDLENBQ2hELElBQVksRUFDWixVQUFzQixFQUN0QixVQUEwQjtJQUUxQixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQkFBVyxFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsbUJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkYsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUNsRCxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsVUFBK0IsRUFBRSxHQUFtQixFQUFFLFVBQW9CO0lBQzFHLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsVUFBVSxHQUFHLDRCQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ25DLE9BQU8sSUFBQSx3QkFBYSxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsbUJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxlQUFnQyxFQUFFLEdBQW1CO0lBQzNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxlQUFlLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckYsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLGVBQWUsQ0FBQyxJQUFJLHlDQUF5QyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgbmV0d29ya3MgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBzaWduTWVzc2FnZSwgdmVyaWZ5TWVzc2FnZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGNvbnN0IE5hbWVkRGVzY3JpcHRvciA9IHQuaW50ZXJzZWN0aW9uKFxuICBbXG4gICAgdC50eXBlKHtcbiAgICAgIG5hbWU6IHQuc3RyaW5nLFxuICAgICAgdmFsdWU6IHQuc3RyaW5nLFxuICAgIH0pLFxuICAgIHQucGFydGlhbCh7XG4gICAgICBzaWduYXR1cmVzOiB0LnVuaW9uKFt0LmFycmF5KHQuc3RyaW5nKSwgdC51bmRlZmluZWRdKSxcbiAgICB9KSxcbiAgXSxcbiAgJ05hbWVkRGVzY3JpcHRvcidcbik7XG5cbmV4cG9ydCB0eXBlIE5hbWVkRGVzY3JpcHRvcjxUID0gc3RyaW5nPiA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogVDtcbiAgc2lnbmF0dXJlcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5hbWVkRGVzY3JpcHRvcldpdGhTaWduYXR1cmUoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgc2lnbmluZ0tleTogQklQMzJJbnRlcmZhY2Vcbik6IE5hbWVkRGVzY3JpcHRvciB7XG4gIGNvbnN0IHZhbHVlID0gZGVzY3JpcHRvci50b1N0cmluZygpO1xuICBjb25zdCBzaWduYXR1cmUgPSBzaWduTWVzc2FnZSh2YWx1ZSwgc2lnbmluZ0tleSwgbmV0d29ya3MuYml0Y29pbikudG9TdHJpbmcoJ2hleCcpO1xuICByZXR1cm4geyBuYW1lLCB2YWx1ZSwgc2lnbmF0dXJlczogW3NpZ25hdHVyZV0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1ZhbGlkU2lnbmF0dXJlKGRlc2NyaXB0b3I6IHN0cmluZyB8IERlc2NyaXB0b3IsIGtleTogQklQMzJJbnRlcmZhY2UsIHNpZ25hdHVyZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgZGVzY3JpcHRvciA9PT0gJ3N0cmluZycpIHtcbiAgICBkZXNjcmlwdG9yID0gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGRlc2NyaXB0b3IsICdkZXJpdmFibGUnKTtcbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2UgPSBkZXNjcmlwdG9yLnRvU3RyaW5nKCk7XG4gIHJldHVybiBzaWduYXR1cmVzLnNvbWUoKHNpZ25hdHVyZSkgPT4ge1xuICAgIHJldHVybiB2ZXJpZnlNZXNzYWdlKG1lc3NhZ2UsIGtleSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlLCAnaGV4JyksIG5ldHdvcmtzLmJpdGNvaW4pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEhhc1ZhbGlkU2lnbmF0dXJlKG5hbWVkRGVzY3JpcHRvcjogTmFtZWREZXNjcmlwdG9yLCBrZXk6IEJJUDMySW50ZXJmYWNlKTogdm9pZCB7XG4gIGlmICghaGFzVmFsaWRTaWduYXR1cmUobmFtZWREZXNjcmlwdG9yLnZhbHVlLCBrZXksIG5hbWVkRGVzY3JpcHRvci5zaWduYXR1cmVzID8/IFtdKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGVzY3JpcHRvciAke25hbWVkRGVzY3JpcHRvci5uYW1lfSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgc2lnbmF0dXJlIChrZXk9JHtrZXkudG9CYXNlNTgoKX0pYCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BitGoAPI } from '@bitgo-beta/sdk-api';
|
|
2
|
+
import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
|
|
3
|
+
import { IDescriptorWallet } from '../descriptorWallet';
|
|
4
|
+
import { NamedDescriptor } from '../NamedDescriptor';
|
|
5
|
+
import { DescriptorFromKeys } from './createDescriptors';
|
|
6
|
+
export declare function createDescriptorWallet(bitgo: BitGoAPI, coin: AbstractUtxoCoin, { descriptors, ...params }: {
|
|
7
|
+
type: 'hot';
|
|
8
|
+
label: string;
|
|
9
|
+
enterprise: string;
|
|
10
|
+
keys: string[];
|
|
11
|
+
descriptors: NamedDescriptor[];
|
|
12
|
+
}): Promise<IDescriptorWallet>;
|
|
13
|
+
export declare function createDescriptorWalletWithWalletPassphrase(bitgo: BitGoAPI, coin: AbstractUtxoCoin, { enterprise, walletPassphrase, descriptorsFromKeys, ...params }: {
|
|
14
|
+
label: string;
|
|
15
|
+
enterprise: string;
|
|
16
|
+
walletPassphrase: string;
|
|
17
|
+
descriptorsFromKeys: DescriptorFromKeys;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}): Promise<IDescriptorWallet>;
|
|
20
|
+
//# sourceMappingURL=createDescriptorWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDescriptorWallet.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/createWallet/createDescriptorWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,gBAAgB,EACtB,EACE,WAAW,EACX,GAAG,MAAM,EACV,EAAE;IACD,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC,GACA,OAAO,CAAC,iBAAiB,CAAC,CAW5B;AAED,wBAAsB,0CAA0C,CAC9D,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,gBAAgB,EACtB,EACE,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,GAAG,MAAM,EACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,kBAAkB,CAAC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GACA,OAAO,CAAC,iBAAiB,CAAC,CAqB5B"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createDescriptorWallet = createDescriptorWallet;
|
|
37
|
+
exports.createDescriptorWalletWithWalletPassphrase = createDescriptorWalletWithWalletPassphrase;
|
|
38
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
39
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
40
|
+
async function createDescriptorWallet(bitgo, coin, { descriptors, ...params }) {
|
|
41
|
+
// We don't use `coin.wallets().add` here because it does a bunch of validation that does not make sense
|
|
42
|
+
// for descriptor wallets.
|
|
43
|
+
const newWallet = await bitgo
|
|
44
|
+
.post(coin.url('/wallet/add'))
|
|
45
|
+
.send({
|
|
46
|
+
...params,
|
|
47
|
+
coinSpecific: { descriptors },
|
|
48
|
+
})
|
|
49
|
+
.result();
|
|
50
|
+
return new sdk_core_1.Wallet(bitgo, coin, newWallet);
|
|
51
|
+
}
|
|
52
|
+
async function createDescriptorWalletWithWalletPassphrase(bitgo, coin, { enterprise, walletPassphrase, descriptorsFromKeys, ...params }) {
|
|
53
|
+
const userKeychain = await coin.keychains().createUserKeychain(walletPassphrase);
|
|
54
|
+
const backupKeychain = await coin.keychains().createBackup();
|
|
55
|
+
const bitgoKeychain = await coin.keychains().createBitGo({ enterprise });
|
|
56
|
+
if (!userKeychain.prv) {
|
|
57
|
+
throw new Error('Missing private key');
|
|
58
|
+
}
|
|
59
|
+
const userKey = utxolib.bip32.fromBase58(userKeychain.prv);
|
|
60
|
+
const cosigners = [backupKeychain, bitgoKeychain].map((keychain) => {
|
|
61
|
+
if (!keychain.pub) {
|
|
62
|
+
throw new Error('Missing public key');
|
|
63
|
+
}
|
|
64
|
+
return utxolib.bip32.fromBase58(keychain.pub);
|
|
65
|
+
});
|
|
66
|
+
return createDescriptorWallet(bitgo, coin, {
|
|
67
|
+
...params,
|
|
68
|
+
type: 'hot',
|
|
69
|
+
enterprise,
|
|
70
|
+
keys: [userKeychain.id, backupKeychain.id, bitgoKeychain.id],
|
|
71
|
+
descriptors: descriptorsFromKeys(userKey, cosigners),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRGVzY3JpcHRvcldhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL2NyZWF0ZVdhbGxldC9jcmVhdGVEZXNjcmlwdG9yV2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsd0RBd0JDO0FBRUQsZ0dBb0NDO0FBdkVELDhEQUFnRDtBQUNoRCxtREFBOEM7QUFRdkMsS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxLQUFlLEVBQ2YsSUFBc0IsRUFDdEIsRUFDRSxXQUFXLEVBQ1gsR0FBRyxNQUFNLEVBT1Y7SUFFRCx3R0FBd0c7SUFDeEcsMEJBQTBCO0lBQzFCLE1BQU0sU0FBUyxHQUFHLE1BQU0sS0FBSztTQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM3QixJQUFJLENBQUM7UUFDSixHQUFHLE1BQU07UUFDVCxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUU7S0FDOUIsQ0FBQztTQUNELE1BQU0sRUFBRSxDQUFDO0lBQ1osT0FBTyxJQUFJLGlCQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQXNCLENBQUM7QUFDakUsQ0FBQztBQUVNLEtBQUssVUFBVSwwQ0FBMEMsQ0FDOUQsS0FBZSxFQUNmLElBQXNCLEVBQ3RCLEVBQ0UsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsR0FBRyxNQUFNLEVBT1Y7SUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRCxNQUFNLFNBQVMsR0FBRyxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLHNCQUFzQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7UUFDekMsR0FBRyxNQUFNO1FBQ1QsSUFBSSxFQUFFLEtBQUs7UUFDWCxVQUFVO1FBQ1YsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDNUQsV0FBVyxFQUFFLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUM7S0FDckQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IFdhbGxldCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgSURlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICcuLi9kZXNjcmlwdG9yV2FsbGV0JztcbmltcG9ydCB7IE5hbWVkRGVzY3JpcHRvciB9IGZyb20gJy4uL05hbWVkRGVzY3JpcHRvcic7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JGcm9tS2V5cyB9IGZyb20gJy4vY3JlYXRlRGVzY3JpcHRvcnMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVzY3JpcHRvcldhbGxldChcbiAgYml0Z286IEJpdEdvQVBJLFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB7XG4gICAgZGVzY3JpcHRvcnMsXG4gICAgLi4ucGFyYW1zXG4gIH06IHtcbiAgICB0eXBlOiAnaG90JztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGVudGVycHJpc2U6IHN0cmluZztcbiAgICBrZXlzOiBzdHJpbmdbXTtcbiAgICBkZXNjcmlwdG9yczogTmFtZWREZXNjcmlwdG9yW107XG4gIH1cbik6IFByb21pc2U8SURlc2NyaXB0b3JXYWxsZXQ+IHtcbiAgLy8gV2UgZG9uJ3QgdXNlIGBjb2luLndhbGxldHMoKS5hZGRgIGhlcmUgYmVjYXVzZSBpdCBkb2VzIGEgYnVuY2ggb2YgdmFsaWRhdGlvbiB0aGF0IGRvZXMgbm90IG1ha2Ugc2Vuc2VcbiAgLy8gZm9yIGRlc2NyaXB0b3Igd2FsbGV0cy5cbiAgY29uc3QgbmV3V2FsbGV0ID0gYXdhaXQgYml0Z29cbiAgICAucG9zdChjb2luLnVybCgnL3dhbGxldC9hZGQnKSlcbiAgICAuc2VuZCh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBjb2luU3BlY2lmaWM6IHsgZGVzY3JpcHRvcnMgfSxcbiAgICB9KVxuICAgIC5yZXN1bHQoKTtcbiAgcmV0dXJuIG5ldyBXYWxsZXQoYml0Z28sIGNvaW4sIG5ld1dhbGxldCkgYXMgSURlc2NyaXB0b3JXYWxsZXQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVEZXNjcmlwdG9yV2FsbGV0V2l0aFdhbGxldFBhc3NwaHJhc2UoXG4gIGJpdGdvOiBCaXRHb0FQSSxcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAge1xuICAgIGVudGVycHJpc2UsXG4gICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICBkZXNjcmlwdG9yc0Zyb21LZXlzLFxuICAgIC4uLnBhcmFtc1xuICB9OiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBlbnRlcnByaXNlOiBzdHJpbmc7XG4gICAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0b3JzRnJvbUtleXM6IERlc2NyaXB0b3JGcm9tS2V5cztcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICB9XG4pOiBQcm9taXNlPElEZXNjcmlwdG9yV2FsbGV0PiB7XG4gIGNvbnN0IHVzZXJLZXljaGFpbiA9IGF3YWl0IGNvaW4ua2V5Y2hhaW5zKCkuY3JlYXRlVXNlcktleWNoYWluKHdhbGxldFBhc3NwaHJhc2UpO1xuICBjb25zdCBiYWNrdXBLZXljaGFpbiA9IGF3YWl0IGNvaW4ua2V5Y2hhaW5zKCkuY3JlYXRlQmFja3VwKCk7XG4gIGNvbnN0IGJpdGdvS2V5Y2hhaW4gPSBhd2FpdCBjb2luLmtleWNoYWlucygpLmNyZWF0ZUJpdEdvKHsgZW50ZXJwcmlzZSB9KTtcbiAgaWYgKCF1c2VyS2V5Y2hhaW4ucHJ2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gIH1cbiAgY29uc3QgdXNlcktleSA9IHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OCh1c2VyS2V5Y2hhaW4ucHJ2KTtcbiAgY29uc3QgY29zaWduZXJzID0gW2JhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluXS5tYXAoKGtleWNoYWluKSA9PiB7XG4gICAgaWYgKCFrZXljaGFpbi5wdWIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwdWJsaWMga2V5Jyk7XG4gICAgfVxuICAgIHJldHVybiB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoa2V5Y2hhaW4ucHViKTtcbiAgfSk7XG4gIHJldHVybiBjcmVhdGVEZXNjcmlwdG9yV2FsbGV0KGJpdGdvLCBjb2luLCB7XG4gICAgLi4ucGFyYW1zLFxuICAgIHR5cGU6ICdob3QnLFxuICAgIGVudGVycHJpc2UsXG4gICAga2V5czogW3VzZXJLZXljaGFpbi5pZCwgYmFja3VwS2V5Y2hhaW4uaWQsIGJpdGdvS2V5Y2hhaW4uaWRdLFxuICAgIGRlc2NyaXB0b3JzOiBkZXNjcmlwdG9yc0Zyb21LZXlzKHVzZXJLZXksIGNvc2lnbmVycyksXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BIP32Interface } from '@bitgo-beta/utxo-lib';
|
|
2
|
+
import { NamedDescriptor } from '../NamedDescriptor';
|
|
3
|
+
export type DescriptorFromKeys = (userKey: BIP32Interface, cosigners: BIP32Interface[]) => NamedDescriptor[];
|
|
4
|
+
/**
|
|
5
|
+
* Create a pair of external and internal descriptors for a 2-of-3 multisig wallet.
|
|
6
|
+
*
|
|
7
|
+
* @param userKey
|
|
8
|
+
* @param cosigners
|
|
9
|
+
* @constructor
|
|
10
|
+
*/
|
|
11
|
+
export declare const DefaultWsh2Of3: DescriptorFromKeys;
|
|
12
|
+
//# sourceMappingURL=createDescriptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDescriptors.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/createWallet/createDescriptors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAsC,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGzF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,CAAC;AAgC7G;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,kBACiF,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultWsh2Of3 = void 0;
|
|
4
|
+
const NamedDescriptor_1 = require("../NamedDescriptor");
|
|
5
|
+
const builder_1 = require("../builder");
|
|
6
|
+
/**
|
|
7
|
+
* Create a pair of external and internal descriptors for a 2-of-3 multisig wallet.
|
|
8
|
+
* Overrides the path of the builder to use the external and internal derivation paths (0/* and 1/*).
|
|
9
|
+
*
|
|
10
|
+
* @param builder
|
|
11
|
+
* @param userKey
|
|
12
|
+
*/
|
|
13
|
+
function createExternalInternalPair(builder, userKey) {
|
|
14
|
+
if (userKey.isNeutered()) {
|
|
15
|
+
throw new Error('User key must be private');
|
|
16
|
+
}
|
|
17
|
+
const external = (0, NamedDescriptor_1.createNamedDescriptorWithSignature)(builder.name + '/external', (0, builder_1.getDescriptorFromBuilder)({ ...builder, path: '0/*' }), userKey);
|
|
18
|
+
const internal = (0, NamedDescriptor_1.createNamedDescriptorWithSignature)(builder.name + '/internal', (0, builder_1.getDescriptorFromBuilder)({ ...builder, path: '1/*' }), userKey);
|
|
19
|
+
if (external.value === internal.value) {
|
|
20
|
+
throw new Error('External and internal descriptors must be different. Make to use the path in descriptor.');
|
|
21
|
+
}
|
|
22
|
+
return [external, internal];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create a pair of external and internal descriptors for a 2-of-3 multisig wallet.
|
|
26
|
+
*
|
|
27
|
+
* @param userKey
|
|
28
|
+
* @param cosigners
|
|
29
|
+
* @constructor
|
|
30
|
+
*/
|
|
31
|
+
const DefaultWsh2Of3 = (userKey, cosigners) => createExternalInternalPair({ name: 'Wsh2Of3', keys: [userKey.neutered(), ...cosigners], path: '' }, userKey);
|
|
32
|
+
exports.DefaultWsh2Of3 = DefaultWsh2Of3;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9jcmVhdGVXYWxsZXQvY3JlYXRlRGVzY3JpcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsd0RBQXlGO0FBQ3pGLHdDQUF5RTtBQUl6RTs7Ozs7O0dBTUc7QUFDSCxTQUFTLDBCQUEwQixDQUNqQyxPQUEwQixFQUMxQixPQUF1QjtJQUV2QixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBQSxvREFBa0MsRUFDakQsT0FBTyxDQUFDLElBQUksR0FBRyxXQUFXLEVBQzFCLElBQUEsa0NBQXdCLEVBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDckQsT0FBTyxDQUNSLENBQUM7SUFDRixNQUFNLFFBQVEsR0FBRyxJQUFBLG9EQUFrQyxFQUNqRCxPQUFPLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFDMUIsSUFBQSxrQ0FBd0IsRUFBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUNyRCxPQUFPLENBQ1IsQ0FBQztJQUNGLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQywwRkFBMEYsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFDRCxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSSxNQUFNLGNBQWMsR0FBdUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FDdkUsMEJBQTBCLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQURsRyxRQUFBLGNBQWMsa0JBQ29GIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IGNyZWF0ZU5hbWVkRGVzY3JpcHRvcldpdGhTaWduYXR1cmUsIE5hbWVkRGVzY3JpcHRvciB9IGZyb20gJy4uL05hbWVkRGVzY3JpcHRvcic7XG5pbXBvcnQgeyBnZXREZXNjcmlwdG9yRnJvbUJ1aWxkZXIsIERlc2NyaXB0b3JCdWlsZGVyIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5cbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JGcm9tS2V5cyA9ICh1c2VyS2V5OiBCSVAzMkludGVyZmFjZSwgY29zaWduZXJzOiBCSVAzMkludGVyZmFjZVtdKSA9PiBOYW1lZERlc2NyaXB0b3JbXTtcblxuLyoqXG4gKiBDcmVhdGUgYSBwYWlyIG9mIGV4dGVybmFsIGFuZCBpbnRlcm5hbCBkZXNjcmlwdG9ycyBmb3IgYSAyLW9mLTMgbXVsdGlzaWcgd2FsbGV0LlxuICogT3ZlcnJpZGVzIHRoZSBwYXRoIG9mIHRoZSBidWlsZGVyIHRvIHVzZSB0aGUgZXh0ZXJuYWwgYW5kIGludGVybmFsIGRlcml2YXRpb24gcGF0aHMgKDAvKiBhbmQgMS8qKS5cbiAqXG4gKiBAcGFyYW0gYnVpbGRlclxuICogQHBhcmFtIHVzZXJLZXlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXh0ZXJuYWxJbnRlcm5hbFBhaXIoXG4gIGJ1aWxkZXI6IERlc2NyaXB0b3JCdWlsZGVyLFxuICB1c2VyS2V5OiBCSVAzMkludGVyZmFjZVxuKTogW05hbWVkRGVzY3JpcHRvciwgTmFtZWREZXNjcmlwdG9yXSB7XG4gIGlmICh1c2VyS2V5LmlzTmV1dGVyZWQoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVXNlciBrZXkgbXVzdCBiZSBwcml2YXRlJyk7XG4gIH1cbiAgY29uc3QgZXh0ZXJuYWwgPSBjcmVhdGVOYW1lZERlc2NyaXB0b3JXaXRoU2lnbmF0dXJlKFxuICAgIGJ1aWxkZXIubmFtZSArICcvZXh0ZXJuYWwnLFxuICAgIGdldERlc2NyaXB0b3JGcm9tQnVpbGRlcih7IC4uLmJ1aWxkZXIsIHBhdGg6ICcwLyonIH0pLFxuICAgIHVzZXJLZXlcbiAgKTtcbiAgY29uc3QgaW50ZXJuYWwgPSBjcmVhdGVOYW1lZERlc2NyaXB0b3JXaXRoU2lnbmF0dXJlKFxuICAgIGJ1aWxkZXIubmFtZSArICcvaW50ZXJuYWwnLFxuICAgIGdldERlc2NyaXB0b3JGcm9tQnVpbGRlcih7IC4uLmJ1aWxkZXIsIHBhdGg6ICcxLyonIH0pLFxuICAgIHVzZXJLZXlcbiAgKTtcbiAgaWYgKGV4dGVybmFsLnZhbHVlID09PSBpbnRlcm5hbC52YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXh0ZXJuYWwgYW5kIGludGVybmFsIGRlc2NyaXB0b3JzIG11c3QgYmUgZGlmZmVyZW50LiBNYWtlIHRvIHVzZSB0aGUgcGF0aCBpbiBkZXNjcmlwdG9yLicpO1xuICB9XG4gIHJldHVybiBbZXh0ZXJuYWwsIGludGVybmFsXTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwYWlyIG9mIGV4dGVybmFsIGFuZCBpbnRlcm5hbCBkZXNjcmlwdG9ycyBmb3IgYSAyLW9mLTMgbXVsdGlzaWcgd2FsbGV0LlxuICpcbiAqIEBwYXJhbSB1c2VyS2V5XG4gKiBAcGFyYW0gY29zaWduZXJzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRXc2gyT2YzOiBEZXNjcmlwdG9yRnJvbUtleXMgPSAodXNlcktleSwgY29zaWduZXJzKSA9PlxuICBjcmVhdGVFeHRlcm5hbEludGVybmFsUGFpcih7IG5hbWU6ICdXc2gyT2YzJywga2V5czogW3VzZXJLZXkubmV1dGVyZWQoKSwgLi4uY29zaWduZXJzXSwgcGF0aDogJycgfSwgdXNlcktleSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/createWallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./createDescriptors"), exports);
|
|
18
|
+
__exportStar(require("./createDescriptorWallet"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9jcmVhdGVXYWxsZXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQywyREFBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NyZWF0ZURlc2NyaXB0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlRGVzY3JpcHRvcldhbGxldCc7XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Miniscript, Descriptor } from '@bitgo/wasm-miniscript';
|
|
2
2
|
export { assertDescriptorWalletAddress } from './assertDescriptorWalletAddress';
|
|
3
|
-
export { NamedDescriptor } from './NamedDescriptor';
|
|
3
|
+
export { NamedDescriptor, createNamedDescriptorWithSignature } from './NamedDescriptor';
|
|
4
4
|
export { isDescriptorWallet, getDescriptorMapFromWallet } from './descriptorWallet';
|
|
5
5
|
export { getPolicyForEnv } from './validatePolicy';
|
|
6
|
+
export * as createWallet from './createWallet';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/descriptor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/descriptor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPolicyForEnv = exports.getDescriptorMapFromWallet = exports.isDescriptorWallet = exports.NamedDescriptor = exports.assertDescriptorWalletAddress = exports.Descriptor = exports.Miniscript = void 0;
|
|
36
|
+
exports.createWallet = exports.getPolicyForEnv = exports.getDescriptorMapFromWallet = exports.isDescriptorWallet = exports.createNamedDescriptorWithSignature = exports.NamedDescriptor = exports.assertDescriptorWalletAddress = exports.Descriptor = exports.Miniscript = void 0;
|
|
4
37
|
var wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
|
|
5
38
|
Object.defineProperty(exports, "Miniscript", { enumerable: true, get: function () { return wasm_miniscript_1.Miniscript; } });
|
|
6
39
|
Object.defineProperty(exports, "Descriptor", { enumerable: true, get: function () { return wasm_miniscript_1.Descriptor; } });
|
|
@@ -8,9 +41,11 @@ var assertDescriptorWalletAddress_1 = require("./assertDescriptorWalletAddress")
|
|
|
8
41
|
Object.defineProperty(exports, "assertDescriptorWalletAddress", { enumerable: true, get: function () { return assertDescriptorWalletAddress_1.assertDescriptorWalletAddress; } });
|
|
9
42
|
var NamedDescriptor_1 = require("./NamedDescriptor");
|
|
10
43
|
Object.defineProperty(exports, "NamedDescriptor", { enumerable: true, get: function () { return NamedDescriptor_1.NamedDescriptor; } });
|
|
44
|
+
Object.defineProperty(exports, "createNamedDescriptorWithSignature", { enumerable: true, get: function () { return NamedDescriptor_1.createNamedDescriptorWithSignature; } });
|
|
11
45
|
var descriptorWallet_1 = require("./descriptorWallet");
|
|
12
46
|
Object.defineProperty(exports, "isDescriptorWallet", { enumerable: true, get: function () { return descriptorWallet_1.isDescriptorWallet; } });
|
|
13
47
|
Object.defineProperty(exports, "getDescriptorMapFromWallet", { enumerable: true, get: function () { return descriptorWallet_1.getDescriptorMapFromWallet; } });
|
|
14
48
|
var validatePolicy_1 = require("./validatePolicy");
|
|
15
49
|
Object.defineProperty(exports, "getPolicyForEnv", { enumerable: true, get: function () { return validatePolicy_1.getPolicyForEnv; } });
|
|
16
|
-
|
|
50
|
+
exports.createWallet = __importStar(require("./createWallet"));
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBZ0U7QUFBdkQsNkdBQUEsVUFBVSxPQUFBO0FBQUUsNkdBQUEsVUFBVSxPQUFBO0FBQy9CLGlGQUFnRjtBQUF2RSw4SUFBQSw2QkFBNkIsT0FBQTtBQUN0QyxxREFBd0Y7QUFBL0Usa0hBQUEsZUFBZSxPQUFBO0FBQUUscUlBQUEsa0NBQWtDLE9BQUE7QUFDNUQsdURBQW9GO0FBQTNFLHNIQUFBLGtCQUFrQixPQUFBO0FBQUUsOEhBQUEsMEJBQTBCLE9BQUE7QUFDdkQsbURBQW1EO0FBQTFDLGlIQUFBLGVBQWUsT0FBQTtBQUN4QiwrREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBNaW5pc2NyaXB0LCBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5leHBvcnQgeyBhc3NlcnREZXNjcmlwdG9yV2FsbGV0QWRkcmVzcyB9IGZyb20gJy4vYXNzZXJ0RGVzY3JpcHRvcldhbGxldEFkZHJlc3MnO1xuZXhwb3J0IHsgTmFtZWREZXNjcmlwdG9yLCBjcmVhdGVOYW1lZERlc2NyaXB0b3JXaXRoU2lnbmF0dXJlIH0gZnJvbSAnLi9OYW1lZERlc2NyaXB0b3InO1xuZXhwb3J0IHsgaXNEZXNjcmlwdG9yV2FsbGV0LCBnZXREZXNjcmlwdG9yTWFwRnJvbVdhbGxldCB9IGZyb20gJy4vZGVzY3JpcHRvcldhbGxldCc7XG5leHBvcnQgeyBnZXRQb2xpY3lGb3JFbnYgfSBmcm9tICcuL3ZhbGlkYXRlUG9saWN5JztcbmV4cG9ydCAqIGFzIGNyZWF0ZVdhbGxldCBmcm9tICcuL2NyZWF0ZVdhbGxldCc7XG4iXX0=
|
|
@@ -2,13 +2,22 @@ import { Descriptor } from '@bitgo/wasm-miniscript';
|
|
|
2
2
|
import { EnvironmentName, Triple } from '@bitgo-beta/sdk-core';
|
|
3
3
|
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
4
4
|
import { DescriptorMap } from '../core/descriptor';
|
|
5
|
-
import { DescriptorBuilder } from './builder';
|
|
6
5
|
import { NamedDescriptor } from './NamedDescriptor';
|
|
7
|
-
export type DescriptorValidationPolicy = {
|
|
8
|
-
allowedTemplates: DescriptorBuilder['name'][];
|
|
9
|
-
} | 'allowAll';
|
|
10
6
|
export type KeyTriple = Triple<utxolib.BIP32Interface>;
|
|
11
|
-
export
|
|
7
|
+
export interface DescriptorValidationPolicy {
|
|
8
|
+
name: string;
|
|
9
|
+
validate(d: Descriptor, walletKeys: KeyTriple, signatures: string[]): boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const policyAllowAll: DescriptorValidationPolicy;
|
|
12
|
+
export declare function getValidatorDescriptorTemplate(name: string): DescriptorValidationPolicy;
|
|
13
|
+
export declare function getValidatorEvery(validators: DescriptorValidationPolicy[]): DescriptorValidationPolicy;
|
|
14
|
+
export declare function getValidatorSome(validators: DescriptorValidationPolicy[]): DescriptorValidationPolicy;
|
|
15
|
+
export declare function getValidatorOneOfTemplates(names: string[]): DescriptorValidationPolicy;
|
|
16
|
+
export declare function getValidatorSignedByUserKey(): DescriptorValidationPolicy;
|
|
17
|
+
export declare class DescriptorPolicyValidationError extends Error {
|
|
18
|
+
constructor(descriptor: Descriptor, policy: DescriptorValidationPolicy);
|
|
19
|
+
}
|
|
20
|
+
export declare function assertDescriptorPolicy(descriptor: Descriptor, policy: DescriptorValidationPolicy, walletKeys: KeyTriple, signatures: string[]): void;
|
|
12
21
|
export declare function toDescriptorMapValidate(descriptors: NamedDescriptor[], walletKeys: KeyTriple, policy: DescriptorValidationPolicy): DescriptorMap;
|
|
13
22
|
export declare function getPolicyForEnv(env: EnvironmentName): DescriptorValidationPolicy;
|
|
14
23
|
//# sourceMappingURL=validatePolicy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEvE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAEvD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;CAC/E;AAED,eAAO,MAAM,cAAc,EAAE,0BAG5B,CAAC;AAEF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,CAYvF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOtG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOrG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAEtF;AAED,wBAAgB,2BAA2B,IAAI,0BAA0B,CAQxE;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,0BAA0B;CAGvE;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,SAAS,EACrB,UAAU,EAAE,MAAM,EAAE,GACnB,IAAI,CAIN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,0BAA0B,GACjC,aAAa,CAQf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,0BAA0B,CAahF"}
|
|
@@ -1,48 +1,91 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DescriptorPolicyValidationError = exports.policyAllowAll = void 0;
|
|
4
|
+
exports.getValidatorDescriptorTemplate = getValidatorDescriptorTemplate;
|
|
5
|
+
exports.getValidatorEvery = getValidatorEvery;
|
|
6
|
+
exports.getValidatorSome = getValidatorSome;
|
|
7
|
+
exports.getValidatorOneOfTemplates = getValidatorOneOfTemplates;
|
|
8
|
+
exports.getValidatorSignedByUserKey = getValidatorSignedByUserKey;
|
|
3
9
|
exports.assertDescriptorPolicy = assertDescriptorPolicy;
|
|
4
10
|
exports.toDescriptorMapValidate = toDescriptorMapValidate;
|
|
5
11
|
exports.getPolicyForEnv = getPolicyForEnv;
|
|
12
|
+
const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
|
|
6
13
|
const descriptor_1 = require("../core/descriptor");
|
|
7
14
|
const builder_1 = require("./builder");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const NamedDescriptor_1 = require("./NamedDescriptor");
|
|
16
|
+
exports.policyAllowAll = {
|
|
17
|
+
name: 'allowAll',
|
|
18
|
+
validate: () => true,
|
|
19
|
+
};
|
|
20
|
+
function getValidatorDescriptorTemplate(name) {
|
|
21
|
+
return {
|
|
22
|
+
name: 'descriptorTemplate(' + name + ')',
|
|
23
|
+
validate(d, walletKeys) {
|
|
24
|
+
const parsed = (0, builder_1.parseDescriptor)(d);
|
|
25
|
+
return (parsed.name === name &&
|
|
26
|
+
parsed.keys.length === walletKeys.length &&
|
|
27
|
+
parsed.keys.every((k, i) => k.toBase58() === walletKeys[i].neutered().toBase58()));
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function getValidatorEvery(validators) {
|
|
32
|
+
return {
|
|
33
|
+
name: 'every(' + validators.map((v) => v.name).join(',') + ')',
|
|
34
|
+
validate(d, walletKeys, signatures) {
|
|
35
|
+
return validators.every((v) => v.validate(d, walletKeys, signatures));
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function getValidatorSome(validators) {
|
|
40
|
+
return {
|
|
41
|
+
name: 'some(' + validators.map((v) => v.name).join(',') + ')',
|
|
42
|
+
validate(d, walletKeys, signatures) {
|
|
43
|
+
return validators.some((v) => v.validate(d, walletKeys, signatures));
|
|
44
|
+
},
|
|
45
|
+
};
|
|
17
46
|
}
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
|
|
47
|
+
function getValidatorOneOfTemplates(names) {
|
|
48
|
+
return getValidatorSome(names.map(getValidatorDescriptorTemplate));
|
|
49
|
+
}
|
|
50
|
+
function getValidatorSignedByUserKey() {
|
|
51
|
+
return {
|
|
52
|
+
name: 'signedByUser',
|
|
53
|
+
validate(d, walletKeys, signatures) {
|
|
54
|
+
// the first key is the user key, by convention
|
|
55
|
+
return (0, NamedDescriptor_1.hasValidSignature)(d, walletKeys[0], signatures);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
class DescriptorPolicyValidationError extends Error {
|
|
60
|
+
constructor(descriptor, policy) {
|
|
61
|
+
super(`Descriptor ${descriptor.toString()} does not match policy ${policy.name}`);
|
|
21
62
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
63
|
+
}
|
|
64
|
+
exports.DescriptorPolicyValidationError = DescriptorPolicyValidationError;
|
|
65
|
+
function assertDescriptorPolicy(descriptor, policy, walletKeys, signatures) {
|
|
66
|
+
if (!policy.validate(descriptor, walletKeys, signatures)) {
|
|
67
|
+
throw new DescriptorPolicyValidationError(descriptor, policy);
|
|
27
68
|
}
|
|
28
|
-
throw new Error(`Unknown descriptor validation policy: ${policy}`);
|
|
29
69
|
}
|
|
30
70
|
function toDescriptorMapValidate(descriptors, walletKeys, policy) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
assertDescriptorPolicy(
|
|
34
|
-
|
|
35
|
-
|
|
71
|
+
return (0, descriptor_1.toDescriptorMap)(descriptors.map((namedDescriptor) => {
|
|
72
|
+
const d = wasm_miniscript_1.Descriptor.fromString(namedDescriptor.value, 'derivable');
|
|
73
|
+
assertDescriptorPolicy(d, policy, walletKeys, namedDescriptor.signatures ?? []);
|
|
74
|
+
return { name: namedDescriptor.name, value: d };
|
|
75
|
+
}));
|
|
36
76
|
}
|
|
37
77
|
function getPolicyForEnv(env) {
|
|
38
78
|
switch (env) {
|
|
39
79
|
case 'adminProd':
|
|
40
80
|
case 'prod':
|
|
41
|
-
return
|
|
42
|
-
|
|
43
|
-
|
|
81
|
+
return getValidatorSome([
|
|
82
|
+
// allow all 2-of-3-ish descriptors where the keys match the wallet keys
|
|
83
|
+
getValidatorOneOfTemplates(['Wsh2Of3', 'Wsh2Of3CltvDrop', 'ShWsh2Of3CltvDrop']),
|
|
84
|
+
// allow all descriptors signed by the user key
|
|
85
|
+
getValidatorSignedByUserKey(),
|
|
86
|
+
]);
|
|
44
87
|
default:
|
|
45
|
-
return
|
|
88
|
+
return exports.policyAllowAll;
|
|
46
89
|
}
|
|
47
90
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxQkEsd0VBWUM7QUFFRCw4Q0FPQztBQUVELDRDQU9DO0FBRUQsZ0VBRUM7QUFFRCxrRUFRQztBQVFELHdEQVNDO0FBRUQsMERBWUM7QUFFRCwwQ0FhQztBQS9HRCw0REFBb0Q7QUFJcEQsbURBQW9FO0FBRXBFLHVDQUE0QztBQUM1Qyx1REFBdUU7QUFTMUQsUUFBQSxjQUFjLEdBQStCO0lBQ3hELElBQUksRUFBRSxVQUFVO0lBQ2hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO0NBQ3JCLENBQUM7QUFFRixTQUFnQiw4QkFBOEIsQ0FBQyxJQUFZO0lBQ3pELE9BQU87UUFDTCxJQUFJLEVBQUUscUJBQXFCLEdBQUcsSUFBSSxHQUFHLEdBQUc7UUFDeEMsUUFBUSxDQUFDLENBQWEsRUFBRSxVQUFxQjtZQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHlCQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsT0FBTyxDQUNMLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSTtnQkFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLE1BQU07Z0JBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUNsRixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsVUFBd0M7SUFDeEUsT0FBTztRQUNMLElBQUksRUFBRSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcs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TTtZQUNULE9BQU8sZ0JBQWdCLENBQUM7Z0JBQ3RCLHdFQUF3RTtnQkFDeEUsMEJBQTBCLENBQUMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztnQkFDL0UsK0NBQStDO2dCQUMvQywyQkFBMkIsRUFBRTthQUM5QixDQUFDLENBQUM7UUFDTDtZQUNFLE9BQU8sc0JBQWMsQ0FBQztJQUMxQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcbmltcG9ydCB7IEVudmlyb25tZW50TmFtZSwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JNYXAsIHRvRGVzY3JpcHRvck1hcCB9IGZyb20gJy4uL2NvcmUvZGVzY3JpcHRvcic7XG5cbmltcG9ydCB7IHBhcnNlRGVzY3JpcHRvciB9IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQgeyBoYXNWYWxpZFNpZ25hdHVyZSwgTmFtZWREZXNjcmlwdG9yIH0gZnJvbSAnLi9OYW1lZERlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBLZXlUcmlwbGUgPSBUcmlwbGU8dXR4b2xpYi5CSVAzMkludGVyZmFjZT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbGlkYXRlKGQ6IERlc2NyaXB0b3IsIHdhbGxldEtleXM6IEtleVRyaXBsZSwgc2lnbmF0dXJlczogc3RyaW5nW10pOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgcG9saWN5QWxsb3dBbGw6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5ID0ge1xuICBuYW1lOiAnYWxsb3dBbGwnLFxuICB2YWxpZGF0ZTogKCkgPT4gdHJ1ZSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUobmFtZTogc3RyaW5nKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdkZXNjcmlwdG9yVGVtcGxhdGUoJyArIG5hbWUgKyAnKScsXG4gICAgdmFsaWRhdGUoZDogRGVzY3JpcHRvciwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZURlc2NyaXB0b3IoZCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBwYXJzZWQubmFtZSA9PT0gbmFtZSAmJlxuICAgICAgICBwYXJzZWQua2V5cy5sZW5ndGggPT09IHdhbGxldEtleXMubGVuZ3RoICYmXG4gICAgICAgIHBhcnNlZC5rZXlzLmV2ZXJ5KChrLCBpKSA9PiBrLnRvQmFzZTU4KCkgPT09IHdhbGxldEtleXNbaV0ubmV1dGVyZWQoKS50b0Jhc2U1OCgpKVxuICAgICAgKTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRXZlcnkodmFsaWRhdG9yczogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZXZlcnkoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShkOiBEZXNjcmlwdG9yLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUsIHNpZ25hdHVyZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5ldmVyeSgodikgPT4gdi52YWxpZGF0ZShkLCB3YWxsZXRLZXlzLCBzaWduYXR1cmVzKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvclNvbWUodmFsaWRhdG9yczogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc29tZSgnICsgdmFsaWRhdG9ycy5tYXAoKHYpID0+IHYubmFtZSkuam9pbignLCcpICsgJyknLFxuICAgIHZhbGlkYXRlKGQ6IERlc2NyaXB0b3IsIHdhbGxldEtleXM6IEtleVRyaXBsZSwgc2lnbmF0dXJlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWxpZGF0b3JzLnNvbWUoKHYpID0+IHYudmFsaWRhdGUoZCwgd2FsbGV0S2V5cywgc2lnbmF0dXJlcykpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyhuYW1lczogc3RyaW5nW10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiBnZXRWYWxpZGF0b3JTb21lKG5hbWVzLm1hcChnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSgpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpZ25lZEJ5VXNlcicsXG4gICAgdmFsaWRhdGUoZDogRGVzY3JpcHRvciwgd2FsbGV0S2V5czogS2V5VHJpcGxlLCBzaWduYXR1cmVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgICAgLy8gdGhlIGZpcnN0IGtleSBpcyB0aGUgdXNlciBrZXksIGJ5IGNvbnZlbnRpb25cbiAgICAgIHJldHVybiBoYXNWYWxpZFNpZ25hdHVyZShkLCB3YWxsZXRLZXlzWzBdLCBzaWduYXR1cmVzKTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgRGVzY3JpcHRvclBvbGljeVZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSkge1xuICAgIHN1cGVyKGBEZXNjcmlwdG9yICR7ZGVzY3JpcHRvci50b1N0cmluZygpfSBkb2VzIG5vdCBtYXRjaCBwb2xpY3kgJHtwb2xpY3kubmFtZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RGVzY3JpcHRvclBvbGljeShcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSxcbiAgd2FsbGV0S2V5czogS2V5VHJpcGxlLFxuICBzaWduYXR1cmVzOiBzdHJpbmdbXVxuKTogdm9pZCB7XG4gIGlmICghcG9saWN5LnZhbGlkYXRlKGRlc2NyaXB0b3IsIHdhbGxldEtleXMsIHNpZ25hdHVyZXMpKSB7XG4gICAgdGhyb3cgbmV3IERlc2NyaXB0b3JQb2xpY3lWYWxpZGF0aW9uRXJyb3IoZGVzY3JpcHRvciwgcG9saWN5KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9EZXNjcmlwdG9yTWFwVmFsaWRhdGUoXG4gIGRlc2NyaXB0b3JzOiBOYW1lZERlc2NyaXB0b3JbXSxcbiAgd2FsbGV0S2V5czogS2V5VHJpcGxlLFxuICBwb2xpY3k6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5XG4pOiBEZXNjcmlwdG9yTWFwIHtcbiAgcmV0dXJuIHRvRGVzY3JpcHRvck1hcChcbiAgICBkZXNjcmlwdG9ycy5tYXAoKG5hbWVkRGVzY3JpcHRvcikgPT4ge1xuICAgICAgY29uc3QgZCA9IERlc2NyaXB0b3IuZnJvbVN0cmluZyhuYW1lZERlc2NyaXB0b3IudmFsdWUsICdkZXJpdmFibGUnKTtcbiAgICAgIGFzc2VydERlc2NyaXB0b3JQb2xpY3koZCwgcG9saWN5LCB3YWxsZXRLZXlzLCBuYW1lZERlc2NyaXB0b3Iuc2lnbmF0dXJlcyA/PyBbXSk7XG4gICAgICByZXR1cm4geyBuYW1lOiBuYW1lZERlc2NyaXB0b3IubmFtZSwgdmFsdWU6IGQgfTtcbiAgICB9KVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9saWN5Rm9yRW52KGVudjogRW52aXJvbm1lbnROYW1lKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICBzd2l0Y2ggKGVudikge1xuICAgIGNhc2UgJ2FkbWluUHJvZCc6XG4gICAgY2FzZSAncHJvZCc6XG4gICAgICByZXR1cm4gZ2V0VmFsaWRhdG9yU29tZShbXG4gICAgICAgIC8vIGFsbG93IGFsbCAyLW9mLTMtaXNoIGRlc2NyaXB0b3JzIHdoZXJlIHRoZSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgICAgICBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyhbJ1dzaDJPZjMnLCAnV3NoMk9mM0NsdHZEcm9wJywgJ1NoV3NoMk9mM0NsdHZEcm9wJ10pLFxuICAgICAgICAvLyBhbGxvdyBhbGwgZGVzY3JpcHRvcnMgc2lnbmVkIGJ5IHRoZSB1c2VyIGtleVxuICAgICAgICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXkoKSxcbiAgICAgIF0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcG9saWN5QWxsb3dBbGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NamedDescriptor.d.ts","sourceRoot":"","sources":["../../../test/descriptor/NamedDescriptor.ts"],"names":[],"mappings":""}
|