@bitgo/sdk-core 38.21.0 → 38.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +33 -4
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +71 -4
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +2 -1
- package/dist/src/bitgo/utils/siws.d.ts +5 -2
- package/dist/src/bitgo/utils/siws.d.ts.map +1 -1
- package/dist/src/bitgo/utils/siws.js +8 -18
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +7 -2
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +13 -2
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +8 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +7 -3
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +9 -18
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +3 -2
- package/dist/src/bitgo/utils/tss/index.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/index.js +2 -1
- package/dist/src/bitgo/utils/tss/keyVerification.d.ts +45 -0
- package/dist/src/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/keyVerification.js +192 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +1 -14
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/recipientUtils.js +1 -62
- package/dist/src/bitgo/wallet/iWallet.d.ts +16 -2
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +21 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +52 -38
- package/dist/test/unit/bitgo/safe/rootCoin.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/rootCoin.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/rootCoin.js +13 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +69 -1
- package/dist/test/unit/bitgo/utils/siws.js +57 -7
- package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.js +229 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +1 -21
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.js +160 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -12,6 +12,7 @@ export { ITssUtils, IEddsaUtils, TxRequest, EddsaUnsignedTransaction } from './e
|
|
|
12
12
|
export * as BaseTssUtils from './baseTSSUtils';
|
|
13
13
|
export * from './baseTypes';
|
|
14
14
|
export * from './addressVerification';
|
|
15
|
+
export * from './keyVerification';
|
|
15
16
|
export * from './preHashedSignable';
|
|
16
17
|
export * from './recipientUtils';
|
|
17
18
|
export * from './keyShareEnvelope';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,UAAU,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,cAAc,MAAM,aAAa,CAAC;AAE9C,iCAAiC;AACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,CAAC;AAG3B,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEtF,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,UAAU,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,cAAc,MAAM,aAAa,CAAC;AAE9C,iCAAiC;AACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,CAAC;AAG3B,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEtF,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
|
|
@@ -47,8 +47,9 @@ exports.RedpallasUtils = __importStar(require("./redpallas"));
|
|
|
47
47
|
exports.BaseTssUtils = __importStar(require("./baseTSSUtils"));
|
|
48
48
|
__exportStar(require("./baseTypes"), exports);
|
|
49
49
|
__exportStar(require("./addressVerification"), exports);
|
|
50
|
+
__exportStar(require("./keyVerification"), exports);
|
|
50
51
|
__exportStar(require("./preHashedSignable"), exports);
|
|
51
52
|
__exportStar(require("./recipientUtils"), exports);
|
|
52
53
|
__exportStar(require("./keyShareEnvelope"), exports);
|
|
53
54
|
__exportStar(require("./signableConsistency"), exports);
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFtRTtBQU0xRCxtQkFORixlQUFRLENBTUU7QUFFUiw4RkFSVSxxQkFBYSxPQVFWO0FBQ2IsZ0dBVHlCLHVCQUFlLE9BU3pCO0FBUnhCLHNEQUFzQztBQUN0QyxzREFBc0M7QUFDdEMsOERBQThDO0FBWTlDLCtEQUErQztBQUMvQyw4Q0FBNEI7QUFDNUIsd0RBQXNDO0FBQ3RDLG9EQUFrQztBQUNsQyxzREFBb0M7QUFDcEMsbURBQWlDO0FBQ2pDLHFEQUFtQztBQUNuQyx3REFBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVHNzVXRpbHMsIHsgVHNzVXRpbHNUeXBlcywgRWRkc2FVdGlsc1R5cGVzIH0gZnJvbSAnLi9lZGRzYSc7XG5leHBvcnQgKiBhcyBFQ0RTQVV0aWxzIGZyb20gJy4vZWNkc2EnO1xuZXhwb3J0ICogYXMgRUREU0FVdGlscyBmcm9tICcuL2VkZHNhJztcbmV4cG9ydCAqIGFzIFJlZHBhbGxhc1V0aWxzIGZyb20gJy4vcmVkcGFsbGFzJztcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBFRERTQVV0aWxzICovXG5leHBvcnQgeyBUc3NVdGlscyB9O1xuLyoqIEBkZXByZWNhdGVkIHVzZSBFRERTQVV0aWxzVHlwZXMgKi9cbmV4cG9ydCB7IFRzc1V0aWxzVHlwZXMgfTtcbmV4cG9ydCB7IEVkZHNhVXRpbHNUeXBlcyB9O1xuXG4vLyBleHBvcnRpbmcgdGhpcyB0eXBlcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgRUREU0FVdGlscy48dHlwZS9tZXRob2Q+ICovXG5leHBvcnQgeyBJVHNzVXRpbHMsIElFZGRzYVV0aWxzLCBUeFJlcXVlc3QsIEVkZHNhVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4vZWRkc2EnO1xuXG5leHBvcnQgKiBhcyBCYXNlVHNzVXRpbHMgZnJvbSAnLi9iYXNlVFNTVXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlVHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9hZGRyZXNzVmVyaWZpY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4va2V5VmVyaWZpY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcHJlSGFzaGVkU2lnbmFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNpcGllbnRVdGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2tleVNoYXJlRW52ZWxvcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWduYWJsZUNvbnNpc3RlbmN5JztcbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { UserSigningMaterial } from '../../tss/eddsa/types';
|
|
2
|
+
/**
|
|
3
|
+
* Parses the user TSS EdDSA signing material that a client passes as `prv` when signing,
|
|
4
|
+
* and rejects anything that does not decode as user signing material.
|
|
5
|
+
*
|
|
6
|
+
* Decoding is a shape check only, but it keeps malformed input away from the combine routine,
|
|
7
|
+
* which throws raw, input-interpolating errors for malformed shares.
|
|
8
|
+
*
|
|
9
|
+
* The input is private key material, so no error message may interpolate any part of it.
|
|
10
|
+
* In particular, JSON.parse errors on Node >= 20 include the raw input in their message,
|
|
11
|
+
* which is why parse failures are rethrown with a constant message.
|
|
12
|
+
*
|
|
13
|
+
* @param prv - stringified user signing material (`uShare`, `bitgoYShare`, `backupYShare`)
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseEddsaUserSigningMaterial(prv: string): UserSigningMaterial;
|
|
16
|
+
/**
|
|
17
|
+
* Verifies that user TSS EdDSA signing material (`prv`) recombines to a given commonKeychain.
|
|
18
|
+
*
|
|
19
|
+
* Recombines the user's share with the BitGo and backup Y shares — the same computation the
|
|
20
|
+
* SDK performs when creating the user keychain or signing — and compares the result against
|
|
21
|
+
* the wallet's commonKeychain. Returns false rather than throwing when the keys do not match.
|
|
22
|
+
* Shares that pass the shape check but are cryptographically inconsistent are rejected with
|
|
23
|
+
* a constant message: the combine routine throws raw errors, some of which interpolate
|
|
24
|
+
* submitter-controlled fields, which must not surface through the API.
|
|
25
|
+
*
|
|
26
|
+
* Recombination alone is not proof of possession, so two further checks run first. The seed is
|
|
27
|
+
* bound to `uShare.y`, and the Y shares must carry their VSS commitment `v` — `keyCombine`
|
|
28
|
+
* verifies a Y share's secret `u` only when `v` is present, so material without `v` cannot be
|
|
29
|
+
* verified at all and throws a distinct error rather than being judged a non-match. Genuine
|
|
30
|
+
* shares produced by `keyShare` always carry `v`.
|
|
31
|
+
*
|
|
32
|
+
* A true result is a consistency check for a caller inspecting its own material, not proof of
|
|
33
|
+
* possession, and must never be used as an authorization signal: a caller who knows only the
|
|
34
|
+
* wallet's public commonKeychain can construct material that passes — an `uShare` whose seed
|
|
35
|
+
* matches its `y`, plus Y shares with a chosen secret `u` and the `v` solved from it, whose
|
|
36
|
+
* `y` values sum to the common key.
|
|
37
|
+
*
|
|
38
|
+
* @param params.prv - stringified user signing material, as passed as `prv` when signing
|
|
39
|
+
* @param params.commonKeychain - the wallet's user keychain commonKeychain
|
|
40
|
+
*/
|
|
41
|
+
export declare function eddsaUserSigningMaterialMatchesCommonKeychain(params: {
|
|
42
|
+
prv: string;
|
|
43
|
+
commonKeychain: string;
|
|
44
|
+
}): Promise<boolean>;
|
|
45
|
+
//# sourceMappingURL=keyVerification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyVerification.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/keyVerification.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAiE5D;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAY9E;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,6CAA6C,CAAC,MAAM,EAAE;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBnB"}
|
|
@@ -0,0 +1,192 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.parseEddsaUserSigningMaterial = parseEddsaUserSigningMaterial;
|
|
40
|
+
exports.eddsaUserSigningMaterialMatchesCommonKeychain = eddsaUserSigningMaterialMatchesCommonKeychain;
|
|
41
|
+
/**
|
|
42
|
+
* @prettier
|
|
43
|
+
*/
|
|
44
|
+
const t = __importStar(require("io-ts"));
|
|
45
|
+
const tss_1 = __importDefault(require("../../../account-lib/mpc/tss"));
|
|
46
|
+
const HEX_32_BYTES = /^[0-9a-f]{64}$/i;
|
|
47
|
+
/** 32-byte hex string; every hex field of genuine MPCv1 signing material is fixed-width 32 bytes. */
|
|
48
|
+
const Hex32Bytes = new t.Type('Hex32Bytes', (u) => typeof u === 'string' && HEX_32_BYTES.test(u), (u, c) => (typeof u === 'string' && HEX_32_BYTES.test(u) ? t.success(u) : t.failure(u, c)), t.identity);
|
|
49
|
+
const UShareCodec = t.type({
|
|
50
|
+
i: t.number,
|
|
51
|
+
t: t.number,
|
|
52
|
+
n: t.number,
|
|
53
|
+
y: Hex32Bytes,
|
|
54
|
+
seed: Hex32Bytes,
|
|
55
|
+
chaincode: Hex32Bytes,
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* `v` is the optional VSS commitment: absent on shares created without verifiable secret sharing.
|
|
59
|
+
* It is declared through `t.partial` rather than a union with `undefined` so that decoding an
|
|
60
|
+
* absent `v` does not materialize it as an own property on the share handed to `keyCombine`.
|
|
61
|
+
*/
|
|
62
|
+
const YShareCodec = t.intersection([
|
|
63
|
+
t.type({
|
|
64
|
+
i: t.number,
|
|
65
|
+
j: t.number,
|
|
66
|
+
y: Hex32Bytes,
|
|
67
|
+
u: Hex32Bytes,
|
|
68
|
+
chaincode: Hex32Bytes,
|
|
69
|
+
}),
|
|
70
|
+
t.partial({ v: Hex32Bytes }),
|
|
71
|
+
]);
|
|
72
|
+
const UserSigningMaterialCodec = t.type({
|
|
73
|
+
uShare: UShareCodec,
|
|
74
|
+
bitgoYShare: YShareCodec,
|
|
75
|
+
backupYShare: YShareCodec,
|
|
76
|
+
});
|
|
77
|
+
/**
|
|
78
|
+
* Maps a decode failure to a constant message. Never interpolates `error.value`: the input is
|
|
79
|
+
* private key material. This is also why the codecs call `t.failure` without a message and why
|
|
80
|
+
* the `validationErrors` reporter in `utils/decode.ts` is not used — both embed the failing value.
|
|
81
|
+
*/
|
|
82
|
+
function toInvalidKeyMessage(errors) {
|
|
83
|
+
const [error] = errors;
|
|
84
|
+
// the head of the context is the root codec itself, so the remaining keys are the field path.
|
|
85
|
+
// purely numeric keys are intersection/union member indices rather than field names.
|
|
86
|
+
const segments = error.context
|
|
87
|
+
.slice(1)
|
|
88
|
+
.map((entry) => entry.key)
|
|
89
|
+
.filter((key) => !/^\d+$/.test(key));
|
|
90
|
+
if (segments.length === 0) {
|
|
91
|
+
return 'Invalid user key - signing material is not an object';
|
|
92
|
+
}
|
|
93
|
+
if (segments.length === 1 && (error.value === undefined || error.value === null)) {
|
|
94
|
+
return `Invalid user key - missing ${segments[0]}`;
|
|
95
|
+
}
|
|
96
|
+
return `Invalid user key - ${segments[0]} is not a valid share`;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Parses the user TSS EdDSA signing material that a client passes as `prv` when signing,
|
|
100
|
+
* and rejects anything that does not decode as user signing material.
|
|
101
|
+
*
|
|
102
|
+
* Decoding is a shape check only, but it keeps malformed input away from the combine routine,
|
|
103
|
+
* which throws raw, input-interpolating errors for malformed shares.
|
|
104
|
+
*
|
|
105
|
+
* The input is private key material, so no error message may interpolate any part of it.
|
|
106
|
+
* In particular, JSON.parse errors on Node >= 20 include the raw input in their message,
|
|
107
|
+
* which is why parse failures are rethrown with a constant message.
|
|
108
|
+
*
|
|
109
|
+
* @param prv - stringified user signing material (`uShare`, `bitgoYShare`, `backupYShare`)
|
|
110
|
+
*/
|
|
111
|
+
function parseEddsaUserSigningMaterial(prv) {
|
|
112
|
+
let parsed;
|
|
113
|
+
try {
|
|
114
|
+
parsed = JSON.parse(prv);
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
throw new Error('Invalid user key - could not parse signing material');
|
|
118
|
+
}
|
|
119
|
+
const decoded = UserSigningMaterialCodec.decode(parsed);
|
|
120
|
+
if (decoded._tag === 'Left') {
|
|
121
|
+
throw new Error(toInvalidKeyMessage(decoded.left));
|
|
122
|
+
}
|
|
123
|
+
return decoded.right;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Checks that `uShare.y` is the public point actually derived from `uShare.seed`.
|
|
127
|
+
*
|
|
128
|
+
* `keyCombine` derives the private scalar from the seed but reconstructs the common keychain from
|
|
129
|
+
* the declared `y` fields, so it never compares the two. Without this check a caller who knows
|
|
130
|
+
* only the wallet's public commonKeychain can submit genuine public fields alongside a seed they
|
|
131
|
+
* do not own and still verify. Re-running `keyShare` with the share's own seed and chaincode
|
|
132
|
+
* reproduces the derivation and yields the `y` the seed really commits to.
|
|
133
|
+
*/
|
|
134
|
+
function uShareSeedMatchesY(MPC, uShare) {
|
|
135
|
+
const seedchain = Buffer.concat([Buffer.from(uShare.seed, 'hex'), Buffer.from(uShare.chaincode, 'hex')]);
|
|
136
|
+
let derived;
|
|
137
|
+
try {
|
|
138
|
+
derived = MPC.keyShare(uShare.i, uShare.t, uShare.n, seedchain).uShare;
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
// keyShare rejects an out-of-range index or threshold, which makes the share unusable
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return derived.y === uShare.y;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Verifies that user TSS EdDSA signing material (`prv`) recombines to a given commonKeychain.
|
|
148
|
+
*
|
|
149
|
+
* Recombines the user's share with the BitGo and backup Y shares — the same computation the
|
|
150
|
+
* SDK performs when creating the user keychain or signing — and compares the result against
|
|
151
|
+
* the wallet's commonKeychain. Returns false rather than throwing when the keys do not match.
|
|
152
|
+
* Shares that pass the shape check but are cryptographically inconsistent are rejected with
|
|
153
|
+
* a constant message: the combine routine throws raw errors, some of which interpolate
|
|
154
|
+
* submitter-controlled fields, which must not surface through the API.
|
|
155
|
+
*
|
|
156
|
+
* Recombination alone is not proof of possession, so two further checks run first. The seed is
|
|
157
|
+
* bound to `uShare.y`, and the Y shares must carry their VSS commitment `v` — `keyCombine`
|
|
158
|
+
* verifies a Y share's secret `u` only when `v` is present, so material without `v` cannot be
|
|
159
|
+
* verified at all and throws a distinct error rather than being judged a non-match. Genuine
|
|
160
|
+
* shares produced by `keyShare` always carry `v`.
|
|
161
|
+
*
|
|
162
|
+
* A true result is a consistency check for a caller inspecting its own material, not proof of
|
|
163
|
+
* possession, and must never be used as an authorization signal: a caller who knows only the
|
|
164
|
+
* wallet's public commonKeychain can construct material that passes — an `uShare` whose seed
|
|
165
|
+
* matches its `y`, plus Y shares with a chosen secret `u` and the `v` solved from it, whose
|
|
166
|
+
* `y` values sum to the common key.
|
|
167
|
+
*
|
|
168
|
+
* @param params.prv - stringified user signing material, as passed as `prv` when signing
|
|
169
|
+
* @param params.commonKeychain - the wallet's user keychain commonKeychain
|
|
170
|
+
*/
|
|
171
|
+
async function eddsaUserSigningMaterialMatchesCommonKeychain(params) {
|
|
172
|
+
const signingMaterial = parseEddsaUserSigningMaterial(params.prv);
|
|
173
|
+
const MPC = await tss_1.default.initialize();
|
|
174
|
+
if (!uShareSeedMatchesY(MPC, signingMaterial.uShare)) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
// keyCombine verifies a Y share's secret `u` against its commitment only when `v` is present,
|
|
178
|
+
// so material without `v` cannot be verified at all; reject it distinctly instead of judging
|
|
179
|
+
// it a non-match, which would misreport genuine material that lacks the commitment
|
|
180
|
+
if (signingMaterial.bitgoYShare.v === undefined || signingMaterial.backupYShare.v === undefined) {
|
|
181
|
+
throw new Error('Unable to verify key - signing material has no VSS commitment');
|
|
182
|
+
}
|
|
183
|
+
let combinedKey;
|
|
184
|
+
try {
|
|
185
|
+
combinedKey = MPC.keyCombine(signingMaterial.uShare, [signingMaterial.bitgoYShare, signingMaterial.backupYShare]);
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
throw new Error('Invalid user key - could not combine signing material');
|
|
189
|
+
}
|
|
190
|
+
return combinedKey.pShare.y + combinedKey.pShare.chaincode === params.commonKeychain;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5VmVyaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9rZXlWZXJpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtRkEsc0VBWUM7QUFnREQsc0dBc0JDO0FBcktEOztHQUVHO0FBQ0gseUNBQTJCO0FBQzNCLHVFQUFpRTtBQUdqRSxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztBQUV2QyxxR0FBcUc7QUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUMzQixZQUFZLEVBQ1osQ0FBQyxDQUFDLEVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNqRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzFGLENBQUMsQ0FBQyxRQUFRLENBQ1gsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1gsQ0FBQyxFQUFFLFVBQVU7SUFDYixJQUFJLEVBQUUsVUFBVTtJQUNoQixTQUFTLEVBQUUsVUFBVTtDQUN0QixDQUFDLENBQUM7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxX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QUFDLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3ZGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCBFZGRzYSwgeyBLZXlDb21iaW5lIH0gZnJvbSAnLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQgeyBVc2VyU2lnbmluZ01hdGVyaWFsIH0gZnJvbSAnLi4vLi4vdHNzL2VkZHNhL3R5cGVzJztcblxuY29uc3QgSEVYXzMyX0JZVEVTID0gL15bMC05YS1mXXs2NH0kL2k7XG5cbi8qKiAzMi1ieXRlIGhleCBzdHJpbmc7IGV2ZXJ5IGhleCBmaWVsZCBvZiBnZW51aW5lIE1QQ3YxIHNpZ25pbmcgbWF0ZXJpYWwgaXMgZml4ZWQtd2lkdGggMzIgYnl0ZXMuICovXG5jb25zdCBIZXgzMkJ5dGVzID0gbmV3IHQuVHlwZTxzdHJpbmcsIHN0cmluZywgdW5rbm93bj4oXG4gICdIZXgzMkJ5dGVzJyxcbiAgKHUpOiB1IGlzIHN0cmluZyA9PiB0eXBlb2YgdSA9PT0gJ3N0cmluZycgJiYgSEVYXzMyX0JZVEVTLnRlc3QodSksXG4gICh1LCBjKSA9PiAodHlwZW9mIHUgPT09ICdzdHJpbmcnICYmIEhFWF8zMl9CWVRFUy50ZXN0KHUpID8gdC5zdWNjZXNzKHUpIDogdC5mYWlsdXJlKHUsIGMpKSxcbiAgdC5pZGVudGl0eVxuKTtcblxuY29uc3QgVVNoYXJlQ29kZWMgPSB0LnR5cGUoe1xuICBpOiB0Lm51bWJlcixcbiAgdDogdC5udW1iZXIsXG4gIG46IHQubnVtYmVyLFxuICB5OiBIZXgzMkJ5dGVzLFxuICBzZWVkOiBIZXgzMkJ5dGVzLFxuICBjaGFpbmNvZGU6IEhleDMyQnl0ZXMsXG59KTtcblxuLyoqXG4gKiBgdmAgaXMgdGhlIG9wdGlvbmFsIFZTUyBjb21taXRtZW50OiBhYnNlbnQgb24gc2hhcmVzIGNyZWF0ZWQgd2l0aG91dCB2ZXJpZmlhYmxlIHNlY3JldCBzaGFyaW5nLlxuICogSXQgaXMgZGVjbGFyZWQgdGhyb3VnaCBgdC5wYXJ0aWFsYCByYXRoZXIgdGhhbiBhIHVuaW9uIHdpdGggYHVuZGVmaW5lZGAgc28gdGhhdCBkZWNvZGluZyBhblxuICogYWJzZW50IGB2YCBkb2VzIG5vdCBtYXRlcmlhbGl6ZSBpdCBhcyBhbiBvd24gcHJvcGVydHkgb24gdGhlIHNoYXJlIGhhbmRlZCB0byBga2V5Q29tYmluZWAuXG4gKi9cbmNvbnN0IFlTaGFyZUNvZGVjID0gdC5pbnRlcnNlY3Rpb24oW1xuICB0LnR5cGUoe1xuICAgIGk6IHQubnVtYmVyLFxuICAgIGo6IHQubnVtYmVyLFxuICAgIHk6IEhleDMyQnl0ZXMsXG4gICAgdTogSGV4MzJCeXRlcyxcbiAgICBjaGFpbmNvZGU6IEhleDMyQnl0ZXMsXG4gIH0pLFxuICB0LnBhcnRpYWwoeyB2OiBIZXgzMkJ5dGVzIH0pLFxuXSk7XG5cbmNvbnN0IFVzZXJTaWduaW5nTWF0ZXJpYWxDb2RlYyA9IHQudHlwZSh7XG4gIHVTaGFyZTogVVNoYXJlQ29kZWMsXG4gIGJpdGdvWVNoYXJlOiBZU2hhcmVDb2RlYyxcbiAgYmFja3VwWVNoYXJlOiBZU2hhcmVDb2RlYyxcbn0pO1xuXG4vKipcbiAqIE1hcHMgYSBkZWNvZGUgZmFpbHVyZSB0byBhIGNvbnN0YW50IG1lc3NhZ2UuIE5ldmVyIGludGVycG9sYXRlcyBgZXJyb3IudmFsdWVgOiB0aGUgaW5wdXQgaXNcbiAqIHByaXZhdGUga2V5IG1hdGVyaWFsLiBUaGlzIGlzIGFsc28gd2h5IHRoZSBjb2RlY3MgY2FsbCBgdC5mYWlsdXJlYCB3aXRob3V0IGEgbWVzc2FnZSBhbmQgd2h5XG4gKiB0aGUgYHZhbGlkYXRpb25FcnJvcnNgIHJlcG9ydGVyIGluIGB1dGlscy9kZWNvZGUudHNgIGlzIG5vdCB1c2VkIOKAlCBib3RoIGVtYmVkIHRoZSBmYWlsaW5nIHZhbHVlLlxuICovXG5mdW5jdGlvbiB0b0ludmFsaWRLZXlNZXNzYWdlKGVycm9yczogdC5FcnJvcnMpOiBzdHJpbmcge1xuICBjb25zdCBbZXJyb3JdID0gZXJyb3JzO1xuICAvLyB0aGUgaGVhZCBvZiB0aGUgY29udGV4dCBpcyB0aGUgcm9vdCBjb2RlYyBpdHNlbGYsIHNvIHRoZSByZW1haW5pbmcga2V5cyBhcmUgdGhlIGZpZWxkIHBhdGguXG4gIC8vIHB1cmVseSBudW1lcmljIGtleXMgYXJlIGludGVyc2VjdGlvbi91bmlvbiBtZW1iZXIgaW5kaWNlcyByYXRoZXIgdGhhbiBmaWVsZCBuYW1lcy5cbiAgY29uc3Qgc2VnbWVudHMgPSBlcnJvci5jb250ZXh0XG4gICAgLnNsaWNlKDEpXG4gICAgLm1hcCgoZW50cnkpID0+IGVudHJ5LmtleSlcbiAgICAuZmlsdGVyKChrZXkpID0+ICEvXlxcZCskLy50ZXN0KGtleSkpO1xuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdJbnZhbGlkIHVzZXIga2V5IC0gc2lnbmluZyBtYXRlcmlhbCBpcyBub3QgYW4gb2JqZWN0JztcbiAgfVxuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAxICYmIChlcnJvci52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGVycm9yLnZhbHVlID09PSBudWxsKSkge1xuICAgIHJldHVybiBgSW52YWxpZCB1c2VyIGtleSAtIG1pc3NpbmcgJHtzZWdtZW50c1swXX1gO1xuICB9XG4gIHJldHVybiBgSW52YWxpZCB1c2VyIGtleSAtICR7c2VnbWVudHNbMF19IGlzIG5vdCBhIHZhbGlkIHNoYXJlYDtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHVzZXIgVFNTIEVkRFNBIHNpZ25pbmcgbWF0ZXJpYWwgdGhhdCBhIGNsaWVudCBwYXNzZXMgYXMgYHBydmAgd2hlbiBzaWduaW5nLFxuICogYW5kIHJlamVjdHMgYW55dGhpbmcgdGhhdCBkb2VzIG5vdCBkZWNvZGUgYXMgdXNlciBzaWduaW5nIG1hdGVyaWFsLlxuICpcbiAqIERlY29kaW5nIGlzIGEgc2hhcGUgY2hlY2sgb25seSwgYnV0IGl0IGtlZXBzIG1hbGZvcm1lZCBpbnB1dCBhd2F5IGZyb20gdGhlIGNvbWJpbmUgcm91dGluZSxcbiAqIHdoaWNoIHRocm93cyByYXcsIGlucHV0LWludGVycG9sYXRpbmcgZXJyb3JzIGZvciBtYWxmb3JtZWQgc2hhcmVzLlxuICpcbiAqIFRoZSBpbnB1dCBpcyBwcml2YXRlIGtleSBtYXRlcmlhbCwgc28gbm8gZXJyb3IgbWVzc2FnZSBtYXkgaW50ZXJwb2xhdGUgYW55IHBhcnQgb2YgaXQuXG4gKiBJbiBwYXJ0aWN1bGFyLCBKU09OLnBhcnNlIGVycm9ycyBvbiBOb2RlID49IDIwIGluY2x1ZGUgdGhlIHJhdyBpbnB1dCBpbiB0aGVpciBtZXNzYWdlLFxuICogd2hpY2ggaXMgd2h5IHBhcnNlIGZhaWx1cmVzIGFyZSByZXRocm93biB3aXRoIGEgY29uc3RhbnQgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcHJ2IC0gc3RyaW5naWZpZWQgdXNlciBzaWduaW5nIG1hdGVyaWFsIChgdVNoYXJlYCwgYGJpdGdvWVNoYXJlYCwgYGJhY2t1cFlTaGFyZWApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUVkZHNhVXNlclNpZ25pbmdNYXRlcmlhbChwcnY6IHN0cmluZyk6IFVzZXJTaWduaW5nTWF0ZXJpYWwge1xuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocHJ2KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGtleSAtIGNvdWxkIG5vdCBwYXJzZSBzaWduaW5nIG1hdGVyaWFsJyk7XG4gIH1cbiAgY29uc3QgZGVjb2RlZCA9IFVzZXJTaWduaW5nTWF0ZXJpYWxDb2RlYy5kZWNvZGUocGFyc2VkKTtcbiAgaWYgKGRlY29kZWQuX3RhZyA9PT0gJ0xlZnQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHRvSW52YWxpZEtleU1lc3NhZ2UoZGVjb2RlZC5sZWZ0KSk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZWQucmlnaHQgYXMgVXNlclNpZ25pbmdNYXRlcmlhbDtcbn1cblxuLyoqXG4gKiBDaGVja3MgdGhhdCBgdVNoYXJlLnlgIGlzIHRoZSBwdWJsaWMgcG9pbnQgYWN0dWFsbHkgZGVyaXZlZCBmcm9tIGB1U2hhcmUuc2VlZGAuXG4gKlxuICogYGtleUNvbWJpbmVgIGRlcml2ZXMgdGhlIHByaXZhdGUgc2NhbGFyIGZyb20gdGhlIHNlZWQgYnV0IHJlY29uc3RydWN0cyB0aGUgY29tbW9uIGtleWNoYWluIGZyb21cbiAqIHRoZSBkZWNsYXJlZCBgeWAgZmllbGRzLCBzbyBpdCBuZXZlciBjb21wYXJlcyB0aGUgdHdvLiBXaXRob3V0IHRoaXMgY2hlY2sgYSBjYWxsZXIgd2hvIGtub3dzXG4gKiBvbmx5IHRoZSB3YWxsZXQncyBwdWJsaWMgY29tbW9uS2V5Y2hhaW4gY2FuIHN1Ym1pdCBnZW51aW5lIHB1YmxpYyBmaWVsZHMgYWxvbmdzaWRlIGEgc2VlZCB0aGV5XG4gKiBkbyBub3Qgb3duIGFuZCBzdGlsbCB2ZXJpZnkuIFJlLXJ1bm5pbmcgYGtleVNoYXJlYCB3aXRoIHRoZSBzaGFyZSdzIG93biBzZWVkIGFuZCBjaGFpbmNvZGVcbiAqIHJlcHJvZHVjZXMgdGhlIGRlcml2YXRpb24gYW5kIHlpZWxkcyB0aGUgYHlgIHRoZSBzZWVkIHJlYWxseSBjb21taXRzIHRvLlxuICovXG5mdW5jdGlvbiB1U2hhcmVTZWVkTWF0Y2hlc1koTVBDOiBFZGRzYSwgdVNoYXJlOiBVc2VyU2lnbmluZ01hdGVyaWFsWyd1U2hhcmUnXSk6IGJvb2xlYW4ge1xuICBjb25zdCBzZWVkY2hhaW4gPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpLCBCdWZmZXIuZnJvbSh1U2hhcmUuY2hhaW5jb2RlLCAnaGV4JyldKTtcbiAgbGV0IGRlcml2ZWQ6IFVzZXJTaWduaW5nTWF0ZXJpYWxbJ3VTaGFyZSddO1xuICB0cnkge1xuICAgIGRlcml2ZWQgPSBNUEMua2V5U2hhcmUodVNoYXJlLmksIHVTaGFyZS50LCB1U2hhcmUubiwgc2VlZGNoYWluKS51U2hhcmU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBrZXlTaGFyZSByZWplY3RzIGFuIG91dC1vZi1yYW5nZSBpbmRleCBvciB0aHJlc2hvbGQsIHdoaWNoIG1ha2VzIHRoZSBzaGFyZSB1bnVzYWJsZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZGVyaXZlZC55ID09PSB1U2hhcmUueTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB0aGF0IHVzZXIgVFNTIEVkRFNBIHNpZ25pbmcgbWF0ZXJpYWwgKGBwcnZgKSByZWNvbWJpbmVzIHRvIGEgZ2l2ZW4gY29tbW9uS2V5Y2hhaW4uXG4gKlxuICogUmVjb21iaW5lcyB0aGUgdXNlcidzIHNoYXJlIHdpdGggdGhlIEJpdEdvIGFuZCBiYWNrdXAgWSBzaGFyZXMg4oCUIHRoZSBzYW1lIGNvbXB1dGF0aW9uIHRoZVxuICogU0RLIHBlcmZvcm1zIHdoZW4gY3JlYXRpbmcgdGhlIHVzZXIga2V5Y2hhaW4gb3Igc2lnbmluZyDigJQgYW5kIGNvbXBhcmVzIHRoZSByZXN1bHQgYWdhaW5zdFxuICogdGhlIHdhbGxldCdzIGNvbW1vbktleWNoYWluLiBSZXR1cm5zIGZhbHNlIHJhdGhlciB0aGFuIHRocm93aW5nIHdoZW4gdGhlIGtleXMgZG8gbm90IG1hdGNoLlxuICogU2hhcmVzIHRoYXQgcGFzcyB0aGUgc2hhcGUgY2hlY2sgYnV0IGFyZSBjcnlwdG9ncmFwaGljYWxseSBpbmNvbnNpc3RlbnQgYXJlIHJlamVjdGVkIHdpdGhcbiAqIGEgY29uc3RhbnQgbWVzc2FnZTogdGhlIGNvbWJpbmUgcm91dGluZSB0aHJvd3MgcmF3IGVycm9ycywgc29tZSBvZiB3aGljaCBpbnRlcnBvbGF0ZVxuICogc3VibWl0dGVyLWNvbnRyb2xsZWQgZmllbGRzLCB3aGljaCBtdXN0IG5vdCBzdXJmYWNlIHRocm91Z2ggdGhlIEFQSS5cbiAqXG4gKiBSZWNvbWJpbmF0aW9uIGFsb25lIGlzIG5vdCBwcm9vZiBvZiBwb3NzZXNzaW9uLCBzbyB0d28gZnVydGhlciBjaGVja3MgcnVuIGZpcnN0LiBUaGUgc2VlZCBpc1xuICogYm91bmQgdG8gYHVTaGFyZS55YCwgYW5kIHRoZSBZIHNoYXJlcyBtdXN0IGNhcnJ5IHRoZWlyIFZTUyBjb21taXRtZW50IGB2YCDigJQgYGtleUNvbWJpbmVgXG4gKiB2ZXJpZmllcyBhIFkgc2hhcmUncyBzZWNyZXQgYHVgIG9ubHkgd2hlbiBgdmAgaXMgcHJlc2VudCwgc28gbWF0ZXJpYWwgd2l0aG91dCBgdmAgY2Fubm90IGJlXG4gKiB2ZXJpZmllZCBhdCBhbGwgYW5kIHRocm93cyBhIGRpc3RpbmN0IGVycm9yIHJhdGhlciB0aGFuIGJlaW5nIGp1ZGdlZCBhIG5vbi1tYXRjaC4gR2VudWluZVxuICogc2hhcmVzIHByb2R1Y2VkIGJ5IGBrZXlTaGFyZWAgYWx3YXlzIGNhcnJ5IGB2YC5cbiAqXG4gKiBBIHRydWUgcmVzdWx0IGlzIGEgY29uc2lzdGVuY3kgY2hlY2sgZm9yIGEgY2FsbGVyIGluc3BlY3RpbmcgaXRzIG93biBtYXRlcmlhbCwgbm90IHByb29mIG9mXG4gKiBwb3NzZXNzaW9uLCBhbmQgbXVzdCBuZXZlciBiZSB1c2VkIGFzIGFuIGF1dGhvcml6YXRpb24gc2lnbmFsOiBhIGNhbGxlciB3aG8ga25vd3Mgb25seSB0aGVcbiAqIHdhbGxldCdzIHB1YmxpYyBjb21tb25LZXljaGFpbiBjYW4gY29uc3RydWN0IG1hdGVyaWFsIHRoYXQgcGFzc2VzIOKAlCBhbiBgdVNoYXJlYCB3aG9zZSBzZWVkXG4gKiBtYXRjaGVzIGl0cyBgeWAsIHBsdXMgWSBzaGFyZXMgd2l0aCBhIGNob3NlbiBzZWNyZXQgYHVgIGFuZCB0aGUgYHZgIHNvbHZlZCBmcm9tIGl0LCB3aG9zZVxuICogYHlgIHZhbHVlcyBzdW0gdG8gdGhlIGNvbW1vbiBrZXkuXG4gKlxuICogQHBhcmFtIHBhcmFtcy5wcnYgLSBzdHJpbmdpZmllZCB1c2VyIHNpZ25pbmcgbWF0ZXJpYWwsIGFzIHBhc3NlZCBhcyBgcHJ2YCB3aGVuIHNpZ25pbmdcbiAqIEBwYXJhbSBwYXJhbXMuY29tbW9uS2V5Y2hhaW4gLSB0aGUgd2FsbGV0J3MgdXNlciBrZXljaGFpbiBjb21tb25LZXljaGFpblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRkc2FVc2VyU2lnbmluZ01hdGVyaWFsTWF0Y2hlc0NvbW1vbktleWNoYWluKHBhcmFtczoge1xuICBwcnY6IHN0cmluZztcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbn0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qgc2lnbmluZ01hdGVyaWFsID0gcGFyc2VFZGRzYVVzZXJTaWduaW5nTWF0ZXJpYWwocGFyYW1zLnBydik7XG4gIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcbiAgaWYgKCF1U2hhcmVTZWVkTWF0Y2hlc1koTVBDLCBzaWduaW5nTWF0ZXJpYWwudVNoYXJlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBrZXlDb21iaW5lIHZlcmlmaWVzIGEgWSBzaGFyZSdzIHNlY3JldCBgdWAgYWdhaW5zdCBpdHMgY29tbWl0bWVudCBvbmx5IHdoZW4gYHZgIGlzIHByZXNlbnQsXG4gIC8vIHNvIG1hdGVyaWFsIHdpdGhvdXQgYHZgIGNhbm5vdCBiZSB2ZXJpZmllZCBhdCBhbGw7IHJlamVjdCBpdCBkaXN0aW5jdGx5IGluc3RlYWQgb2YganVkZ2luZ1xuICAvLyBpdCBhIG5vbi1tYXRjaCwgd2hpY2ggd291bGQgbWlzcmVwb3J0IGdlbnVpbmUgbWF0ZXJpYWwgdGhhdCBsYWNrcyB0aGUgY29tbWl0bWVudFxuICBpZiAoc2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLnYgPT09IHVuZGVmaW5lZCB8fCBzaWduaW5nTWF0ZXJpYWwuYmFja3VwWVNoYXJlLnYgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHZlcmlmeSBrZXkgLSBzaWduaW5nIG1hdGVyaWFsIGhhcyBubyBWU1MgY29tbWl0bWVudCcpO1xuICB9XG4gIGxldCBjb21iaW5lZEtleTogS2V5Q29tYmluZTtcbiAgdHJ5IHtcbiAgICBjb21iaW5lZEtleSA9IE1QQy5rZXlDb21iaW5lKHNpZ25pbmdNYXRlcmlhbC51U2hhcmUsIFtzaWduaW5nTWF0ZXJpYWwuYml0Z29ZU2hhcmUsIHNpZ25pbmdNYXRlcmlhbC5iYWNrdXBZU2hhcmVdKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGtleSAtIGNvdWxkIG5vdCBjb21iaW5lIHNpZ25pbmcgbWF0ZXJpYWwnKTtcbiAgfVxuICByZXR1cm4gY29tYmluZWRLZXkucFNoYXJlLnkgKyBjb21iaW5lZEtleS5wU2hhcmUuY2hhaW5jb2RlID09PSBwYXJhbXMuY29tbW9uS2V5Y2hhaW47XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TransactionParams
|
|
1
|
+
import { TransactionParams } from '../../baseCoin';
|
|
2
2
|
import { TxRequest } from './baseTypes';
|
|
3
3
|
/**
|
|
4
4
|
* Transaction types that legitimately carry no explicit recipients.
|
|
@@ -39,17 +39,4 @@ export declare const NO_RECIPIENT_TX_TYPES: Set<string>;
|
|
|
39
39
|
* native-coin transfers from tokenName; pass baseCoin.getChain()
|
|
40
40
|
*/
|
|
41
41
|
export declare function resolveEffectiveTxParams(txRequest: TxRequest, txParams: TransactionParams | undefined, chainName?: string): TransactionParams;
|
|
42
|
-
/**
|
|
43
|
-
* Resolves the verifyTransaction options for signing-time verification of a TSS txRequest.
|
|
44
|
-
*
|
|
45
|
-
* Consolidation intent recipients are a server-generated, build-time balance snapshot that drifts
|
|
46
|
-
* from the swept amount, so they are not backfilled; sweep-to-base-address is verified instead,
|
|
47
|
-
* mirroring wallet.sendAccountConsolidations.
|
|
48
|
-
*
|
|
49
|
-
* @param txRequest - the transaction request containing the persisted intent
|
|
50
|
-
* @param txHex - the unsigned transaction to verify
|
|
51
|
-
* @param txParams - the caller-supplied transaction parameters (may be undefined)
|
|
52
|
-
* @param chainName - the base chain name; pass baseCoin.getChain()
|
|
53
|
-
*/
|
|
54
|
-
export declare function resolveTssVerifyTransactionOptions(txRequest: TxRequest, txHex: string, txParams: TransactionParams | undefined, chainName: string): Pick<VerifyTransactionOptions, 'txPrebuild' | 'txParams' | 'verification'>;
|
|
55
42
|
//# sourceMappingURL=recipientUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipientUtils.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/recipientUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recipientUtils.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/recipientUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAmB,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,aAsFhC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB,CA0DnB"}
|
|
@@ -1,42 +1,7 @@
|
|
|
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
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.NO_RECIPIENT_TX_TYPES = void 0;
|
|
37
4
|
exports.resolveEffectiveTxParams = resolveEffectiveTxParams;
|
|
38
|
-
exports.resolveTssVerifyTransactionOptions = resolveTssVerifyTransactionOptions;
|
|
39
|
-
const t = __importStar(require("io-ts"));
|
|
40
5
|
const errors_1 = require("../../errors");
|
|
41
6
|
/**
|
|
42
7
|
* Transaction types that legitimately carry no explicit recipients.
|
|
@@ -200,30 +165,4 @@ function resolveEffectiveTxParams(txRequest, txParams, chainName) {
|
|
|
200
165
|
}
|
|
201
166
|
return effectiveTxParams;
|
|
202
167
|
}
|
|
203
|
-
const ConsolidateIntent = t.intersection([
|
|
204
|
-
t.type({ intentType: t.literal('consolidate') }),
|
|
205
|
-
t.partial({ consolidateId: t.string }),
|
|
206
|
-
]);
|
|
207
|
-
/**
|
|
208
|
-
* Resolves the verifyTransaction options for signing-time verification of a TSS txRequest.
|
|
209
|
-
*
|
|
210
|
-
* Consolidation intent recipients are a server-generated, build-time balance snapshot that drifts
|
|
211
|
-
* from the swept amount, so they are not backfilled; sweep-to-base-address is verified instead,
|
|
212
|
-
* mirroring wallet.sendAccountConsolidations.
|
|
213
|
-
*
|
|
214
|
-
* @param txRequest - the transaction request containing the persisted intent
|
|
215
|
-
* @param txHex - the unsigned transaction to verify
|
|
216
|
-
* @param txParams - the caller-supplied transaction parameters (may be undefined)
|
|
217
|
-
* @param chainName - the base chain name; pass baseCoin.getChain()
|
|
218
|
-
*/
|
|
219
|
-
function resolveTssVerifyTransactionOptions(txRequest, txHex, txParams, chainName) {
|
|
220
|
-
if (ConsolidateIntent.is(txRequest.intent)) {
|
|
221
|
-
return {
|
|
222
|
-
txPrebuild: { txHex, consolidateId: txRequest.intent.consolidateId },
|
|
223
|
-
txParams: { ...txParams },
|
|
224
|
-
verification: { consolidationToBaseAddress: true },
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
return { txPrebuild: { txHex }, txParams: resolveEffectiveTxParams(txRequest, txParams, chainName) };
|
|
228
|
-
}
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtJQSw0REE4REM7QUFtQkQsZ0ZBY0M7QUFqT0QseUNBQTJCO0FBRTNCLHlDQUF1RDtBQUd2RDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUMzQyxjQUFjO0lBQ2QsY0FBYztJQUNkLFdBQVc7SUFDWCxlQUFlO0lBQ2YsZUFBZTtJQUNmLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7SUFDYixjQUFjO0lBQ2QsY0FBYztJQUNkLFVBQVU7SUFDVixnRkFBZ0Y7SUFDaEYsYUFBYTtJQUNiLGFBQWE7SUFDYixjQUFjO0lBQ2QsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSx1RUFBdUU7SUFDdkUsOEVBQThFO0lBQzlFLCtFQUErRTtJQUMvRSwrREFBK0Q7SUFDL0QsNkVBQTZFO0lBQzdFLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osYUFBYTtJQUNiLGNBQWM7SUFDZCxlQUFlO0lBQ2YsdUZBQXVGO0lBQ3ZGLHVGQUF1RjtJQUN2RiwyQ0FBMkM7SUFDM0MsYUFBYTtJQUNiLE1BQU07SUFDTixRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLG1FQUFtRTtJQUNuRSxjQUFjO0lBRWQsMEZBQTBGO0lBQzFGLCtEQUErRDtJQUMvRCxVQUFVO0lBQ1YsWUFBWTtJQUNaLGlCQUFpQjtJQUVqQiw4QkFBOEI7SUFDOUIsT0FBTztJQUNQLFNBQVM7SUFDVCxtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixlQUFlO0lBQ2YsV0FBVztJQUVYLHNGQUFzRjtJQUN0RixPQUFPO0lBQ1AsbUJBQW1CO0lBRW5CLGVBQWU7SUFDZix3SEFBd0g7SUFDeEgsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQix3QkFBd0I7SUFDeEIsd0JBQXdCO0lBQ3hCLG9CQUFvQjtJQUNwQiwwQkFBMEI7SUFDMUIsZUFBZTtJQUNmLGtDQUFrQztJQUNsQyxtQ0FBbUM7SUFDbkMsbUNBQW1DO0lBQ25DLG9DQUFvQztJQUVwQyxRQUFRO0lBRVIsNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSx3RUFBd0U7SUFDeEUsK0RBQStEO0lBQy9ELFFBQVE7SUFDUixXQUFXO0lBRVgsa0VBQWtFO0lBQ2xFLFlBQVk7SUFFWix3REFBd0Q7SUFDeEQsV0FBVztDQUNaLENBQUMsQ0FBQztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQ3RDLFNBQW9CLEVBQ3BCLFFBQXVDLEVBQ3ZDLFNBQWtCO0lBRWxCLE1BQU0sZ0JBQWdCLEdBQUksU0FBUyxDQUFDLE1BQTBCLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1FBQ2xHLDJFQUEyRTtRQUMzRSx1RUFBdUU7UUFDdkUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQ2IsZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFTO1lBQ3BDLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRixPQUFPO1lBQ0wsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTztZQUN4QyxNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3BDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSTtZQUMxQixHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7U0FDaEMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxpQkFBaUIsR0FBc0I7UUFDM0MsR0FBRyxRQUFRO1FBQ1gsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7S0FDbEYsQ0FBQztJQUVGLDJFQUEyRTtJQUMzRSwrRkFBK0Y7SUFDL0YsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxJQUFLLFNBQVMsQ0FBQyxNQUEwQixFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7SUFFakcsb0RBQW9EO0lBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdEMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsd0ZBQXdGO0lBQ3hGLDRGQUE0RjtJQUM1RixNQUFNLHNCQUFzQixHQUFJLFNBQVMsQ0FBQyxNQUEwQixFQUFFLGdCQUFnQixDQUFDO0lBQ3ZGLElBQUksc0JBQXNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xFLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDO0lBQzlELENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYsaUZBQWlGO0lBQ2pGLHdGQUF3RjtJQUN4RixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUUsU0FBUyxDQUFDLE1BQTBCLEVBQUUsZ0JBQWdCLENBQUM7SUFFbEYsMEZBQTBGO0lBQzFGLDRGQUE0RjtJQUM1RixNQUFNLFVBQVUsR0FBSSxTQUFTLENBQUMsTUFBMEIsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO0lBRTNFLElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsTUFBTTtRQUNyQyxDQUFDLGVBQWU7UUFDaEIsQ0FBQyw2QkFBcUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2xDLENBQUMsNkJBQXFCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUN0QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLGdDQUF1QixDQUMvQixzSEFBc0gsQ0FDdkgsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7SUFDaEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Q0FDdkMsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixrQ0FBa0MsQ0FDaEQsU0FBb0IsRUFDcEIsS0FBYSxFQUNiLFFBQXVDLEVBQ3ZDLFNBQWlCO0lBRWpCLElBQUksaUJBQWlCLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzNDLE9BQU87WUFDTCxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ3BFLFFBQVEsRUFBRSxFQUFFLEdBQUcsUUFBUSxFQUFFO1lBQ3pCLFlBQVksRUFBRSxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRTtTQUNuRCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBQ3ZHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUGFyYW1zLCBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycyc7XG5pbXBvcnQgeyBQb3B1bGF0ZWRJbnRlbnQsIFR4UmVxdWVzdCB9IGZyb20gJy4vYmFzZVR5cGVzJztcblxuLyoqXG4gKiBUcmFuc2FjdGlvbiB0eXBlcyB0aGF0IGxlZ2l0aW1hdGVseSBjYXJyeSBubyBleHBsaWNpdCByZWNpcGllbnRzLlxuICogVGhlc2UgYXJlIHRoZSBpbnRlbnRUeXBlIHN0cmluZ3MgYXMgc3RvcmVkIGluIFR4UmVxdWVzdC5pbnRlbnQuaW50ZW50VHlwZSBieSBXUC5cbiAqIHZlcmlmeVRyYW5zYWN0aW9uIGhhbmRsZXMgbm8tcmVjaXBpZW50IHZhbGlkYXRpb24gZm9yIHRoZXNlIGludGVybmFsbHkuXG4gKiBNaXJyb3JzIHRoZSBieXBhc3MgbGlzdCBpbiBhYnN0cmFjdEV0aExpa2VOZXdDb2lucy50cyB2ZXJpZnlUc3NUcmFuc2FjdGlvbi5cbiAqXG4gKiBFQ0RTQSB0eXBlczogYWNjZWxlcmF0aW9uLCBmaWxsTm9uY2UsIHRyYW5zZmVyVG9rZW4sIHRva2VuQXBwcm92YWwsIGNvbnNvbGlkYXRlLFxuICogICAgICAgICAgICAgIGJyaWRnZUZ1bmRzLCBlbmFibGVUb2tlbiwgY3VzdG9tVHgsIHdyYXBBcHByb3ZlLCB3cmFwLCB1bndyYXAsXG4gKiAgICAgICAgICAgICAgZmluYWxpemVVbndyYXAsIGNvbnRyYWN0Q2FsbFxuICogQlNDL0JOQiBkZWxlZ2F0aW9uLWJhc2VkIHN0YWtpbmc6IGRlbGVnYXRlLCB1bmRlbGVnYXRlLCBzd2l0Y2hWYWxpZGF0b3JcbiAqIENFTE8vRVRIIGxvY2stYmFzZWQgc3Rha2luZzogc3Rha2UsIHVuc3Rha2UsIHN0YWtlV2l0aENhbGxEYXRhLCB1bnN0YWtlV2l0aENhbGxEYXRhLFxuICogICAgICAgICAgICAgIHRyYW5zZmVyU3Rha2UsIGluY3JlYXNlU3Rha2UsIGdvVW5zdGFrZVxuICogQ2xhaW0gcmV3YXJkcyAoQlNDLCBDRUxPIOKAlCBUUlgvU09MIHVzZSBFZERTQSBhbmQgYXJlIHVuYWZmZWN0ZWQpOiBjbGFpbSwgc3Rha2VDbGFpbVJld2FyZHNcbiAqL1xuZXhwb3J0IGNvbnN0IE5PX1JFQ0lQSUVOVF9UWF9UWVBFUyA9IG5ldyBTZXQoW1xuICAvLyBFQ0RTQSB0eXBlc1xuICAnYWNjZWxlcmF0aW9uJyxcbiAgJ2ZpbGxOb25jZScsXG4gICd0cmFuc2ZlclRva2VuJyxcbiAgJ3Rva2VuQXBwcm92YWwnLFxuICAnY29uc29saWRhdGUnLFxuICAnYnJpZGdlRnVuZHMnLFxuICAnZW5hYmxlVG9rZW4nLFxuICAnZW5hYmxldG9rZW4nLFxuICAnZGlzYWJsZVRva2VuJyxcbiAgJ2Rpc2FibGV0b2tlbicsXG4gICdjdXN0b21UeCcsXG4gIC8vIERlRmkgdmF1bHQgb3BlcmF0aW9ucyDigJQgcmVjaXBpZW50cy9jYWxsZGF0YSBidWlsdCBzZXJ2ZXItc2lkZSBmcm9tIGRlZmlQYXJhbXNcbiAgJ2RlZmlBcHByb3ZlJyxcbiAgJ2RlZmlEZXBvc2l0JyxcbiAgJ2RlZmlXaXRoZHJhdycsXG4gIC8vIE5hdGl2ZSB3cmFwL3Vud3JhcCAoV0VUSDkgZGVwb3NpdCgpL3dpdGhkcmF3KCkpIOKAlCBjYWxsZGF0YSBhbmQgdGhlIFdFVEg5XG4gIC8vIGFkZHJlc3MgYXJlIHJlc29sdmVkIHNlcnZlci1zaWRlIGZyb20gdGhlIHZhdWx0IGJpbmRpbmcsIHNvIG5vIHJlY2lwaWVudHMuXG4gIC8vIFJlZ2lzdGVyZWQgaW4gQk9USCBzcGVsbGluZ3Mgb24gcHVycG9zZTogdGhpcyBzZXQgaXMgbWF0Y2hlZCBhZ2FpbnN0XG4gIC8vIHR4UGFyYW1zLnR5cGUsIHdoaWNoIGlzIGJ1aWxkUGFyYW1zLnR5cGUgKGNhbWVsQ2FzZSwgZnJvbSB3YWxsZXQuc2VuZE1hbnkpLFxuICAvLyBBTkQgYWdhaW5zdCBpbnRlbnQuaW50ZW50VHlwZSAoa2ViYWItY2FzZSwgYXMgV1AgcGVyc2lzdHMgaXQpLiBTaWduaW5nIHBhdGhzXG4gIC8vIHRoYXQgY2Fycnkgbm8gdHhQYXJhbXMg4oCUIG5vdGFibHkgcGVuZGluZ0FwcHJvdmFsLmFwcHJvdmUoKSDihpJcbiAgLy8gcmVjcmVhdGVUeFJlcXVlc3QoKSDihpIgc2lnblR4UmVxdWVzdCgpIHdpdGggbm8gdHhQYXJhbXMg4oCUIG9ubHkgZXZlciBzZWUgdGhlXG4gIC8vIGtlYmFiLWNhc2Ugc3BlbGxpbmcuXG4gICd3cmFwTmF0aXZlJyxcbiAgJ3dyYXAtbmF0aXZlJyxcbiAgJ3Vud3JhcE5hdGl2ZScsXG4gICd1bndyYXAtbmF0aXZlJyxcbiAgLy8gRVJDLTc5ODQgc2hpZWxkL3Vuc2hpZWxkOiBhcHByb3ZlL3dyYXAvdW53cmFwIGNhbGxkYXRhIGlzIGJ1aWx0IHNlcnZlci1zaWRlIGZyb20gdGhlXG4gIC8vIGludGVudCwgYW5kIGZpbmFsaXplVW53cmFwIHR4blJlcXMgYXJlIFdQLWNyZWF0ZWQgYXQgUkVBRFlfVE9fRklOQUxJWkUgKGNsaWVudCBzaWduc1xuICAvLyBvbmx5KSDigJQgbm9uZSBjYXJyeSBTREstbGV2ZWwgcmVjaXBpZW50cy5cbiAgJ3dyYXBBcHByb3ZlJyxcbiAgJ3dyYXAnLFxuICAndW53cmFwJyxcbiAgJ2ZpbmFsaXplVW53cmFwJyxcbiAgLy8gU21hcnQgY29udHJhY3QgaW52b2NhdGlvbnMgd2l0aCBubyBleHBsaWNpdCBTREstbGV2ZWwgcmVjaXBpZW50c1xuICAnY29udHJhY3RDYWxsJyxcblxuICAvLyBCU0MvQk5CIGRlbGVnYXRpb24tYmFzZWQgc3Rha2luZyDigJQgaW50ZW50VHlwZSBzdHJpbmdzIGZyb20gVHhSZXF1ZXN0LmludGVudC5pbnRlbnRUeXBlLlxuICAvLyBOb3RlOiBTT0wgc29sRGVsZWdhdGVJbnRlbnQgYWxzbyB1c2VzIGludGVudFR5cGUgXCJkZWxlZ2F0ZVwiLlxuICAnZGVsZWdhdGUnLFxuICAndW5kZWxlZ2F0ZScsXG4gICdzd2l0Y2hWYWxpZGF0b3InLFxuXG4gIC8vIENFTE8vRVRIIGxvY2stYmFzZWQgc3Rha2luZ1xuICAnc3Rha2UnLFxuICAndW5zdGFrZScsXG4gICdzdGFrZVdpdGhDYWxsRGF0YScsXG4gICd1bnN0YWtlV2l0aENhbGxEYXRhJyxcbiAgJ3RyYW5zZmVyU3Rha2UnLFxuICAnaW5jcmVhc2VTdGFrZScsXG4gICdnb1Vuc3Rha2UnLFxuXG4gIC8vIENsYWltIHJld2FyZHMg4oCUIEJTQyBhbmQgQ0VMTyAoVFJYL1NPTC9Db3Ntb3MgdXNlIEVkRFNBLCBub3QgYWZmZWN0ZWQgYnkgdGhpcyBndWFyZClcbiAgJ2NsYWltJyxcbiAgJ3N0YWtlQ2xhaW1SZXdhcmRzJyxcblxuICAnY3JlYXRlQWNjb3VudCcsXG4gIC8vIENhbnRvbiBvcGVyYXRpb25zIHdpdGggbm8gU0RLLWxldmVsIHJlY2lwaWVudHMuIENhbnRvbi52ZXJpZnlUcmFuc2FjdGlvbiB2YWxpZGF0ZXMgdGhlc2UgZnJvbSB0aGUgdHJhbnNhY3Rpb24gaXRzZWxmLlxuICAndHJhbnNmZXJBY2NlcHQnLFxuICAndHJhbnNmZXJSZWplY3QnLFxuICAndHJhbnNmZXJPZmZlcldpdGhkcmF3bicsXG4gICdjb3NpZ25EZWxlZ2F0aW9uQWNjZXB0JyxcbiAgJ2FsbG9jYXRpb25BbGxvY2F0ZScsXG4gICdhbGxvY2F0aW9uT2ZmZXJXaXRoZHJhd24nLFxuICAnY2FudG9uQ29tbWFuZCcsXG4gICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcicsXG4gICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdBY2NlcHQnLFxuICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nUmVqZWN0JyxcbiAgJ2NhbnRvblBhcnRpY2lwYW50T25ib2FyZGluZ1JlcXVlc3QnLFxuXG4gICdwbGVkZ2UnLFxuXG4gIC8vIEF2YWxhbmNoZSAvIEZsYXJlIGNyb3NzLWNoYWluIGF0b21pYyBpbXBvcnRzIOKAlCByZWNpcGllbnRzIGFyZSBub3Qgc3VwcGxpZWRcbiAgLy8gYnkgdGhlIGNsaWVudCBiZWNhdXNlIHRoZSBpbXBvcnQgY29uc3VtZXMgVVRYT3MgYWxyZWFkeSBvd25lZCBieSB0aGVcbiAgLy8gd2FsbGV0OyB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyB0aGUgd2FsbGV0IGl0c2VsZi4gV1AgaXNzdWVzIHRoZXNlXG4gIC8vIHdpdGggaW50ZW50VHlwZSAnaW1wb3J0JyAoUC1jaGFpbikgb3IgJ2ltcG9ydHRvYycgKEMtY2hhaW4pLlxuICAnaW1wb3J0JyxcbiAgJ2ltcG9ydHRvYycsXG5cbiAgLy8gU09MOiBkZWFjdGl2YXRlIHN0YWtlIGFjY291bnQg4oCUIG5vIG9uLWNoYWluIHRyYW5zZmVyIHJlY2lwaWVudC5cbiAgJ2RlYWN0aXZhdGUnLFxuXG4gIC8vIFNPTDogYXV0aG9yaXplIHN0YWtlIGFjY291bnQg4oCUIG5vIHRyYW5zZmVyIHJlY2lwaWVudC5cbiAgJ2F1dGhvcml6ZScsXG5dKTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZWZmZWN0aXZlIHR4UGFyYW1zIGZvciBUU1Mgc2lnbmluZyByZWNpcGllbnQgdmVyaWZpY2F0aW9uLlxuICpcbiAqIEZvciBzbWFydCBjb250cmFjdCBpbnRlcmFjdGlvbnMsIHJlY2lwaWVudHMgbGl2ZSBpbiB0eFJlcXVlc3QuaW50ZW50LnJlY2lwaWVudHNcbiAqIChuYXRpdmUgYW1vdW50ID0gMCwgc28gYnVpbGRQYXJhbXMgaXMgZW1wdHkpLiBGYWxscyBiYWNrIHRvIGludGVudCByZWNpcGllbnRzXG4gKiBtYXBwZWQgdG8gSVRyYW5zYWN0aW9uUmVjaXBpZW50IHNoYXBlIHdoZW4gdHhQYXJhbXMucmVjaXBpZW50cyBpcyBhYnNlbnQuXG4gKlxuICogdG9rZW5OYW1lIGlzIGRlcml2ZWQgZnJvbSB0b2tlbkRhdGEudG9rZW5OYW1lIHdoZW4gcHJlc2VudCwgb3RoZXJ3aXNlIGZyb21cbiAqIGFtb3VudC5zeW1ib2wgd2hlbiBjaGFpbk5hbWUgaXMgcHJvdmlkZWQgYW5kIHN5bWJvbCBkaWZmZXJzIGZyb20gaXQuXG4gKlxuICogU3Rha2luZyBpbnRlbnRzIChCU0MgZGVsZWdhdGUvdW5kZWxlZ2F0ZSwgQ0VMTyBzdGFrZS91bnN0YWtlLCBldGMuKSBhcmVcbiAqIGlkZW50aWZpZWQgZ2VuZXJpY2FsbHkgYnkgdGhlIHByZXNlbmNlIG9mIGBzdGFraW5nUmVxdWVzdElkYCBvbiB0aGUgaW50ZW50IOKAlFxuICogYSByZXF1aXJlZCBmaWVsZCBvbiBCYXNlU3Rha2VJbnRlbnQgaW4gQGJpdGdvL3B1YmxpYy10eXBlcy4gVGhlc2UgaW50ZW50c1xuICogaGF2ZSBubyB0eFBhcmFtcyByZWNpcGllbnRzIGJ5IGRlc2lnbjsgdmFsaWRhdGlvbiBpcyBkb25lIGF0IHRoZSBjb2luIGxheWVyLlxuICpcbiAqIFRocm93cyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciBpZiBubyByZWNpcGllbnRzIGNhbiBiZSByZXNvbHZlZCBhbmQgdGhlXG4gKiB0cmFuc2FjdGlvbiBpcyBub3QgYSBrbm93biBuby1yZWNpcGllbnQgdHlwZS5cbiAqXG4gKiBAcGFyYW0gdHhSZXF1ZXN0IC0gdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QgY29udGFpbmluZyB0aGUgcGVyc2lzdGVkIGludGVudFxuICogQHBhcmFtIHR4UGFyYW1zIC0gdGhlIGNhbGxlci1zdXBwbGllZCB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzIChtYXkgYmUgdW5kZWZpbmVkKVxuICogQHBhcmFtIGNoYWluTmFtZSAtIHRoZSBiYXNlIGNoYWluIG5hbWUgKGUuZy4gJ3NvbCcsICd0c29sJykgdXNlZCB0byBleGNsdWRlXG4gKiAgIG5hdGl2ZS1jb2luIHRyYW5zZmVycyBmcm9tIHRva2VuTmFtZTsgcGFzcyBiYXNlQ29pbi5nZXRDaGFpbigpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMoXG4gIHR4UmVxdWVzdDogVHhSZXF1ZXN0LFxuICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXMgfCB1bmRlZmluZWQsXG4gIGNoYWluTmFtZT86IHN0cmluZ1xuKTogVHJhbnNhY3Rpb25QYXJhbXMge1xuICBjb25zdCBpbnRlbnRSZWNpcGllbnRzID0gKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8ucmVjaXBpZW50cz8ubWFwKChpbnRlbnRSZWNpcGllbnQpID0+IHtcbiAgICAvLyBQcmVmZXIgdG9rZW5EYXRhLnRva2VuTmFtZTsgZmFsbCBiYWNrIHRvIGFtb3VudC5zeW1ib2wgd2hlbiBjaGFpbk5hbWUgaXNcbiAgICAvLyBwcm92aWRlZCBhbmQgZGlmZmVycyBmcm9tIGl0LiBXaGVuIGFic2VudCwgc2tpcCB0aGUgc3ltYm9sIGZhbGxiYWNrLlxuICAgIGNvbnN0IHsgc3ltYm9sIH0gPSBpbnRlbnRSZWNpcGllbnQuYW1vdW50O1xuICAgIGNvbnN0IHRva2VuTmFtZSA9XG4gICAgICBpbnRlbnRSZWNpcGllbnQudG9rZW5EYXRhPy50b2tlbk5hbWUgfHxcbiAgICAgIChjaGFpbk5hbWUgIT09IHVuZGVmaW5lZCAmJiBzeW1ib2wgJiYgc3ltYm9sICE9PSBjaGFpbk5hbWUgPyBzeW1ib2wgOiB1bmRlZmluZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiBpbnRlbnRSZWNpcGllbnQuYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgYW1vdW50OiBpbnRlbnRSZWNpcGllbnQuYW1vdW50LnZhbHVlLFxuICAgICAgZGF0YTogaW50ZW50UmVjaXBpZW50LmRhdGEsXG4gICAgICAuLi4odG9rZW5OYW1lICYmIHsgdG9rZW5OYW1lIH0pLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0IGVmZmVjdGl2ZVR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcyA9IHtcbiAgICAuLi50eFBhcmFtcyxcbiAgICByZWNpcGllbnRzOiB0eFBhcmFtcz8ucmVjaXBpZW50cz8ubGVuZ3RoID8gdHhQYXJhbXMucmVjaXBpZW50cyA6IGludGVudFJlY2lwaWVudHMsXG4gIH07XG5cbiAgLy8gRmFsbCBiYWNrIHRvIGludGVudC5pbnRlbnRUeXBlIHdoZW4gdHhQYXJhbXMudHlwZSBpcyBub3QgZXhwbGljaXRseSBzZXQuXG4gIC8vIFN0YWtpbmcgd2FsbGV0cyBjYWxsIHNpZ25UcmFuc2FjdGlvbiB3aXRob3V0IHR4UGFyYW1zLCBzbyB0aGUgdHlwZSBsaXZlcyBvbmx5IGluIHRoZSBpbnRlbnQuXG4gIGNvbnN0IHR4VHlwZSA9IGVmZmVjdGl2ZVR4UGFyYW1zLnR5cGUgPz8gKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8uaW50ZW50VHlwZSA/PyAnJztcblxuICAvLyBQcm9wYWdhdGUgdGhlIHJlc29sdmVkIHR5cGUgc28gZG93bnN0cmVhbSBjYWxsZXJzXG4gIGlmICghZWZmZWN0aXZlVHhQYXJhbXMudHlwZSAmJiB0eFR5cGUpIHtcbiAgICBlZmZlY3RpdmVUeFBhcmFtcy50eXBlID0gdHhUeXBlO1xuICB9XG5cbiAgLy8gUHJvcGFnYXRlIHN0YWtpbmdSZXF1ZXN0SWQgZnJvbSBpbnRlbnQgaW50byBlZmZlY3RpdmVUeFBhcmFtcyBzbyB2ZXJpZnlUc3NUcmFuc2FjdGlvblxuICAvLyBvdmVycmlkZXMgY2FuIGJ5cGFzcyB0aGUgbm8tcmVjaXBpZW50IGd1YXJkIHdpdGhvdXQgbmVlZGluZyBhY2Nlc3MgdG8gdHhSZXF1ZXN0IGRpcmVjdGx5LlxuICBjb25zdCBpbnRlbnRTdGFraW5nUmVxdWVzdElkID0gKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8uc3Rha2luZ1JlcXVlc3RJZDtcbiAgaWYgKGludGVudFN0YWtpbmdSZXF1ZXN0SWQgJiYgIWVmZmVjdGl2ZVR4UGFyYW1zLnN0YWtpbmdSZXF1ZXN0SWQpIHtcbiAgICBlZmZlY3RpdmVUeFBhcmFtcy5zdGFraW5nUmVxdWVzdElkID0gaW50ZW50U3Rha2luZ1JlcXVlc3RJZDtcbiAgfVxuXG4gIC8vIEFsbCBzdGFraW5nIGludGVudHMgKEJTQyBkZWxlZ2F0ZS91bmRlbGVnYXRlLCBDRUxPIHN0YWtlL3Vuc3Rha2UsIGV0Yy4pIGNhcnJ5XG4gIC8vIHN0YWtpbmdSZXF1ZXN0SWQgYXMgYSByZXF1aXJlZCBmaWVsZCBvbiBCYXNlU3Rha2VJbnRlbnQgKEBiaXRnby9wdWJsaWMtdHlwZXMpLlxuICAvLyBVc2UgaXRzIHByZXNlbmNlIGFzIGEgZ2VuZXJpYyBzdGFraW5nIHNpZ25hbCDigJQgbm8gbmVlZCB0byBlbnVtZXJhdGUgZXZlcnkgaW50ZW50VHlwZS5cbiAgY29uc3QgaXNTdGFraW5nSW50ZW50ID0gISEodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5zdGFraW5nUmVxdWVzdElkO1xuXG4gIC8vIGJ1aWxkUGFyYW1zLnR5cGUgZnJvbSB0aGUgd2FsbGV0IFVJIGlzIFBhc2NhbENhc2UgKCdJbXBvcnQnKTsgaW50ZW50LmludGVudFR5cGUgZnJvbSBXUFxuICAvLyBpcyBsb3dlcmNhc2UgKCdpbXBvcnQnKS4gRWl0aGVyIG1heSBiZSB0aGUgc291cmNlIG9mIHRydXRoIGRlcGVuZGluZyBvbiB0aGUgc2lnbmluZyBwYXRoLlxuICBjb25zdCBpbnRlbnRUeXBlID0gKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8uaW50ZW50VHlwZSA/PyAnJztcblxuICBpZiAoXG4gICAgIWVmZmVjdGl2ZVR4UGFyYW1zLnJlY2lwaWVudHM/Lmxlbmd0aCAmJlxuICAgICFpc1N0YWtpbmdJbnRlbnQgJiZcbiAgICAhTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyh0eFR5cGUpICYmXG4gICAgIU5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5oYXMoaW50ZW50VHlwZSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgJ1JlY2lwaWVudCBkZXRhaWxzIGFyZSByZXF1aXJlZCB0byB2ZXJpZnkgdGhpcyB0cmFuc2FjdGlvbiBiZWZvcmUgc2lnbmluZy4gUGFzcyB0eFBhcmFtcyB3aXRoIGF0IGxlYXN0IG9uZSByZWNpcGllbnQuJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gZWZmZWN0aXZlVHhQYXJhbXM7XG59XG5cbmNvbnN0IENvbnNvbGlkYXRlSW50ZW50ID0gdC5pbnRlcnNlY3Rpb24oW1xuICB0LnR5cGUoeyBpbnRlbnRUeXBlOiB0LmxpdGVyYWwoJ2NvbnNvbGlkYXRlJykgfSksXG4gIHQucGFydGlhbCh7IGNvbnNvbGlkYXRlSWQ6IHQuc3RyaW5nIH0pLFxuXSk7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHZlcmlmeVRyYW5zYWN0aW9uIG9wdGlvbnMgZm9yIHNpZ25pbmctdGltZSB2ZXJpZmljYXRpb24gb2YgYSBUU1MgdHhSZXF1ZXN0LlxuICpcbiAqIENvbnNvbGlkYXRpb24gaW50ZW50IHJlY2lwaWVudHMgYXJlIGEgc2VydmVyLWdlbmVyYXRlZCwgYnVpbGQtdGltZSBiYWxhbmNlIHNuYXBzaG90IHRoYXQgZHJpZnRzXG4gKiBmcm9tIHRoZSBzd2VwdCBhbW91bnQsIHNvIHRoZXkgYXJlIG5vdCBiYWNrZmlsbGVkOyBzd2VlcC10by1iYXNlLWFkZHJlc3MgaXMgdmVyaWZpZWQgaW5zdGVhZCxcbiAqIG1pcnJvcmluZyB3YWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gdHhSZXF1ZXN0IC0gdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QgY29udGFpbmluZyB0aGUgcGVyc2lzdGVkIGludGVudFxuICogQHBhcmFtIHR4SGV4IC0gdGhlIHVuc2lnbmVkIHRyYW5zYWN0aW9uIHRvIHZlcmlmeVxuICogQHBhcmFtIHR4UGFyYW1zIC0gdGhlIGNhbGxlci1zdXBwbGllZCB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzIChtYXkgYmUgdW5kZWZpbmVkKVxuICogQHBhcmFtIGNoYWluTmFtZSAtIHRoZSBiYXNlIGNoYWluIG5hbWU7IHBhc3MgYmFzZUNvaW4uZ2V0Q2hhaW4oKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVRzc1ZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyhcbiAgdHhSZXF1ZXN0OiBUeFJlcXVlc3QsXG4gIHR4SGV4OiBzdHJpbmcsXG4gIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcyB8IHVuZGVmaW5lZCxcbiAgY2hhaW5OYW1lOiBzdHJpbmdcbik6IFBpY2s8VmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLCAndHhQcmVidWlsZCcgfCAndHhQYXJhbXMnIHwgJ3ZlcmlmaWNhdGlvbic+IHtcbiAgaWYgKENvbnNvbGlkYXRlSW50ZW50LmlzKHR4UmVxdWVzdC5pbnRlbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXgsIGNvbnNvbGlkYXRlSWQ6IHR4UmVxdWVzdC5pbnRlbnQuY29uc29saWRhdGVJZCB9LFxuICAgICAgdHhQYXJhbXM6IHsgLi4udHhQYXJhbXMgfSxcbiAgICAgIHZlcmlmaWNhdGlvbjogeyBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgdHhQcmVidWlsZDogeyB0eEhleCB9LCB0eFBhcmFtczogcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdHhQYXJhbXMsIGNoYWluTmFtZSkgfTtcbn1cbiJdfQ==
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlJQSw0REE4REM7QUE5TEQseUNBQXVEO0FBR3ZEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDVSxRQUFBLHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNDLGNBQWM7SUFDZCxjQUFjO0lBQ2QsV0FBVztJQUNYLGVBQWU7SUFDZixlQUFlO0lBQ2YsYUFBYTtJQUNiLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7SUFDZCxjQUFjO0lBQ2QsVUFBVTtJQUNWLGdGQUFnRjtJQUNoRixhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7SUFDZCwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSw4RUFBOEU7SUFDOUUsK0VBQStFO0lBQy9FLCtEQUErRDtJQUMvRCw2RUFBNkU7SUFDN0UsdUJBQXVCO0lBQ3ZCLFlBQVk7SUFDWixhQUFhO0lBQ2IsY0FBYztJQUNkLGVBQWU7SUFDZix1RkFBdUY7SUFDdkYsdUZBQXVGO0lBQ3ZGLDJDQUEyQztJQUMzQyxhQUFhO0lBQ2IsTUFBTTtJQUNOLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsbUVBQW1FO0lBQ25FLGNBQWM7SUFFZCwwRkFBMEY7SUFDMUYsK0RBQStEO0lBQy9ELFVBQVU7SUFDVixZQUFZO0lBQ1osaUJBQWlCO0lBRWpCLDhCQUE4QjtJQUM5QixPQUFPO0lBQ1AsU0FBUztJQUNULG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsZUFBZTtJQUNmLGVBQWU7SUFDZixXQUFXO0lBRVgsc0ZBQXNGO0lBQ3RGLE9BQU87SUFDUCxtQkFBbUI7SUFFbkIsZUFBZTtJQUNmLHdIQUF3SDtJQUN4SCxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHdCQUF3QjtJQUN4Qix3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LE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHsgUG9wdWxhdGVkSW50ZW50LCBUeFJlcXVlc3QgfSBmcm9tICcuL2Jhc2VUeXBlcyc7XG5cbi8qKlxuICogVHJhbnNhY3Rpb24gdHlwZXMgdGhhdCBsZWdpdGltYXRlbHkgY2Fycnkgbm8gZXhwbGljaXQgcmVjaXBpZW50cy5cbiAqIFRoZXNlIGFyZSB0aGUgaW50ZW50VHlwZSBzdHJpbmdzIGFzIHN0b3JlZCBpbiBUeFJlcXVlc3QuaW50ZW50LmludGVudFR5cGUgYnkgV1AuXG4gKiB2ZXJpZnlUcmFuc2FjdGlvbiBoYW5kbGVzIG5vLXJlY2lwaWVudCB2YWxpZGF0aW9uIGZvciB0aGVzZSBpbnRlcm5hbGx5LlxuICogTWlycm9ycyB0aGUgYnlwYXNzIGxpc3QgaW4gYWJzdHJhY3RFdGhMaWtlTmV3Q29pbnMudHMgdmVyaWZ5VHNzVHJhbnNhY3Rpb24uXG4gKlxuICogRUNEU0EgdHlwZXM6IGFjY2VsZXJhdGlvbiwgZmlsbE5vbmNlLCB0cmFuc2ZlclRva2VuLCB0b2tlbkFwcHJvdmFsLCBjb25zb2xpZGF0ZSxcbiAqICAgICAgICAgICAgICBicmlkZ2VGdW5kcywgZW5hYmxlVG9rZW4sIGN1c3RvbVR4LCB3cmFwQXBwcm92ZSwgd3JhcCwgdW53cmFwLFxuICogICAgICAgICAgICAgIGZpbmFsaXplVW53cmFwLCBjb250cmFjdENhbGxcbiAqIEJTQy9CTkIgZGVsZWdhdGlvbi1iYXNlZCBzdGFraW5nOiBkZWxlZ2F0ZSwgdW5kZWxlZ2F0ZSwgc3dpdGNoVmFsaWRhdG9yXG4gKiBDRUxPL0VUSCBsb2NrLWJhc2VkIHN0YWtpbmc6IHN0YWtlLCB1bnN0YWtlLCBzdGFrZVdpdGhDYWxsRGF0YSwgdW5zdGFrZVdpdGhDYWxsRGF0YSxcbiAqICAgICAgICAgICAgICB0cmFuc2ZlclN0YWtlLCBpbmNyZWFzZVN0YWtlLCBnb1Vuc3Rha2VcbiAqIENsYWltIHJld2FyZHMgKEJTQywgQ0VMTyDigJQgVFJYL1NPTCB1c2UgRWREU0EgYW5kIGFyZSB1bmFmZmVjdGVkKTogY2xhaW0sIHN0YWtlQ2xhaW1SZXdhcmRzXG4gKi9cbmV4cG9ydCBjb25zdCBOT19SRUNJUElFTlRfVFhfVFlQRVMgPSBuZXcgU2V0KFtcbiAgLy8gRUNEU0EgdHlwZXNcbiAgJ2FjY2VsZXJhdGlvbicsXG4gICdmaWxsTm9uY2UnLFxuICAndHJhbnNmZXJUb2tlbicsXG4gICd0b2tlbkFwcHJvdmFsJyxcbiAgJ2NvbnNvbGlkYXRlJyxcbiAgJ2JyaWRnZUZ1bmRzJyxcbiAgJ2VuYWJsZVRva2VuJyxcbiAgJ2VuYWJsZXRva2VuJyxcbiAgJ2Rpc2FibGVUb2tlbicsXG4gICdkaXNhYmxldG9rZW4nLFxuICAnY3VzdG9tVHgnLFxuICAvLyBEZUZpIHZhdWx0IG9wZXJhdGlvbnMg4oCUIHJlY2lwaWVudHMvY2FsbGRhdGEgYnVpbHQgc2VydmVyLXNpZGUgZnJvbSBkZWZpUGFyYW1zXG4gICdkZWZpQXBwcm92ZScsXG4gICdkZWZpRGVwb3NpdCcsXG4gICdkZWZpV2l0aGRyYXcnLFxuICAvLyBOYXRpdmUgd3JhcC91bndyYXAgKFdFVEg5IGRlcG9zaXQoKS93aXRoZHJhdygpKSDigJQgY2FsbGRhdGEgYW5kIHRoZSBXRVRIOVxuICAvLyBhZGRyZXNzIGFyZSByZXNvbHZlZCBzZXJ2ZXItc2lkZSBmcm9tIHRoZSB2YXVsdCBiaW5kaW5nLCBzbyBubyByZWNpcGllbnRzLlxuICAvLyBSZWdpc3RlcmVkIGluIEJPVEggc3BlbGxpbmdzIG9uIHB1cnBvc2U6IHRoaXMgc2V0IGlzIG1hdGNoZWQgYWdhaW5zdFxuICAvLyB0eFBhcmFtcy50eXBlLCB3aGljaCBpcyBidWlsZFBhcmFtcy50eXBlIChjYW1lbENhc2UsIGZyb20gd2FsbGV0LnNlbmRNYW55KSxcbiAgLy8gQU5EIGFnYWluc3QgaW50ZW50LmludGVudFR5cGUgKGtlYmFiLWNhc2UsIGFzIFdQIHBlcnNpc3RzIGl0KS4gU2lnbmluZyBwYXRoc1xuICAvLyB0aGF0IGNhcnJ5IG5vIHR4UGFyYW1zIOKAlCBub3RhYmx5IHBlbmRpbmdBcHByb3ZhbC5hcHByb3ZlKCkg4oaSXG4gIC8vIHJlY3JlYXRlVHhSZXF1ZXN0KCkg4oaSIHNpZ25UeFJlcXVlc3QoKSB3aXRoIG5vIHR4UGFyYW1zIOKAlCBvbmx5IGV2ZXIgc2VlIHRoZVxuICAvLyBrZWJhYi1jYXNlIHNwZWxsaW5nLlxuICAnd3JhcE5hdGl2ZScsXG4gICd3cmFwLW5hdGl2ZScsXG4gICd1bndyYXBOYXRpdmUnLFxuICAndW53cmFwLW5hdGl2ZScsXG4gIC8vIEVSQy03OTg0IHNoaWVsZC91bnNoaWVsZDogYXBwcm92ZS93cmFwL3Vud3JhcCBjYWxsZGF0YSBpcyBidWlsdCBzZXJ2ZXItc2lkZSBmcm9tIHRoZVxuICAvLyBpbnRlbnQsIGFuZCBmaW5hbGl6ZVVud3JhcCB0eG5SZXFzIGFyZSBXUC1jcmVhdGVkIGF0IFJFQURZX1RPX0ZJTkFMSVpFIChjbGllbnQgc2lnbnNcbiAgLy8gb25seSkg4oCUIG5vbmUgY2FycnkgU0RLLWxldmVsIHJlY2lwaWVudHMuXG4gICd3cmFwQXBwcm92ZScsXG4gICd3cmFwJyxcbiAgJ3Vud3JhcCcsXG4gICdmaW5hbGl6ZVVud3JhcCcsXG4gIC8vIFNtYXJ0IGNvbnRyYWN0IGludm9jYXRpb25zIHdpdGggbm8gZXhwbGljaXQgU0RLLWxldmVsIHJlY2lwaWVudHNcbiAgJ2NvbnRyYWN0Q2FsbCcsXG5cbiAgLy8gQlNDL0JOQiBkZWxlZ2F0aW9uLWJhc2VkIHN0YWtpbmcg4oCUIGludGVudFR5cGUgc3RyaW5ncyBmcm9tIFR4UmVxdWVzdC5pbnRlbnQuaW50ZW50VHlwZS5cbiAgLy8gTm90ZTogU09MIHNvbERlbGVnYXRlSW50ZW50IGFsc28gdXNlcyBpbnRlbnRUeXBlIFwiZGVsZWdhdGVcIi5cbiAgJ2RlbGVnYXRlJyxcbiAgJ3VuZGVsZWdhdGUnLFxuICAnc3dpdGNoVmFsaWRhdG9yJyxcblxuICAvLyBDRUxPL0VUSCBsb2NrLWJhc2VkIHN0YWtpbmdcbiAgJ3N0YWtlJyxcbiAgJ3Vuc3Rha2UnLFxuICAnc3Rha2VXaXRoQ2FsbERhdGEnLFxuICAndW5zdGFrZVdpdGhDYWxsRGF0YScsXG4gICd0cmFuc2ZlclN0YWtlJyxcbiAgJ2luY3JlYXNlU3Rha2UnLFxuICAnZ29VbnN0YWtlJyxcblxuICAvLyBDbGFpbSByZXdhcmRzIOKAlCBCU0MgYW5kIENFTE8gKFRSWC9TT0wvQ29zbW9zIHVzZSBFZERTQSwgbm90IGFmZmVjdGVkIGJ5IHRoaXMgZ3VhcmQpXG4gICdjbGFpbScsXG4gICdzdGFrZUNsYWltUmV3YXJkcycsXG5cbiAgJ2NyZWF0ZUFjY291bnQnLFxuICAvLyBDYW50b24gb3BlcmF0aW9ucyB3aXRoIG5vIFNESy1sZXZlbCByZWNpcGllbnRzLiBDYW50b24udmVyaWZ5VHJhbnNhY3Rpb24gdmFsaWRhdGVzIHRoZXNlIGZyb20gdGhlIHRyYW5zYWN0aW9uIGl0c2VsZi5cbiAgJ3RyYW5zZmVyQWNjZXB0JyxcbiAgJ3RyYW5zZmVyUmVqZWN0JyxcbiAgJ3RyYW5zZmVyT2ZmZXJXaXRoZHJhd24nLFxuICAnY29zaWduRGVsZWdhdGlvbkFjY2VwdCcsXG4gICdhbGxvY2F0aW9uQWxsb2NhdGUnLFxuICAnYWxsb2NhdGlvbk9mZmVyV2l0aGRyYXduJyxcbiAgJ2NhbnRvbkNvbW1hbmQnLFxuICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXInLFxuICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nQWNjZXB0JyxcbiAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ1JlamVjdCcsXG4gICdjYW50b25QYXJ0aWNpcGFudE9uYm9hcmRpbmdSZXF1ZXN0JyxcblxuICAncGxlZGdlJyxcblxuICAvLyBBdmFsYW5jaGUgLyBGbGFyZSBjcm9zcy1jaGFpbiBhdG9taWMgaW1wb3J0cyDigJQgcmVjaXBpZW50cyBhcmUgbm90IHN1cHBsaWVkXG4gIC8vIGJ5IHRoZSBjbGllbnQgYmVjYXVzZSB0aGUgaW1wb3J0IGNvbnN1bWVzIFVUWE9zIGFscmVhZHkgb3duZWQgYnkgdGhlXG4gIC8vIHdhbGxldDsgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgdGhlIHdhbGxldCBpdHNlbGYuIFdQIGlzc3VlcyB0aGVzZVxuICAvLyB3aXRoIGludGVudFR5cGUgJ2ltcG9ydCcgKFAtY2hhaW4pIG9yICdpbXBvcnR0b2MnIChDLWNoYWluKS5cbiAgJ2ltcG9ydCcsXG4gICdpbXBvcnR0b2MnLFxuXG4gIC8vIFNPTDogZGVhY3RpdmF0ZSBzdGFrZSBhY2NvdW50IOKAlCBubyBvbi1jaGFpbiB0cmFuc2ZlciByZWNpcGllbnQuXG4gICdkZWFjdGl2YXRlJyxcblxuICAvLyBTT0w6IGF1dGhvcml6ZSBzdGFrZSBhY2NvdW50IOKAlCBubyB0cmFuc2ZlciByZWNpcGllbnQuXG4gICdhdXRob3JpemUnLFxuXSk7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGVmZmVjdGl2ZSB0eFBhcmFtcyBmb3IgVFNTIHNpZ25pbmcgcmVjaXBpZW50IHZlcmlmaWNhdGlvbi5cbiAqXG4gKiBGb3Igc21hcnQgY29udHJhY3QgaW50ZXJhY3Rpb25zLCByZWNpcGllbnRzIGxpdmUgaW4gdHhSZXF1ZXN0LmludGVudC5yZWNpcGllbnRzXG4gKiAobmF0aXZlIGFtb3VudCA9IDAsIHNvIGJ1aWxkUGFyYW1zIGlzIGVtcHR5KS4gRmFsbHMgYmFjayB0byBpbnRlbnQgcmVjaXBpZW50c1xuICogbWFwcGVkIHRvIElUcmFuc2FjdGlvblJlY2lwaWVudCBzaGFwZSB3aGVuIHR4UGFyYW1zLnJlY2lwaWVudHMgaXMgYWJzZW50LlxuICpcbiAqIHRva2VuTmFtZSBpcyBkZXJpdmVkIGZyb20gdG9rZW5EYXRhLnRva2VuTmFtZSB3aGVuIHByZXNlbnQsIG90aGVyd2lzZSBmcm9tXG4gKiBhbW91bnQuc3ltYm9sIHdoZW4gY2hhaW5OYW1lIGlzIHByb3ZpZGVkIGFuZCBzeW1ib2wgZGlmZmVycyBmcm9tIGl0LlxuICpcbiAqIFN0YWtpbmcgaW50ZW50cyAoQlNDIGRlbGVnYXRlL3VuZGVsZWdhdGUsIENFTE8gc3Rha2UvdW5zdGFrZSwgZXRjLikgYXJlXG4gKiBpZGVudGlmaWVkIGdlbmVyaWNhbGx5IGJ5IHRoZSBwcmVzZW5jZSBvZiBgc3Rha2luZ1JlcXVlc3RJZGAgb24gdGhlIGludGVudCDigJRcbiAqIGEgcmVxdWlyZWQgZmllbGQgb24gQmFzZVN0YWtlSW50ZW50IGluIEBiaXRnby9wdWJsaWMtdHlwZXMuIFRoZXNlIGludGVudHNcbiAqIGhhdmUgbm8gdHhQYXJhbXMgcmVjaXBpZW50cyBieSBkZXNpZ247IHZhbGlkYXRpb24gaXMgZG9uZSBhdCB0aGUgY29pbiBsYXllci5cbiAqXG4gKiBUaHJvd3MgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgaWYgbm8gcmVjaXBpZW50cyBjYW4gYmUgcmVzb2x2ZWQgYW5kIHRoZVxuICogdHJhbnNhY3Rpb24gaXMgbm90IGEga25vd24gbm8tcmVjaXBpZW50IHR5cGUuXG4gKlxuICogQHBhcmFtIHR4UmVxdWVzdCAtIHRoZSB0cmFuc2FjdGlvbiByZXF1ZXN0IGNvbnRhaW5pbmcgdGhlIHBlcnNpc3RlZCBpbnRlbnRcbiAqIEBwYXJhbSB0eFBhcmFtcyAtIHRoZSBjYWxsZXItc3VwcGxpZWQgdHJhbnNhY3Rpb24gcGFyYW1ldGVycyAobWF5IGJlIHVuZGVmaW5lZClcbiAqIEBwYXJhbSBjaGFpbk5hbWUgLSB0aGUgYmFzZSBjaGFpbiBuYW1lIChlLmcuICdzb2wnLCAndHNvbCcpIHVzZWQgdG8gZXhjbHVkZVxuICogICBuYXRpdmUtY29pbiB0cmFuc2ZlcnMgZnJvbSB0b2tlbk5hbWU7IHBhc3MgYmFzZUNvaW4uZ2V0Q2hhaW4oKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKFxuICB0eFJlcXVlc3Q6IFR4UmVxdWVzdCxcbiAgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zIHwgdW5kZWZpbmVkLFxuICBjaGFpbk5hbWU/OiBzdHJpbmdcbik6IFRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgY29uc3QgaW50ZW50UmVjaXBpZW50cyA9ICh0eFJlcXVlc3QuaW50ZW50IGFzIFBvcHVsYXRlZEludGVudCk/LnJlY2lwaWVudHM/Lm1hcCgoaW50ZW50UmVjaXBpZW50KSA9PiB7XG4gICAgLy8gUHJlZmVyIHRva2VuRGF0YS50b2tlbk5hbWU7IGZhbGwgYmFjayB0byBhbW91bnQuc3ltYm9sIHdoZW4gY2hhaW5OYW1lIGlzXG4gICAgLy8gcHJvdmlkZWQgYW5kIGRpZmZlcnMgZnJvbSBpdC4gV2hlbiBhYnNlbnQsIHNraXAgdGhlIHN5bWJvbCBmYWxsYmFjay5cbiAgICBjb25zdCB7IHN5bWJvbCB9ID0gaW50ZW50UmVjaXBpZW50LmFtb3VudDtcbiAgICBjb25zdCB0b2tlbk5hbWUgPVxuICAgICAgaW50ZW50UmVjaXBpZW50LnRva2VuRGF0YT8udG9rZW5OYW1lIHx8XG4gICAgICAoY2hhaW5OYW1lICE9PSB1bmRlZmluZWQgJiYgc3ltYm9sICYmIHN5bWJvbCAhPT0gY2hhaW5OYW1lID8gc3ltYm9sIDogdW5kZWZpbmVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWRkcmVzczogaW50ZW50UmVjaXBpZW50LmFkZHJlc3MuYWRkcmVzcyxcbiAgICAgIGFtb3VudDogaW50ZW50UmVjaXBpZW50LmFtb3VudC52YWx1ZSxcbiAgICAgIGRhdGE6IGludGVudFJlY2lwaWVudC5kYXRhLFxuICAgICAgLi4uKHRva2VuTmFtZSAmJiB7IHRva2VuTmFtZSB9KSxcbiAgICB9O1xuICB9KTtcblxuICBjb25zdCBlZmZlY3RpdmVUeFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXMgPSB7XG4gICAgLi4udHhQYXJhbXMsXG4gICAgcmVjaXBpZW50czogdHhQYXJhbXM/LnJlY2lwaWVudHM/Lmxlbmd0aCA/IHR4UGFyYW1zLnJlY2lwaWVudHMgOiBpbnRlbnRSZWNpcGllbnRzLFxuICB9O1xuXG4gIC8vIEZhbGwgYmFjayB0byBpbnRlbnQuaW50ZW50VHlwZSB3aGVuIHR4UGFyYW1zLnR5cGUgaXMgbm90IGV4cGxpY2l0bHkgc2V0LlxuICAvLyBTdGFraW5nIHdhbGxldHMgY2FsbCBzaWduVHJhbnNhY3Rpb24gd2l0aG91dCB0eFBhcmFtcywgc28gdGhlIHR5cGUgbGl2ZXMgb25seSBpbiB0aGUgaW50ZW50LlxuICBjb25zdCB0eFR5cGUgPSBlZmZlY3RpdmVUeFBhcmFtcy50eXBlID8/ICh0eFJlcXVlc3QuaW50ZW50IGFzIFBvcHVsYXRlZEludGVudCk/LmludGVudFR5cGUgPz8gJyc7XG5cbiAgLy8gUHJvcGFnYXRlIHRoZSByZXNvbHZlZCB0eXBlIHNvIGRvd25zdHJlYW0gY2FsbGVyc1xuICBpZiAoIWVmZmVjdGl2ZVR4UGFyYW1zLnR5cGUgJiYgdHhUeXBlKSB7XG4gICAgZWZmZWN0aXZlVHhQYXJhbXMudHlwZSA9IHR4VHlwZTtcbiAgfVxuXG4gIC8vIFByb3BhZ2F0ZSBzdGFraW5nUmVxdWVzdElkIGZyb20gaW50ZW50IGludG8gZWZmZWN0aXZlVHhQYXJhbXMgc28gdmVyaWZ5VHNzVHJhbnNhY3Rpb25cbiAgLy8gb3ZlcnJpZGVzIGNhbiBieXBhc3MgdGhlIG5vLXJlY2lwaWVudCBndWFyZCB3aXRob3V0IG5lZWRpbmcgYWNjZXNzIHRvIHR4UmVxdWVzdCBkaXJlY3RseS5cbiAgY29uc3QgaW50ZW50U3Rha2luZ1JlcXVlc3RJZCA9ICh0eFJlcXVlc3QuaW50ZW50IGFzIFBvcHVsYXRlZEludGVudCk/LnN0YWtpbmdSZXF1ZXN0SWQ7XG4gIGlmIChpbnRlbnRTdGFraW5nUmVxdWVzdElkICYmICFlZmZlY3RpdmVUeFBhcmFtcy5zdGFraW5nUmVxdWVzdElkKSB7XG4gICAgZWZmZWN0aXZlVHhQYXJhbXMuc3Rha2luZ1JlcXVlc3RJZCA9IGludGVudFN0YWtpbmdSZXF1ZXN0SWQ7XG4gIH1cblxuICAvLyBBbGwgc3Rha2luZyBpbnRlbnRzIChCU0MgZGVsZWdhdGUvdW5kZWxlZ2F0ZSwgQ0VMTyBzdGFrZS91bnN0YWtlLCBldGMuKSBjYXJyeVxuICAvLyBzdGFraW5nUmVxdWVzdElkIGFzIGEgcmVxdWlyZWQgZmllbGQgb24gQmFzZVN0YWtlSW50ZW50IChAYml0Z28vcHVibGljLXR5cGVzKS5cbiAgLy8gVXNlIGl0cyBwcmVzZW5jZSBhcyBhIGdlbmVyaWMgc3Rha2luZyBzaWduYWwg4oCUIG5vIG5lZWQgdG8gZW51bWVyYXRlIGV2ZXJ5IGludGVudFR5cGUuXG4gIGNvbnN0IGlzU3Rha2luZ0ludGVudCA9ICEhKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8uc3Rha2luZ1JlcXVlc3RJZDtcblxuICAvLyBidWlsZFBhcmFtcy50eXBlIGZyb20gdGhlIHdhbGxldCBVSSBpcyBQYXNjYWxDYXNlICgnSW1wb3J0Jyk7IGludGVudC5pbnRlbnRUeXBlIGZyb20gV1BcbiAgLy8gaXMgbG93ZXJjYXNlICgnaW1wb3J0JykuIEVpdGhlciBtYXkgYmUgdGhlIHNvdXJjZSBvZiB0cnV0aCBkZXBlbmRpbmcgb24gdGhlIHNpZ25pbmcgcGF0aC5cbiAgY29uc3QgaW50ZW50VHlwZSA9ICh0eFJlcXVlc3QuaW50ZW50IGFzIFBvcHVsYXRlZEludGVudCk/LmludGVudFR5cGUgPz8gJyc7XG5cbiAgaWYgKFxuICAgICFlZmZlY3RpdmVUeFBhcmFtcy5yZWNpcGllbnRzPy5sZW5ndGggJiZcbiAgICAhaXNTdGFraW5nSW50ZW50ICYmXG4gICAgIU5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5oYXModHhUeXBlKSAmJlxuICAgICFOT19SRUNJUElFTlRfVFhfVFlQRVMuaGFzKGludGVudFR5cGUpXG4gICkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICdSZWNpcGllbnQgZGV0YWlscyBhcmUgcmVxdWlyZWQgdG8gdmVyaWZ5IHRoaXMgdHJhbnNhY3Rpb24gYmVmb3JlIHNpZ25pbmcuIFBhc3MgdHhQYXJhbXMgd2l0aCBhdCBsZWFzdCBvbmUgcmVjaXBpZW50LidcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGVmZmVjdGl2ZVR4UGFyYW1zO1xufVxuIl19
|
|
@@ -370,8 +370,6 @@ export interface WalletSignTransactionOptions extends WalletSignBaseOptions {
|
|
|
370
370
|
txParams: TransactionParams;
|
|
371
371
|
verification?: VerificationOptions;
|
|
372
372
|
};
|
|
373
|
-
/** Populated by wallet.verifyTxParams TSS path so signing uses the same txRequest that was verified. */
|
|
374
|
-
resolvedTxRequestForSigning?: TxRequest;
|
|
375
373
|
[index: string]: unknown;
|
|
376
374
|
}
|
|
377
375
|
interface WalletSignMessageBase extends WalletSignBaseOptions {
|
|
@@ -400,6 +398,21 @@ export interface GetUserPrvOptions {
|
|
|
400
398
|
coldDerivationSeed?: string;
|
|
401
399
|
walletPassphrase?: string;
|
|
402
400
|
}
|
|
401
|
+
export interface VerifyKeyOptions {
|
|
402
|
+
/**
|
|
403
|
+
* User TSS signing material: the same string that would be passed as `prv` when signing a
|
|
404
|
+
* transaction. TSS EdDSA (MPCv1) wallets only.
|
|
405
|
+
*/
|
|
406
|
+
prv: string;
|
|
407
|
+
reqId?: IRequestTracer;
|
|
408
|
+
}
|
|
409
|
+
export interface VerifyKeyResult {
|
|
410
|
+
/**
|
|
411
|
+
* Whether the signing material recombines to the wallet's commonKeychain. A consistency
|
|
412
|
+
* check, not proof of possession — never use it as an authorization signal.
|
|
413
|
+
*/
|
|
414
|
+
match: boolean;
|
|
415
|
+
}
|
|
403
416
|
export interface WalletCoinSpecific {
|
|
404
417
|
tokenFlushThresholds?: any;
|
|
405
418
|
addressVersion?: number;
|
|
@@ -1184,6 +1197,7 @@ export interface IWallet {
|
|
|
1184
1197
|
prebuildTransaction(params?: PrebuildTransactionOptions): Promise<PrebuildTransactionResult>;
|
|
1185
1198
|
signTransaction(params?: WalletSignTransactionOptions): Promise<SignedTransaction>;
|
|
1186
1199
|
getUserPrv(params?: GetUserPrvOptions): Promise<string>;
|
|
1200
|
+
verifyKey(params: VerifyKeyOptions): Promise<VerifyKeyResult>;
|
|
1187
1201
|
prebuildAndSignTransaction(params?: PrebuildAndSignTransactionOptions): Promise<SignedTransaction>;
|
|
1188
1202
|
signAndSendTxRequest(params?: SignAndSendTxRequestOptions): Promise<SignedTransaction>;
|
|
1189
1203
|
accelerateTransaction(params?: AccelerateTransactionOptions): Promise<any>;
|