@bitgo/sdk-core 2.0.0-rc.9 → 2.2.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/CHANGELOG.md +88 -193
- package/dist/src/account-lib/baseCoin/enum.d.ts +4 -2
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +6 -3
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -2
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +1 -1
- package/dist/src/account-lib/mpc/curves/ed25519.js +2 -2
- package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/curves/secp256k1.js +2 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +9 -4
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +28 -16
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +4 -8
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +8 -3
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +11 -4
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +16 -5
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/bip32util.d.ts +1 -1
- package/dist/src/bitgo/bip32util.d.ts.map +1 -1
- package/dist/src/bitgo/bip32util.js +1 -1
- package/dist/src/bitgo/bitcoin.d.ts +1 -2
- package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
- package/dist/src/bitgo/bitcoin.js +1 -1
- package/dist/src/bitgo/config.d.ts +12 -0
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/ecdh.d.ts +1 -2
- package/dist/src/bitgo/ecdh.d.ts.map +1 -1
- package/dist/src/bitgo/ecdh.js +1 -1
- package/dist/src/bitgo/environments.d.ts +8 -1
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +23 -9
- package/dist/src/bitgo/index.d.ts +1 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +2 -1
- package/dist/src/bitgo/keychain/iKeychains.d.ts +5 -5
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +1 -1
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +5 -5
- package/dist/src/bitgo/legacyBitcoin.d.ts +1 -2
- package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
- package/dist/src/bitgo/legacyBitcoin.js +1 -1
- package/dist/src/bitgo/lightning/iLightning.d.ts +27 -3
- package/dist/src/bitgo/lightning/iLightning.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/iLightning.js +14 -4
- package/dist/src/bitgo/lightning/index.d.ts +2 -0
- package/dist/src/bitgo/lightning/index.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/index.js +3 -1
- package/dist/src/bitgo/lightning/lightning.d.ts +3 -1
- package/dist/src/bitgo/lightning/lightning.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/lightning.js +9 -5
- package/dist/src/bitgo/lightning/lightningUtils.d.ts +46 -0
- package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lightningUtils.js +133 -0
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts +3 -0
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lnurlCodec.js +28 -0
- package/dist/src/bitgo/recovery/initiate.d.ts +1 -1
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
- package/dist/src/bitgo/recovery/initiate.js +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +2 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts +2 -0
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +22 -10
- package/dist/src/bitgo/tss/common.d.ts +6 -2
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +22 -3
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +58 -15
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +247 -102
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +6 -2
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +23 -4
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.js +59 -6
- package/dist/src/bitgo/tss/eddsa/types.d.ts +13 -0
- package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/eddsa/types.js +1 -1
- package/dist/src/bitgo/utils/mpcUtils.d.ts +2 -5
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +46 -15
- package/dist/src/bitgo/utils/opengpgUtils.d.ts +9 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/opengpgUtils.js +33 -4
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +43 -5
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +48 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +95 -4
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +13 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +28 -9
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +109 -24
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +25 -13
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +84 -21
- package/dist/src/bitgo/wallet/iWallet.d.ts +32 -16
- 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/iWallets.d.ts +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +36 -15
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +139 -18
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +9 -8
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/tsconfig.tsbuildinfo +1128 -171
- package/package.json +12 -8
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SignatureShareType = void 0;
|
|
3
|
+
exports.SignatureShareType = exports.RequestType = exports.TokenType = void 0;
|
|
4
|
+
var TokenType;
|
|
5
|
+
(function (TokenType) {
|
|
6
|
+
TokenType["ERC721"] = "ERC721";
|
|
7
|
+
TokenType["ERC1155"] = "ERC1155";
|
|
8
|
+
TokenType["ERC20"] = "ERC20";
|
|
9
|
+
})(TokenType = exports.TokenType || (exports.TokenType = {}));
|
|
10
|
+
var RequestType;
|
|
11
|
+
(function (RequestType) {
|
|
12
|
+
RequestType[RequestType["tx"] = 0] = "tx";
|
|
13
|
+
RequestType[RequestType["message"] = 1] = "message";
|
|
14
|
+
})(RequestType = exports.RequestType || (exports.RequestType = {}));
|
|
4
15
|
var SignatureShareType;
|
|
5
16
|
(function (SignatureShareType) {
|
|
6
17
|
SignatureShareType["USER"] = "user";
|
|
7
18
|
SignatureShareType["BACKUP"] = "backup";
|
|
8
19
|
SignatureShareType["BITGO"] = "bitgo";
|
|
9
20
|
})(SignatureShareType = exports.SignatureShareType || (exports.SignatureShareType = {}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9iYXNlVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUhBLElBQVksa0JBSVg7QUFKRCxXQUFZLGtCQUFrQjtJQUM1QixtQ0FBYSxDQUFBO0lBQ2IsdUNBQWlCLENBQUE7SUFDakIscUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSlcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFJN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJpYWxpemVkS2V5UGFpciB9IGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgSVJlcXVlc3RUcmFjZXIgfSBmcm9tICcuLi8uLi8uLi9hcGknO1xuaW1wb3J0IHsgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEtleWNoYWluIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW4nO1xuaW1wb3J0IHsgTWVtbywgV2FsbGV0VHlwZSB9IGZyb20gJy4uLy4uL3dhbGxldC9pV2FsbGV0JztcbmltcG9ydCB7IEVERFNBIH0gZnJvbSAnLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5cbmV4cG9ydCB0eXBlIFR4UmVxdWVzdFZlcnNpb24gPSAnZnVsbCcgfCAnbGl0ZSc7XG5leHBvcnQgaW50ZXJmYWNlIEhvcFBhcmFtcyB7XG4gIHBheW1lbnRJZD86IHN0cmluZztcbiAgdXNlclJlcVNpZz86IHN0cmluZztcbiAgZ2FzUHJpY2VNYXg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRUlQMTU1OUZlZU9wdGlvbnMge1xuICBnYXNMaW1pdD86IG51bWJlcjtcbiAgbWF4RmVlUGVyR2FzPzogbnVtYmVyO1xuICBtYXhQcmlvcml0eUZlZVBlckdhcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWVPcHRpb24ge1xuICB1bml0PzogJ2Jhc2VVbml0JyB8ICdjcHUnIHwgJ3JhbSc7XG4gIGZvcm11bGE/OiAnZml4ZWQnIHwgJ2ZlZVJhdGUnIHwgJ3BlcktCJyB8ICdjdXN0b20nIHwgJ3BlclZLQic7XG4gIGZlZVR5cGU/OiAnYmFzZScgfCAnbWF4JyB8ICd0aXAnO1xuICBnYXNMaW1pdD86IG51bWJlcjtcbiAgZ2FzUHJpY2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5FbmFibGVtZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhZGRyZXNzPzogc3RyaW5nOyAvLyBTb21lIGNoYWlucyBsaWtlIFNvbGFuYSByZXF1aXJlIHRva2VucyB0byBiZSBlbmFibGVkIGZvciBzcGVjaWZpYyBhZGRyZXNzLiBJZiBhYnNlbnQsIHdlIHdpbGwgZW5hYmxlIGl0IGZvciB0aGUgd2FsbGV0J3Mgcm9vdCBhZGRyZXNzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zIHtcbiAgcmVxSWQ6IElSZXF1ZXN0VHJhY2VyO1xuICBpbnRlbnRUeXBlOiBzdHJpbmc7XG4gIHNlcXVlbmNlSWQ/OiBzdHJpbmc7XG4gIHJlY2lwaWVudHM6IHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgYW1vdW50OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdG9rZW5OYW1lPzogc3RyaW5nO1xuICB9W107XG4gIGNvbW1lbnQ/OiBzdHJpbmc7XG4gIG1lbW8/OiBNZW1vO1xuICB0b2tlbk5hbWU/OiBzdHJpbmc7XG4gIGVuYWJsZVRva2Vucz86IFRva2VuRW5hYmxlbWVudFtdO1xuICBub25jZT86IHN0cmluZztcbiAgc2VsZlNlbmQ/OiBib29sZWFuO1xuICBmZWVPcHRpb25zPzogRmVlT3B0aW9uIHwgRUlQMTU1OUZlZU9wdGlvbnM7XG4gIGhvcFBhcmFtcz86IEhvcFBhcmFtcztcbiAgaXNUc3M/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBUeFJlcXVlc3RTdGF0ZSA9XG4gIHwgJ3BlbmRpbmdBcHByb3ZhbCdcbiAgfCAnY2FuY2VsZWQnXG4gIHwgJ3JlamVjdGVkJ1xuICB8ICdpbml0aWFsaXplZCdcbiAgfCAncGVuZGluZ0RlbGl2ZXJ5J1xuICB8ICdkZWxpdmVyZWQnXG4gIHwgJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJ1xuICB8ICdzaWduZWQnO1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblN0YXRlID1cbiAgfCAnaW5pdGlhbGl6ZWQnXG4gIHwgJ3BlbmRpbmdTaWduYXR1cmUnXG4gIHwgJ3NpZ25lZCdcbiAgfCAnaGVsZCdcbiAgfCAnZGVsaXZlcmVkJ1xuICB8ICdpbnZhbGlkU2lnbmF0dXJlJ1xuICB8ICdyZWplY3RlZCc7XG5cbi8vIFR5cGUgdXNlZCB0byBzaWduIGEgVFNTIHRyYW5zYWN0aW9uXG5leHBvcnQgdHlwZSBTaWduYWJsZVRyYW5zYWN0aW9uID0ge1xuICAvLyB1bnNpZ25lZCB0cmFuc2FjdGlvbiBpbiBicm9hZGNhc3QgZm9ybWF0XG4gIHNlcmlhbGl6ZWRUeEhleDogc3RyaW5nO1xuICAvLyBwb3J0aW9uIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCB0byBnZW5lcmF0ZSBhIHNpZ25hdHVyZVxuICBzaWduYWJsZUhleDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVW5zaWduZWRUcmFuc2FjdGlvblRzcyA9IFNpZ25hYmxlVHJhbnNhY3Rpb24gJiB7XG4gIC8vIGRlcml2YXRpb24gcGF0aCBvZiB0aGUgc2lnbmVyXG4gIGRlcml2YXRpb25QYXRoOiBzdHJpbmc7XG4gIC8vIHRyYW5zYWN0aW9uIGZlZXNcbiAgZmVlSW5mbz86IHtcbiAgICBmZWU6IG51bWJlcjtcbiAgICBmZWVTdHJpbmc6IHN0cmluZztcbiAgfTtcbiAgY29pblNwZWNpZmljPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBhcnNlZFR4PzogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIFR4UmVxdWVzdCA9IHtcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZztcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgd2FsbGV0VHlwZTogV2FsbGV0VHlwZTtcbiAgdmVyc2lvbjogbnVtYmVyO1xuICBlbnRlcnByaXNlSWQ/OiBzdHJpbmc7XG4gIHN0YXRlOiBUeFJlcXVlc3RTdGF0ZTtcbiAgZGF0ZTogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgaW50ZW50OiB1bmtub3duOyAvLyBTaG91bGQgb3ZlcnJpZGUgd2l0aCBzaWcgc2NoZW1lIHNwZWNpZmljIGludGVudFxuICBwZW5kaW5nQXBwcm92YWxJZD86IHN0cmluZztcbiAgcG9saWNpZXNDaGVja2VkOiBib29sZWFuO1xuICBzaWduYXR1cmVTaGFyZXM/OiBTaWduYXR1cmVTaGFyZVJlY29yZFtdO1xuICBwZW5kaW5nVHhIYXNoZXM/OiBzdHJpbmdbXTtcbiAgdHhIYXNoZXM/OiBzdHJpbmdbXTtcbiAgLy8gT25seSBhdmFpbGFibGUgaW4gJ2xpdGUnIHZlcnNpb25cbiAgdW5zaWduZWRUeHM6IFVuc2lnbmVkVHJhbnNhY3Rpb25Uc3NbXTsgLy8gU2hvdWxkIG92ZXJyaWRlIHdpdGggYmxvY2tjaGFpbiAvIHNpZyBzY2hlbWUgc3BlY2lmaWMgdW5zaWduZWQgdHhcbiAgLy8gT25seSBhdmFpbGFibGUgaW4gJ2Z1bGwnIHZlcnNpb25cbiAgdHJhbnNhY3Rpb25zOiB7XG4gICAgc3RhdGU6IFRyYW5zYWN0aW9uU3RhdGU7XG4gICAgdW5zaWduZWRUeDogVW5zaWduZWRUcmFuc2FjdGlvblRzczsgLy8gU2hvdWxkIG92ZXJyaWRlIHdpdGggYmxvY2tjaGFpbiAvIHNpZyBzcGVjaWZpYyB1bnNpZ25lZCB0eFxuICAgIHNpZ25hdHVyZVNoYXJlczogU2lnbmF0dXJlU2hhcmVSZWNvcmRbXTtcbiAgfVtdO1xuICBhcGlWZXJzaW9uPzogVHhSZXF1ZXN0VmVyc2lvbjtcbiAgbGF0ZXN0OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGVudW0gU2lnbmF0dXJlU2hhcmVUeXBlIHtcbiAgVVNFUiA9ICd1c2VyJyxcbiAgQkFDS1VQID0gJ2JhY2t1cCcsXG4gIEJJVEdPID0gJ2JpdGdvJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIGZyb206IFNpZ25hdHVyZVNoYXJlVHlwZTtcbiAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZTtcbiAgc2hhcmU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21tb24gSW50ZXJmYWNlIGZvciBpbXBsZW1lbnRpbmcgc2lnbmF0dXJlIHNjaGVtZSBzcGVjaWZpY1xuICogdXRpbCBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVHNzVXRpbHM8S2V5U2hhcmUgPSBFRERTQS5LZXlTaGFyZT4ge1xuICBjcmVhdGVVc2VyS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlOiBzdHJpbmcsXG4gICAgcmVjaXBpZW50SW5kZXg/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxLZXljaGFpbj47XG4gIGNyZWF0ZUJhY2t1cEtleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+O1xuICBjcmVhdGVCaXRnb0tleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgZW50ZXJwcmlzZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+O1xuICBjcmVhdGVLZXljaGFpbnMocGFyYW1zOiB7XG4gICAgcGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGVudGVycHJpc2U/OiBzdHJpbmc7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PjtcbiAgc2lnblR4UmVxdWVzdChwYXJhbXM6IHsgdHhSZXF1ZXN0OiBzdHJpbmcgfCBUeFJlcXVlc3Q7IHBydjogc3RyaW5nOyByZXFJZDogSVJlcXVlc3RUcmFjZXIgfSk6IFByb21pc2U8VHhSZXF1ZXN0PjtcbiAgcHJlYnVpbGRUeFdpdGhJbnRlbnQoXG4gICAgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMsXG4gICAgYXBpVmVyc2lvbj86IFR4UmVxdWVzdFZlcnNpb24sXG4gICAgcHJldmlldz86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxUeFJlcXVlc3Q+O1xuICBkZWxldGVTaWduYXR1cmVTaGFyZXModHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmRbXT47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHNlbmRUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgcmVjcmVhdGVUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZywgZGVjcnlwdGVkUHJ2OiBzdHJpbmcsIHJlcUlkOiBJUmVxdWVzdFRyYWNlcik6IFByb21pc2U8VHhSZXF1ZXN0PjtcbiAgZ2V0VHhSZXF1ZXN0KHR4UmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFR4UmVxdWVzdD47XG59XG4iXX0=
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9iYXNlVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNENBLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiw0QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUlwQjtBQXFHRCxJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIseUNBQUUsQ0FBQTtJQUNGLG1EQUFPLENBQUE7QUFDVCxDQUFDLEVBSFcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFHdEI7QUE4QkQsSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzVCLG1DQUFhLENBQUE7SUFDYix1Q0FBaUIsQ0FBQTtJQUNqQixxQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxrQkFBa0IsR0FBbEIsMEJBQWtCLEtBQWxCLDBCQUFrQixRQUk3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcmlhbGl6ZWRLZXlQYWlyIH0gZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBJUmVxdWVzdFRyYWNlciB9IGZyb20gJy4uLy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQXBpS2V5U2hhcmUsIEtleWNoYWluIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW4nO1xuaW1wb3J0IHsgTWVtbywgV2FsbGV0VHlwZSB9IGZyb20gJy4uLy4uL3dhbGxldCc7XG5pbXBvcnQgeyBFRERTQSwgR1NoYXJlLCBTaWduU2hhcmUsIFlTaGFyZSB9IGZyb20gJy4uLy4uLy4uL2FjY291bnQtbGliL21wYy90c3MnO1xuXG5leHBvcnQgdHlwZSBUeFJlcXVlc3RWZXJzaW9uID0gJ2Z1bGwnIHwgJ2xpdGUnO1xuZXhwb3J0IGludGVyZmFjZSBIb3BQYXJhbXMge1xuICBwYXltZW50SWQ/OiBzdHJpbmc7XG4gIHVzZXJSZXFTaWc/OiBzdHJpbmc7XG4gIGdhc1ByaWNlTWF4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVJUDE1NTlGZWVPcHRpb25zIHtcbiAgZ2FzTGltaXQ/OiBudW1iZXI7XG4gIG1heEZlZVBlckdhcz86IG51bWJlcjtcbiAgbWF4UHJpb3JpdHlGZWVQZXJHYXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVlT3B0aW9uIHtcbiAgdW5pdD86ICdiYXNlVW5pdCcgfCAnY3B1JyB8ICdyYW0nO1xuICBmb3JtdWxhPzogJ2ZpeGVkJyB8ICdmZWVSYXRlJyB8ICdwZXJLQicgfCAnY3VzdG9tJyB8ICdwZXJWS0InO1xuICBmZWVUeXBlPzogJ2Jhc2UnIHwgJ21heCcgfCAndGlwJztcbiAgZ2FzTGltaXQ/OiBudW1iZXI7XG4gIGdhc1ByaWNlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuRW5hYmxlbWVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgYWRkcmVzcz86IHN0cmluZzsgLy8gU29tZSBjaGFpbnMgbGlrZSBTb2xhbmEgcmVxdWlyZSB0b2tlbnMgdG8gYmUgZW5hYmxlZCBmb3Igc3BlY2lmaWMgYWRkcmVzcy4gSWYgYWJzZW50LCB3ZSB3aWxsIGVuYWJsZSBpdCBmb3IgdGhlIHdhbGxldCdzIHJvb3QgYWRkcmVzc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVJTaGFyZUdlbmVyYXRpbmdGdW5jdGlvbiB7XG4gIChwYXJhbXM6IHsgdHhSZXF1ZXN0OiBUeFJlcXVlc3QgfSk6IFByb21pc2U8eyByU2hhcmU6IFNpZ25TaGFyZTsgc2lnbmluZ0tleVlTaGFyZTogWVNoYXJlIH0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUdTaGFyZUdlbmVyYXRpbmdGdW5jdGlvbiB7XG4gIChwYXJhbXM6IHtcbiAgICB0eFJlcXVlc3Q6IFR4UmVxdWVzdDtcbiAgICB1c2VyVG9CaXRnb1JTaGFyZTogU2lnblNoYXJlO1xuICAgIGJpdGdvVG9Vc2VyUlNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZDtcbiAgfSk6IFByb21pc2U8R1NoYXJlPjtcbn1cbmV4cG9ydCBlbnVtIFRva2VuVHlwZSB7XG4gIEVSQzcyMSA9ICdFUkM3MjEnLFxuICBFUkMxMTU1ID0gJ0VSQzExNTUnLFxuICBFUkMyMCA9ICdFUkMyMCcsXG59XG5leHBvcnQgaW50ZXJmYWNlIFRva2VuVHJhbnNmZXJSZWNpcGllbnRQYXJhbXMge1xuICB0b2tlblR5cGU6IFRva2VuVHlwZTtcbiAgdG9rZW5RdWFudGl0eTogc3RyaW5nO1xuICB0b2tlbkNvbnRyYWN0QWRkcmVzcz86IHN0cmluZztcbiAgdG9rZW5OYW1lPzogc3RyaW5nO1xuICB0b2tlbklkPzogc3RyaW5nO1xuICBkZWNpbWFsUGxhY2VzPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMge1xuICByZXFJZDogSVJlcXVlc3RUcmFjZXI7XG4gIGludGVudFR5cGU6IHN0cmluZztcbiAgc2VxdWVuY2VJZD86IHN0cmluZztcbiAgcmVjaXBpZW50cz86IHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgYW1vdW50OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdG9rZW5OYW1lPzogc3RyaW5nO1xuICAgIHRva2VuRGF0YT86IFRva2VuVHJhbnNmZXJSZWNpcGllbnRQYXJhbXM7XG4gIH1bXTtcbiAgY29tbWVudD86IHN0cmluZztcbiAgbWVtbz86IE1lbW87XG4gIHRva2VuTmFtZT86IHN0cmluZztcbiAgZW5hYmxlVG9rZW5zPzogVG9rZW5FbmFibGVtZW50W107XG4gIG5vbmNlPzogc3RyaW5nO1xuICBzZWxmU2VuZD86IGJvb2xlYW47XG4gIGZlZU9wdGlvbnM/OiBGZWVPcHRpb24gfCBFSVAxNTU5RmVlT3B0aW9ucztcbiAgaG9wUGFyYW1zPzogSG9wUGFyYW1zO1xuICBpc1Rzcz86IGJvb2xlYW47XG4gIGxvd0ZlZVR4aWQ/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEludGVudFJlY2lwaWVudCB7XG4gIGFkZHJlc3M6IHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gIH07XG4gIGFtb3VudDoge1xuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc3ltYm9sOiBzdHJpbmc7XG4gIH07XG4gIHRva2VuRGF0YT86IFRva2VuVHJhbnNmZXJSZWNpcGllbnRQYXJhbXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBvcHVsYXRlZEludGVudCB7XG4gIGludGVudFR5cGU6IHN0cmluZztcbiAgcmVjaXBpZW50cz86IEludGVudFJlY2lwaWVudFtdO1xuICBzZXF1ZW5jZUlkPzogc3RyaW5nO1xuICBjb21tZW50Pzogc3RyaW5nO1xuICBub25jZT86IHN0cmluZztcbiAgbWVtbz86IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIGVuYWJsZVRva2Vucz86IFRva2VuRW5hYmxlbWVudFtdO1xuICAvLyBFVEggJiBFVEgtbGlrZSBwYXJhbXNcbiAgc2VsZlNlbmQ/OiBib29sZWFuO1xuICBmZWVPcHRpb25zPzogRmVlT3B0aW9uIHwgRUlQMTU1OUZlZU9wdGlvbnM7XG4gIGhvcFBhcmFtcz86IEhvcFBhcmFtcztcbiAgaXNUc3M/OiBib29sZWFuO1xuICB0eGlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBUeFJlcXVlc3RTdGF0ZSA9XG4gIHwgJ3BlbmRpbmdBcHByb3ZhbCdcbiAgfCAnY2FuY2VsZWQnXG4gIHwgJ3JlamVjdGVkJ1xuICB8ICdpbml0aWFsaXplZCdcbiAgfCAncGVuZGluZ0RlbGl2ZXJ5J1xuICB8ICdkZWxpdmVyZWQnXG4gIHwgJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJ1xuICB8ICdzaWduZWQnO1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblN0YXRlID1cbiAgfCAnaW5pdGlhbGl6ZWQnXG4gIHwgJ3BlbmRpbmdTaWduYXR1cmUnXG4gIHwgJ3NpZ25lZCdcbiAgfCAnaGVsZCdcbiAgfCAnZGVsaXZlcmVkJ1xuICB8ICdpbnZhbGlkU2lnbmF0dXJlJ1xuICB8ICdyZWplY3RlZCc7XG5cbi8vIFR5cGUgdXNlZCB0byBzaWduIGEgVFNTIHRyYW5zYWN0aW9uXG5leHBvcnQgdHlwZSBTaWduYWJsZVRyYW5zYWN0aW9uID0ge1xuICAvLyB1bnNpZ25lZCB0cmFuc2FjdGlvbiBpbiBicm9hZGNhc3QgZm9ybWF0XG4gIHNlcmlhbGl6ZWRUeEhleDogc3RyaW5nO1xuICAvLyBwb3J0aW9uIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCB0byBnZW5lcmF0ZSBhIHNpZ25hdHVyZVxuICBzaWduYWJsZUhleDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVW5zaWduZWRUcmFuc2FjdGlvblRzcyA9IFNpZ25hYmxlVHJhbnNhY3Rpb24gJiB7XG4gIC8vIGRlcml2YXRpb24gcGF0aCBvZiB0aGUgc2lnbmVyXG4gIGRlcml2YXRpb25QYXRoOiBzdHJpbmc7XG4gIC8vIHRyYW5zYWN0aW9uIGZlZXNcbiAgZmVlSW5mbz86IHtcbiAgICBmZWU6IG51bWJlcjtcbiAgICBmZWVTdHJpbmc6IHN0cmluZztcbiAgfTtcbiAgY29pblNwZWNpZmljPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBhcnNlZFR4PzogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIFVuc2lnbmVkTWVzc2FnZVRzcyA9IHtcbiAgZGVyaXZhdGlvblBhdGg6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGVudW0gUmVxdWVzdFR5cGUge1xuICB0eCxcbiAgbWVzc2FnZSxcbn1cblxuZXhwb3J0IHR5cGUgVHhSZXF1ZXN0ID0ge1xuICB0eFJlcXVlc3RJZDogc3RyaW5nO1xuICB3YWxsZXRJZDogc3RyaW5nO1xuICB3YWxsZXRUeXBlOiBXYWxsZXRUeXBlO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIGVudGVycHJpc2VJZD86IHN0cmluZztcbiAgc3RhdGU6IFR4UmVxdWVzdFN0YXRlO1xuICBkYXRlOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBpbnRlbnQ6IHVua25vd247IC8vIFNob3VsZCBvdmVycmlkZSB3aXRoIHNpZyBzY2hlbWUgc3BlY2lmaWMgaW50ZW50XG4gIHBlbmRpbmdBcHByb3ZhbElkPzogc3RyaW5nO1xuICBwb2xpY2llc0NoZWNrZWQ6IGJvb2xlYW47XG4gIHNpZ25hdHVyZVNoYXJlcz86IFNpZ25hdHVyZVNoYXJlUmVjb3JkW107XG4gIHBlbmRpbmdUeEhhc2hlcz86IHN0cmluZ1tdO1xuICB0eEhhc2hlcz86IHN0cmluZ1tdO1xuICB1bnNpZ25lZE1lc3NhZ2VzPzogVW5zaWduZWRNZXNzYWdlVHNzW107XG4gIC8vIE9ubHkgYXZhaWxhYmxlIGluICdsaXRlJyB2ZXJzaW9uXG4gIHVuc2lnbmVkVHhzOiBVbnNpZ25lZFRyYW5zYWN0aW9uVHNzW107IC8vIFNob3VsZCBvdmVycmlkZSB3aXRoIGJsb2NrY2hhaW4gLyBzaWcgc2NoZW1lIHNwZWNpZmljIHVuc2lnbmVkIHR4XG4gIC8vIE9ubHkgYXZhaWxhYmxlIGluICdmdWxsJyB2ZXJzaW9uXG4gIHRyYW5zYWN0aW9uczoge1xuICAgIHN0YXRlOiBUcmFuc2FjdGlvblN0YXRlO1xuICAgIHVuc2lnbmVkVHg6IFVuc2lnbmVkVHJhbnNhY3Rpb25Uc3M7IC8vIFNob3VsZCBvdmVycmlkZSB3aXRoIGJsb2NrY2hhaW4gLyBzaWcgc3BlY2lmaWMgdW5zaWduZWQgdHhcbiAgICBzaWduYXR1cmVTaGFyZXM6IFNpZ25hdHVyZVNoYXJlUmVjb3JkW107XG4gIH1bXTtcbiAgYXBpVmVyc2lvbj86IFR4UmVxdWVzdFZlcnNpb247XG4gIGxhdGVzdDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBlbnVtIFNpZ25hdHVyZVNoYXJlVHlwZSB7XG4gIFVTRVIgPSAndXNlcicsXG4gIEJBQ0tVUCA9ICdiYWNrdXAnLFxuICBCSVRHTyA9ICdiaXRnbycsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGU7XG4gIHRvOiBTaWduYXR1cmVTaGFyZVR5cGU7XG4gIHNoYXJlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFRTU1BhcmFtcyA9IHtcbiAgdHhSZXF1ZXN0OiBzdHJpbmcgfCBUeFJlcXVlc3Q7IC8vIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgVHhSZXF1ZXN0XG4gIHBydjogc3RyaW5nO1xuICByZXFJZDogSVJlcXVlc3RUcmFjZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEJpdGdvSGVsZEJhY2t1cEtleVNoYXJlIHtcbiAgY29tbW9uS2V5Y2hhaW4/OiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGtleVNoYXJlczogQXBpS2V5U2hhcmVbXTtcbn1cblxuLyoqXG4gKiBDb21tb24gSW50ZXJmYWNlIGZvciBpbXBsZW1lbnRpbmcgc2lnbmF0dXJlIHNjaGVtZSBzcGVjaWZpY1xuICogdXRpbCBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVHNzVXRpbHM8S2V5U2hhcmUgPSBFRERTQS5LZXlTaGFyZT4ge1xuICBjcmVhdGVCaXRnb0hlbGRCYWNrdXBLZXlTaGFyZSh1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+KTogUHJvbWlzZTxCaXRnb0hlbGRCYWNrdXBLZXlTaGFyZT47XG4gIGZpbmFsaXplQml0Z29IZWxkQmFja3VwS2V5U2hhcmUoXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICBjb21tb25LZXljaGFpbjogc3RyaW5nLFxuICAgIHVzZXJLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW5cbiAgKTogUHJvbWlzZTxCaXRnb0hlbGRCYWNrdXBLZXlTaGFyZT47XG4gIGNyZWF0ZVVzZXJLZXljaGFpbihcbiAgICB1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluLFxuICAgIHBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU6IHN0cmluZyxcbiAgICByZWNpcGllbnRJbmRleD86IG51bWJlclxuICApOiBQcm9taXNlPEtleWNoYWluPjtcbiAgY3JlYXRlQmFja3VwS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj47XG4gIGNyZWF0ZUJpdGdvS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBlbnRlcnByaXNlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj47XG4gIGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZT86IHN0cmluZztcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPEtleWNoYWluc1RyaXBsZXQ+O1xuICBzaWduVHhSZXF1ZXN0KHBhcmFtczogeyB0eFJlcXVlc3Q6IHN0cmluZyB8IFR4UmVxdWVzdDsgcHJ2OiBzdHJpbmc7IHJlcUlkOiBJUmVxdWVzdFRyYWNlciB9KTogUHJvbWlzZTxUeFJlcXVlc3Q+O1xuICBzaWduVHhSZXF1ZXN0Rm9yTWVzc2FnZShwYXJhbXM6IFRTU1BhcmFtcyk6IFByb21pc2U8VHhSZXF1ZXN0PjtcbiAgc2lnblVzaW5nRXh0ZXJuYWxTaWduZXIoXG4gICAgdHhSZXF1ZXN0OiBzdHJpbmcgfCBUeFJlcXVlc3QsXG4gICAgZXh0ZXJuYWxTaWduZXJSU2hhcmVHZW5lcmF0b3I6IEN1c3RvbVJTaGFyZUdlbmVyYXRpbmdGdW5jdGlvbixcbiAgICBleHRlcm5hbFNpZ25lckdTaGFyZUdlbmVyYXRvcjogQ3VzdG9tR1NoYXJlR2VuZXJhdGluZ0Z1bmN0aW9uXG4gICk6IFByb21pc2U8VHhSZXF1ZXN0PjtcbiAgY3JlYXRlUlNoYXJlRnJvbVR4UmVxdWVzdChwYXJhbXM6IHtcbiAgICB0eFJlcXVlc3Q6IFR4UmVxdWVzdDtcbiAgICBwcnY6IHN0cmluZztcbiAgfSk6IFByb21pc2U8eyByU2hhcmU6IFNpZ25TaGFyZTsgc2lnbmluZ0tleVlTaGFyZTogWVNoYXJlIH0+O1xuICBjcmVhdGVHU2hhcmVGcm9tVHhSZXF1ZXN0KHBhcmFtczoge1xuICAgIHR4UmVxdWVzdDogVHhSZXF1ZXN0O1xuICAgIHBydjogc3RyaW5nO1xuICAgIGJpdGdvVG9Vc2VyUlNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZDtcbiAgICB1c2VyVG9CaXRnb1JTaGFyZTogU2lnblNoYXJlO1xuICB9KTogUHJvbWlzZTxHU2hhcmU+O1xuICBwcmVidWlsZFR4V2l0aEludGVudChcbiAgICBwYXJhbXM6IFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyxcbiAgICBhcGlWZXJzaW9uPzogVHhSZXF1ZXN0VmVyc2lvbixcbiAgICBwcmV2aWV3PzogYm9vbGVhblxuICApOiBQcm9taXNlPFR4UmVxdWVzdD47XG4gIGRlbGV0ZVNpZ25hdHVyZVNoYXJlcyh0eFJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZFtdPjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgc2VuZFR4UmVxdWVzdCh0eFJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICByZWNyZWF0ZVR4UmVxdWVzdCh0eFJlcXVlc3RJZDogc3RyaW5nLCBkZWNyeXB0ZWRQcnY6IHN0cmluZywgcmVxSWQ6IElSZXF1ZXN0VHJhY2VyKTogUHJvbWlzZTxUeFJlcXVlc3Q+O1xuICBnZXRUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8VHhSZXF1ZXN0Pjtcbn1cbiJdfQ==
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
import * as openpgp from 'openpgp';
|
|
1
2
|
import { SerializedKeyPair } from 'openpgp';
|
|
2
3
|
import { Keychain } from '../../../keychain';
|
|
3
|
-
import * as openpgp from 'openpgp';
|
|
4
4
|
import { IBaseCoin, KeychainsTriplet } from '../../../baseCoin';
|
|
5
5
|
import baseTSSUtils from '../baseTSSUtils';
|
|
6
6
|
import { KeyShare } from './types';
|
|
7
|
-
import { TxRequest } from '../baseTypes';
|
|
8
|
-
import { IRequestTracer } from '../../../../api';
|
|
7
|
+
import { BitgoHeldBackupKeyShare, TSSParams, TxRequest } from '../baseTypes';
|
|
9
8
|
import { BitGoBase } from '../../../bitgoBase';
|
|
10
9
|
import { IWallet } from '../../../wallet';
|
|
11
10
|
/** @inheritdoc */
|
|
@@ -14,6 +13,14 @@ export declare class EcdsaUtils extends baseTSSUtils<KeyShare> {
|
|
|
14
13
|
constructor(bitgo: BitGoBase, baseCoin: IBaseCoin, wallet?: IWallet);
|
|
15
14
|
private setBitgoGpgPubKey;
|
|
16
15
|
getBitgoPublicGpgKey(): Promise<openpgp.Key>;
|
|
16
|
+
/**
|
|
17
|
+
* Gets the common public key from commonKeychain.
|
|
18
|
+
*
|
|
19
|
+
* @param {String} commonKeychain common key chain between n parties
|
|
20
|
+
* @returns {string} encoded public key
|
|
21
|
+
*/
|
|
22
|
+
static getPublicKeyFromCommonKeychain(commonKeychain: string): string;
|
|
23
|
+
finalizeBitgoHeldBackupKeyShare(keyId: string, commonKeychain: string, userKeyShare: KeyShare, bitgoKeychain: Keychain): Promise<BitgoHeldBackupKeyShare>;
|
|
17
24
|
/** @inheritdoc */
|
|
18
25
|
createKeychains(params: {
|
|
19
26
|
passphrase: string;
|
|
@@ -27,16 +34,28 @@ export declare class EcdsaUtils extends baseTSSUtils<KeyShare> {
|
|
|
27
34
|
/** @inheritdoc */
|
|
28
35
|
createParticipantKeychain(userGpgKey: openpgp.SerializedKeyPair<string>, recipientIndex: number, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase: string, originalPasscodeEncryptionCode?: string): Promise<Keychain>;
|
|
29
36
|
/**
|
|
30
|
-
*
|
|
37
|
+
* Gets signing key, txRequestResolved and txRequestId
|
|
31
38
|
* @param {string | TxRequest} params.txRequest - transaction request object or id
|
|
32
39
|
* @param {string} params.prv - decrypted private key
|
|
33
40
|
* @param { string} params.reqId - request id
|
|
41
|
+
* @returns {Promise<ECDSASigningRequestBaseResult>}
|
|
42
|
+
*/
|
|
43
|
+
private signRequestBase;
|
|
44
|
+
/**
|
|
45
|
+
* Signs the transaction associated to the transaction request.
|
|
46
|
+
* @param {string | TxRequest} params.txRequest - transaction request object or id
|
|
47
|
+
* @param {string} params.prv - decrypted private key
|
|
48
|
+
* @param {string} params.reqId - request id
|
|
49
|
+
* @returns {Promise<TxRequest>} fully signed TxRequest object
|
|
50
|
+
*/
|
|
51
|
+
signTxRequest(params: TSSParams): Promise<TxRequest>;
|
|
52
|
+
/**
|
|
53
|
+
* Signs the message associated to the transaction request.
|
|
54
|
+
* @param {string | TxRequest} params.txRequest - transaction request object or id
|
|
55
|
+
* @param {string} params.prv - decrypted private key
|
|
56
|
+
* @param {string} params.reqId - request id
|
|
34
57
|
* @returns {Promise<TxRequest>} fully signed TxRequest object
|
|
35
58
|
*/
|
|
36
|
-
|
|
37
|
-
txRequest: string | TxRequest;
|
|
38
|
-
prv: string;
|
|
39
|
-
reqId: IRequestTracer;
|
|
40
|
-
}): Promise<TxRequest>;
|
|
59
|
+
signTxRequestForMessage(params: TSSParams): Promise<TxRequest>;
|
|
41
60
|
}
|
|
42
61
|
//# sourceMappingURL=ecdsa.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAsB,QAAQ,EAAW,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAqB,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAe,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1F,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM1C,kBAAkB;AAClB,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;IACpD,OAAO,CAAC,iBAAiB,CAAsC;gBAEnD,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO;YAKrD,iBAAiB;IAIzB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAYlD;;;;;OAKG;IACH,MAAM,CAAC,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAQ/D,+BAA+B,CACnC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,QAAQ,EACtB,aAAa,EAAE,QAAQ,GACtB,OAAO,CAAC,uBAAuB,CAAC;IAwBnC,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,8BAA8B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrD,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsC7B,kBAAkB,CAChB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,8BAA8B,EAAE,MAAM,GACrC,OAAO,CAAC,QAAQ,CAAC;IAYpB,oBAAoB,CAClB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC;IAIpB,kBAAkB;IACZ,mBAAmB,CACvB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAmCpB,kBAAkB;IACZ,yBAAyB,CAC7B,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,8BAA8B,CAAC,EAAE,MAAM,GACtC,OAAO,CAAC,QAAQ,CAAC;IA6EpB;;;;;;OAMG;YACW,eAAe;IA0G7B;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAI1D;;;;;;OAMG;IACG,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;CAGrE"}
|
|
@@ -23,14 +23,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.EcdsaUtils = void 0;
|
|
26
|
+
const bs58 = __importStar(require("bs58"));
|
|
26
27
|
const tss_1 = require("../../../../account-lib/mpc/tss");
|
|
27
|
-
const
|
|
28
|
+
const util_1 = require("../../../../account-lib/mpc/util");
|
|
28
29
|
const openpgp = __importStar(require("openpgp"));
|
|
29
|
-
const
|
|
30
|
+
const ecdsa_1 = __importDefault(require("../../../tss/ecdsa"));
|
|
30
31
|
const baseTSSUtils_1 = __importDefault(require("../baseTSSUtils"));
|
|
32
|
+
const baseTypes_1 = require("../baseTypes");
|
|
31
33
|
const common_1 = require("../../../tss/common");
|
|
32
34
|
const types_1 = require("../../../tss/ecdsa/types");
|
|
33
35
|
const opengpgUtils_1 = require("../../opengpgUtils");
|
|
36
|
+
const assert_1 = __importDefault(require("assert"));
|
|
37
|
+
const utxo_lib_1 = require("@bitgo/utxo-lib");
|
|
34
38
|
const encryptNShare = ecdsa_1.default.encryptNShare;
|
|
35
39
|
/** @inheritdoc */
|
|
36
40
|
class EcdsaUtils extends baseTSSUtils_1.default {
|
|
@@ -52,6 +56,41 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
52
56
|
}
|
|
53
57
|
return this.bitgoPublicGpgKey;
|
|
54
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Gets the common public key from commonKeychain.
|
|
61
|
+
*
|
|
62
|
+
* @param {String} commonKeychain common key chain between n parties
|
|
63
|
+
* @returns {string} encoded public key
|
|
64
|
+
*/
|
|
65
|
+
static getPublicKeyFromCommonKeychain(commonKeychain) {
|
|
66
|
+
if (commonKeychain.length !== 130) {
|
|
67
|
+
throw new Error(`Invalid commonKeychain length, expected 130, got ${commonKeychain.length}`);
|
|
68
|
+
}
|
|
69
|
+
const commonPubHexStr = commonKeychain.slice(0, 66);
|
|
70
|
+
return bs58.encode(Buffer.from(commonPubHexStr, 'hex'));
|
|
71
|
+
}
|
|
72
|
+
async finalizeBitgoHeldBackupKeyShare(keyId, commonKeychain, userKeyShare, bitgoKeychain) {
|
|
73
|
+
var _a;
|
|
74
|
+
const bitgoGpgKey = await this.getBitgoPublicGpgKey();
|
|
75
|
+
const encryptedUserToBackupShare = await encryptNShare(userKeyShare, 2, bitgoGpgKey.armor());
|
|
76
|
+
const bitgoToBackupKeyShare = (_a = bitgoKeychain.keyShares) === null || _a === void 0 ? void 0 : _a.find((keyShare) => keyShare.from === 'bitgo' && keyShare.to === 'backup');
|
|
77
|
+
assert_1.default(bitgoToBackupKeyShare);
|
|
78
|
+
return await this.bitgo
|
|
79
|
+
.put(this.baseCoin.url(`/krs/backupkeys/${keyId}`))
|
|
80
|
+
.send({
|
|
81
|
+
commonKeychain,
|
|
82
|
+
keyShares: [
|
|
83
|
+
{
|
|
84
|
+
from: 'user',
|
|
85
|
+
to: 'backup',
|
|
86
|
+
publicShare: userKeyShare.nShares[2].y,
|
|
87
|
+
privateShare: encryptedUserToBackupShare.encryptedPrivateShare,
|
|
88
|
+
},
|
|
89
|
+
bitgoToBackupKeyShare,
|
|
90
|
+
],
|
|
91
|
+
})
|
|
92
|
+
.result();
|
|
93
|
+
}
|
|
55
94
|
/** @inheritdoc */
|
|
56
95
|
async createKeychains(params) {
|
|
57
96
|
const MPC = new tss_1.Ecdsa();
|
|
@@ -59,17 +98,7 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
59
98
|
const n = 3;
|
|
60
99
|
const userKeyShare = await MPC.keyShare(1, m, n);
|
|
61
100
|
const backupKeyShare = await MPC.keyShare(2, m, n);
|
|
62
|
-
const
|
|
63
|
-
openpgp.config.rejectCurves = new Set();
|
|
64
|
-
const userGpgKey = await openpgp.generateKey({
|
|
65
|
-
userIDs: [
|
|
66
|
-
{
|
|
67
|
-
name: randomHexString,
|
|
68
|
-
email: `user-${randomHexString}@${randomHexString}.com`,
|
|
69
|
-
},
|
|
70
|
-
],
|
|
71
|
-
curve: 'secp256k1',
|
|
72
|
-
});
|
|
101
|
+
const userGpgKey = await opengpgUtils_1.generateGPGKeyPair('secp256k1');
|
|
73
102
|
const bitgoKeychain = await this.createBitgoKeychain(userGpgKey, userKeyShare, backupKeyShare, params.enterprise);
|
|
74
103
|
const userKeychainPromise = this.createParticipantKeychain(userGpgKey, 1, userKeyShare, backupKeyShare, bitgoKeychain, params.passphrase, params.originalPasscodeEncryptionCode);
|
|
75
104
|
const backupKeychainPromise = this.createParticipantKeychain(userGpgKey, 2, userKeyShare, backupKeyShare, bitgoKeychain, params.passphrase);
|
|
@@ -90,8 +119,8 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
90
119
|
async createBitgoKeychain(userGpgKey, userKeyShare, backupKeyShare, enterprise) {
|
|
91
120
|
const bitgoPublicGpgKey = await this.getBitgoPublicGpgKey();
|
|
92
121
|
const recipientIndex = 3;
|
|
93
|
-
const userToBitgoShare = await encryptNShare(userKeyShare, recipientIndex, bitgoPublicGpgKey.armor()
|
|
94
|
-
const backupToBitgoShare = await encryptNShare(backupKeyShare, recipientIndex, bitgoPublicGpgKey.armor()
|
|
122
|
+
const userToBitgoShare = await encryptNShare(userKeyShare, recipientIndex, bitgoPublicGpgKey.armor());
|
|
123
|
+
const backupToBitgoShare = await encryptNShare(backupKeyShare, recipientIndex, bitgoPublicGpgKey.armor());
|
|
95
124
|
const createBitGoMPCParams = {
|
|
96
125
|
keyType: 'tss',
|
|
97
126
|
source: 'bitgo',
|
|
@@ -101,12 +130,14 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
101
130
|
to: 'bitgo',
|
|
102
131
|
publicShare: userToBitgoShare.publicShare,
|
|
103
132
|
privateShare: userToBitgoShare.encryptedPrivateShare,
|
|
133
|
+
n: userToBitgoShare.n,
|
|
104
134
|
},
|
|
105
135
|
{
|
|
106
136
|
from: 'backup',
|
|
107
137
|
to: 'bitgo',
|
|
108
138
|
publicShare: backupToBitgoShare.publicShare,
|
|
109
139
|
privateShare: backupToBitgoShare.encryptedPrivateShare,
|
|
140
|
+
n: backupToBitgoShare.n,
|
|
110
141
|
},
|
|
111
142
|
],
|
|
112
143
|
userGPGPublicKey: userGpgKey.publicKey,
|
|
@@ -146,7 +177,7 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
146
177
|
throw new Error('Missing BitGo to User key share');
|
|
147
178
|
}
|
|
148
179
|
const bitgoPublicGpgKey = await this.getBitgoPublicGpgKey();
|
|
149
|
-
const backupToUserShare = await encryptNShare(otherShare, recipientIndex, userGpgKey.publicKey
|
|
180
|
+
const backupToUserShare = await encryptNShare(otherShare, recipientIndex, userGpgKey.publicKey);
|
|
150
181
|
const encryptedNShares = [
|
|
151
182
|
{
|
|
152
183
|
nShare: backupToUserShare,
|
|
@@ -159,9 +190,11 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
159
190
|
j: 3,
|
|
160
191
|
publicShare: bitGoToUserShare.publicShare,
|
|
161
192
|
encryptedPrivateShare: bitGoToUserShare.privateShare,
|
|
193
|
+
n: bitGoToUserShare.n,
|
|
162
194
|
},
|
|
163
195
|
recipientPrivateArmor: userGpgKey.privateKey,
|
|
164
196
|
senderPublicArmor: bitgoPublicGpgKey.armor(),
|
|
197
|
+
isbs58Encoded: false,
|
|
165
198
|
},
|
|
166
199
|
];
|
|
167
200
|
const userCombinedKey = await ecdsa_1.default.createCombinedKey(keyShare, encryptedNShares, bitgoKeychain.commonKeychain);
|
|
@@ -182,13 +215,14 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
182
215
|
return result;
|
|
183
216
|
}
|
|
184
217
|
/**
|
|
185
|
-
*
|
|
218
|
+
* Gets signing key, txRequestResolved and txRequestId
|
|
186
219
|
* @param {string | TxRequest} params.txRequest - transaction request object or id
|
|
187
220
|
* @param {string} params.prv - decrypted private key
|
|
188
221
|
* @param { string} params.reqId - request id
|
|
189
|
-
* @returns {Promise<
|
|
222
|
+
* @returns {Promise<ECDSASigningRequestBaseResult>}
|
|
190
223
|
*/
|
|
191
|
-
async
|
|
224
|
+
async signRequestBase(params, requestType) {
|
|
225
|
+
var _a;
|
|
192
226
|
let txRequestResolved;
|
|
193
227
|
let txRequestId;
|
|
194
228
|
const { txRequest, prv } = params;
|
|
@@ -212,16 +246,67 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
212
246
|
userSigningMaterial.bitgoNShare,
|
|
213
247
|
userSigningMaterial.backupNShare,
|
|
214
248
|
]);
|
|
249
|
+
const threshold = 2;
|
|
250
|
+
const numShares = 3;
|
|
251
|
+
const uShares = tss_1.Ecdsa.shamir.split(BigInt(userSigningMaterial.pShare.uu), threshold, numShares);
|
|
215
252
|
const userSignShare = await ecdsa_1.default.createUserSignShare(signingKey.xShare, signingKey.yShares[3]);
|
|
216
|
-
|
|
253
|
+
let u = util_1.bigIntToBufferBE(uShares[3], 32).toString('hex');
|
|
254
|
+
while (u.length < 64) {
|
|
255
|
+
u = '0' + u;
|
|
256
|
+
}
|
|
257
|
+
let chaincode = userSigningMaterial.bitgoNShare.chaincode;
|
|
258
|
+
while (chaincode.length < 64) {
|
|
259
|
+
chaincode = '0' + chaincode;
|
|
260
|
+
}
|
|
261
|
+
const signerShare = utxo_lib_1.bip32.fromPrivateKey(Buffer.from(u, 'hex'), Buffer.from(chaincode, 'hex')).toBase58();
|
|
262
|
+
const bitgoGpgKey = await opengpgUtils_1.getBitgoGpgPubKey(this.bitgo);
|
|
263
|
+
const encryptedSignerShare = (await openpgp.encrypt({
|
|
264
|
+
message: await openpgp.createMessage({
|
|
265
|
+
text: signerShare,
|
|
266
|
+
}),
|
|
267
|
+
config: {
|
|
268
|
+
rejectCurves: new Set(),
|
|
269
|
+
},
|
|
270
|
+
encryptionKeys: [bitgoGpgKey],
|
|
271
|
+
}));
|
|
272
|
+
const bitgoToUserAShare = (await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, requestType, types_1.SendShareType.KShare, userSignShare.kShare, encryptedSignerShare));
|
|
217
273
|
const userGammaAndMuShares = await ecdsa_1.default.createUserGammaAndMuShare(userSignShare.wShare, bitgoToUserAShare);
|
|
218
|
-
const bitgoToUserDShare = (await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, types_1.SendShareType.MUShare, userGammaAndMuShares.muShare));
|
|
219
274
|
const userOmicronAndDeltaShare = await ecdsa_1.default.createUserOmicronAndDeltaShare(userGammaAndMuShares.gShare);
|
|
220
|
-
const
|
|
275
|
+
const muShare = userGammaAndMuShares.muShare;
|
|
276
|
+
const dShare = userOmicronAndDeltaShare.dShare;
|
|
277
|
+
const bitgoToUserDShare = (await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, requestType, types_1.SendShareType.MUShare, { muShare, dShare, i: muShare.i }));
|
|
278
|
+
let signablePayload;
|
|
279
|
+
if (requestType === baseTypes_1.RequestType.tx) {
|
|
280
|
+
signablePayload = Buffer.from(txRequestResolved.transactions[0].unsignedTx.signableHex, 'hex');
|
|
281
|
+
}
|
|
282
|
+
else if (requestType === baseTypes_1.RequestType.message) {
|
|
283
|
+
assert_1.default((_a = txRequestResolved.unsignedMessages) === null || _a === void 0 ? void 0 : _a[0]);
|
|
284
|
+
signablePayload = Buffer.from(txRequestResolved.unsignedMessages[0].message, 'hex');
|
|
285
|
+
}
|
|
221
286
|
const userSShare = await ecdsa_1.default.createUserSignatureShare(userOmicronAndDeltaShare.oShare, bitgoToUserDShare, signablePayload);
|
|
222
|
-
await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, types_1.SendShareType.SShare, userSShare
|
|
287
|
+
await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, requestType, types_1.SendShareType.SShare, userSShare);
|
|
223
288
|
return await common_1.getTxRequest(this.bitgo, this.wallet.id(), txRequestId);
|
|
224
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* Signs the transaction associated to the transaction request.
|
|
292
|
+
* @param {string | TxRequest} params.txRequest - transaction request object or id
|
|
293
|
+
* @param {string} params.prv - decrypted private key
|
|
294
|
+
* @param {string} params.reqId - request id
|
|
295
|
+
* @returns {Promise<TxRequest>} fully signed TxRequest object
|
|
296
|
+
*/
|
|
297
|
+
async signTxRequest(params) {
|
|
298
|
+
return this.signRequestBase(params, baseTypes_1.RequestType.tx);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Signs the message associated to the transaction request.
|
|
302
|
+
* @param {string | TxRequest} params.txRequest - transaction request object or id
|
|
303
|
+
* @param {string} params.prv - decrypted private key
|
|
304
|
+
* @param {string} params.reqId - request id
|
|
305
|
+
* @returns {Promise<TxRequest>} fully signed TxRequest object
|
|
306
|
+
*/
|
|
307
|
+
async signTxRequestForMessage(params) {
|
|
308
|
+
return this.signRequestBase(params, baseTypes_1.RequestType.message);
|
|
309
|
+
}
|
|
225
310
|
}
|
|
226
311
|
exports.EcdsaUtils = EcdsaUtils;
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBK0Q7QUFHL0QsK0RBQW9FO0FBQ3BFLGlEQUFtQztBQUVuQywrQ0FBaUM7QUFDakMsbUVBQTJDO0FBSTNDLGdEQUFtRDtBQUNuRCxvREFBeUU7QUFDekUscURBQXVEO0FBSXZELE1BQU0sYUFBYSxHQUFHLGVBQVksQ0FBQyxhQUFhLENBQUM7QUFFakQsa0JBQWtCO0FBQ2xCLE1BQWEsVUFBVyxTQUFRLHNCQUFzQjtJQUdwRCxZQUFZLEtBQWdCLEVBQUUsUUFBbUIsRUFBRSxNQUFnQjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUh6QixzQkFBaUIsR0FBNEIsU0FBUyxDQUFDO1FBSTdELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUs7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sZ0NBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixnQ0FBZ0M7WUFDaEMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQzthQUNsRDtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixLQUFLLENBQUMsZUFBZSxDQUFDLE1BSXJCO1FBQ0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFLLEVBQUUsQ0FBQztRQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFWixNQUFNLFlBQVksR0FBRyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLGNBQWMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVuRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXhDLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUMzQyxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLEtBQUssRUFBRSxRQUFRLGVBQWUsSUFBSSxlQUFlLE1BQU07aUJBQ3hEO2FBQ0Y7WUFDRCxLQUFLLEVBQUUsV0FBVztTQUNuQixDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEgsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQ3hELFVBQVUsRUFDVixDQUFDLEVBQ0QsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2IsTUFBTSxDQUFDLFVBQVUsRUFDakIsTUFBTSxDQUFDLDhCQUE4QixDQUN0QyxDQUFDO1FBQ0YsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQzFELFVBQVUsRUFDVixDQUFDLEVBQ0QsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2IsTUFBTSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQztRQUVGLE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBRXZHLE9BQU87WUFDTCxZQUFZO1lBQ1osY0FBYztZQUNkLGFBQWE7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUNoQixVQUFxQyxFQUNyQyxZQUFzQixFQUN0QixjQUF3QixFQUN4QixhQUF1QixFQUN2QixVQUFrQixFQUNsQiw4QkFBc0M7UUFFdEMsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQ25DLFVBQVUsRUFDVixDQUFDLEVBQ0QsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2IsVUFBVSxFQUNWLDhCQUE4QixDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUNsQixVQUFxQyxFQUNyQyxZQUFzQixFQUN0QixjQUF3QixFQUN4QixhQUF1QixFQUN2QixVQUFrQjtRQUVsQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixVQUFxQyxFQUNyQyxZQUFzQixFQUN0QixjQUF3QixFQUN4QixVQUFtQjtRQUVuQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxhQUFhLENBQzFDLFlBQVksRUFDWixjQUFjLEVBQ2QsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQ3pCLFVBQVUsQ0FBQyxVQUFVLENBQ3RCLENBQUM7UUFFRixNQUFNLGtCQUFrQixHQUFHLE1BQU0sYUFBYSxDQUM1QyxjQUFjLEVBQ2QsY0FBYyxFQUNkLGlCQUFpQixDQUFDLEtBQUssRUFBRSxFQUN6QixVQUFVLENBQUMsVUFBVSxDQUN0QixDQUFDO1FBRUYsTUFBTSxvQkFBb0IsR0FBdUI7WUFDL0MsT0FBTyxFQUFFLEtBQWdCO1lBQ3pCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsU0FBUyxFQUFFO2dCQUNUO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLEVBQUUsRUFBRSxPQUFPO29CQUNYLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXO29CQUN6QyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMscUJBQXFCO2lCQUNyRDtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxFQUFFLEVBQUUsT0FBTztvQkFDWCxXQUFXLEVBQUUsa0JBQWtCLENBQUMsV0FBVztvQkFDM0MsWUFBWSxFQUFFLGtCQUFrQixDQUFDLHFCQUFxQjtpQkFDdkQ7YUFDRjtZQUNELGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxTQUFTO1lBQ3RDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxTQUFTO1lBQ3hDLFVBQVUsRUFBRSxVQUFVO1NBQ3ZCLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUUsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixLQUFLLENBQUMseUJBQXlCLENBQzdCLFVBQTZDLEVBQzdDLGNBQXNCLEVBQ3RCLFlBQXNCLEVBQ3RCLGNBQXdCLEVBQ3hCLGFBQXVCLEVBQ3ZCLFVBQWtCLEVBQ2xCLDhCQUF1QztRQUV2QyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUU7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7U0FDOUU7UUFFRCxJQUFJLElBQVksQ0FBQztRQUNqQixJQUFJLFFBQWtCLENBQUM7UUFDdkIsSUFBSSxVQUFvQixDQUFDO1FBQ3pCLElBQUksY0FBYyxLQUFLLENBQUMsRUFBRTtZQUN4QixRQUFRLEdBQUcsWUFBWSxDQUFDO1lBQ3hCLFVBQVUsR0FBRyxjQUFjLENBQUM7WUFDNUIsSUFBSSxHQUFHLE1BQU0sQ0FBQztTQUNmO2FBQU0sSUFBSSxjQUFjLEtBQUssQ0FBQyxFQUFFO1lBQy9CLFFBQVEsR0FBRyxjQUFjLENBQUM7WUFDMUIsVUFBVSxHQUFHLFlBQVksQ0FBQztZQUMxQixJQUFJLEdBQUcsUUFBUSxDQUFDO1NBQ2pCO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDOUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUNwRDtRQUVELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sYUFBYSxDQUMzQyxVQUFVLEVBQ1YsY0FBYyxFQUNkLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLFVBQVUsQ0FBQyxVQUFVLENBQ3RCLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUF3QjtZQUM1QztnQkFDRSxNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixxQkFBcUIsRUFBRSxVQUFVLENBQUMsVUFBVTtnQkFDNUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLFNBQVM7YUFDeEM7WUFDRDtnQkFDRSxNQUFNLEVBQUU7b0JBQ04sQ0FBQyxFQUFFLGNBQWM7b0JBQ2pCLENBQUMsRUFBRSxDQUFDO29CQUNKLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXO29CQUN6QyxxQkFBcUIsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZO2lCQUNyRDtnQkFDRCxxQkFBcUIsRUFBRSxVQUFVLENBQUMsVUFBVTtnQkFDNUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxFQUFFO2FBQzdDO1NBQ0YsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLE1BQU0sZUFBWSxDQUFDLGlCQUFpQixDQUMxRCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLGFBQWEsQ0FBQyxjQUFjLENBQzdCLENBQUM7UUFFRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1RCxNQUFNLGtCQUFrQixHQUFHO1lBQ3pCLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLEtBQWdCO1lBQ3pCLGNBQWMsRUFBRSxhQUFhLENBQUMsY0FBYztZQUM1QyxHQUFHLEVBQUUsR0FBRztZQUNSLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsUUFBUSxFQUFFLFVBQVU7YUFDckIsQ0FBQztZQUNGLDhCQUE4QjtTQUMvQixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FDVixjQUFjLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxTQUFTLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsTUFJbkI7UUFDQyxJQUFJLGlCQUE0QixDQUFDO1FBQ2pDLElBQUksV0FBbUIsQ0FBQztRQUV4QixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUVsQyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUNqQyxpQkFBaUIsR0FBRyxNQUFNLHFCQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2hGLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7U0FDN0M7YUFBTTtZQUNMLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztZQUM5QixXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztTQUNyQztRQUVELE1BQU0sbUJBQW1CLEdBQXFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUUsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUM1RDtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksV0FBSyxFQUFFLENBQUM7UUFDeEIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUU7WUFDNUQsbUJBQW1CLENBQUMsV0FBVztZQUMvQixtQkFBbUIsQ0FBQyxZQUFZO1NBQ2pDLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUFHLE1BQU0sZUFBWSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZHLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFNLGVBQVksQ0FBQyxnQkFBZ0IsQ0FDNUQsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUNoQixXQUFXLEVBQ1gscUJBQWEsQ0FBQyxNQUFNLEVBQ3BCLGFBQWEsQ0FBQyxNQUFNLENBQ3JCLENBQVcsQ0FBQztRQUViLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxlQUFZLENBQUMseUJBQXlCLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRW5ILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFNLGVBQVksQ0FBQyxnQkFBZ0IsQ0FDNUQsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUNoQixXQUFXLEVBQ1gscUJBQWEsQ0FBQyxPQUFPLEVBQ3JCLG9CQUFvQixDQUFDLE9BQXdCLENBQzlDLENBQVcsQ0FBQztRQUViLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxlQUFZLENBQUMsOEJBQThCLENBQ2hGLG9CQUFvQixDQUFDLE1BQXNCLENBQzVDLENBQUM7UUFFRixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekYsTUFBTSxVQUFVLEdBQUcsTUFBTSxlQUFZLENBQUMsd0JBQXdCLENBQzVELHdCQUF3QixDQUFDLE1BQU0sRUFDL0IsaUJBQWlCLEVBQ2pCLGVBQWUsQ0FDaEIsQ0FBQztRQUVGLE1BQU0sZUFBWSxDQUFDLGdCQUFnQixDQUNqQyxJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQ2hCLFdBQVcsRUFDWCxxQkFBYSxDQUFDLE1BQU0sRUFDcEIsVUFBVSxFQUNWLHdCQUF3QixDQUFDLE1BQU0sQ0FDaEMsQ0FBQztRQUNGLE9BQU8sTUFBTSxxQkFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0Y7QUFyVUQsZ0NBcVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRUNEU0EsIEVjZHNhIH0gZnJvbSAnLi4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQgeyBTZXJpYWxpemVkS2V5UGFpciB9IGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgQWRkS2V5Y2hhaW5PcHRpb25zLCBLZXljaGFpbiwgS2V5VHlwZSB9IGZyb20gJy4uLy4uLy4uL2tleWNoYWluJztcbmltcG9ydCBFQ0RTQU1ldGhvZHMsIHsgRUNEU0FNZXRob2RUeXBlcyB9IGZyb20gJy4uLy4uLy4uL3Rzcy9lY2RzYSc7XG5pbXBvcnQgKiBhcyBvcGVucGdwIGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgSUJhc2VDb2luLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgYmFzZVRTU1V0aWxzIGZyb20gJy4uL2Jhc2VUU1NVdGlscyc7XG5pbXBvcnQgeyBEZWNyeXB0YWJsZU5TaGFyZSwgS2V5U2hhcmUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFR4UmVxdWVzdCB9IGZyb20gJy4uL2Jhc2VUeXBlcyc7XG5pbXBvcnQgeyBJUmVxdWVzdFRyYWNlciB9IGZyb20gJy4uLy4uLy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBnZXRUeFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi90c3MvY29tbW9uJztcbmltcG9ydCB7IEFTaGFyZSwgRFNoYXJlLCBTZW5kU2hhcmVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IGdldEJpdGdvR3BnUHViS2V5IH0gZnJvbSAnLi4vLi4vb3BlbmdwZ1V0aWxzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uLy4uLy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vLi4vLi4vd2FsbGV0JztcblxuY29uc3QgZW5jcnlwdE5TaGFyZSA9IEVDRFNBTWV0aG9kcy5lbmNyeXB0TlNoYXJlO1xuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBjbGFzcyBFY2RzYVV0aWxzIGV4dGVuZHMgYmFzZVRTU1V0aWxzPEtleVNoYXJlPiB7XG4gIHByaXZhdGUgYml0Z29QdWJsaWNHcGdLZXk6IG9wZW5wZ3AuS2V5IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4sIHdhbGxldD86IElXYWxsZXQpIHtcbiAgICBzdXBlcihiaXRnbywgYmFzZUNvaW4sIHdhbGxldCk7XG4gICAgdGhpcy5zZXRCaXRnb0dwZ1B1YktleShiaXRnbyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldEJpdGdvR3BnUHViS2V5KGJpdGdvKSB7XG4gICAgdGhpcy5iaXRnb1B1YmxpY0dwZ0tleSA9IGF3YWl0IGdldEJpdGdvR3BnUHViS2V5KGJpdGdvKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJpdGdvUHVibGljR3BnS2V5KCk6IFByb21pc2U8b3BlbnBncC5LZXk+IHtcbiAgICBpZiAoIXRoaXMuYml0Z29QdWJsaWNHcGdLZXkpIHtcbiAgICAgIC8vIHJldHJ5IGdldHRpbmcgYml0Z28ncyBncGcga2V5XG4gICAgICBhd2FpdCB0aGlzLnNldEJpdGdvR3BnUHViS2V5KHRoaXMuYml0Z28pO1xuICAgICAgaWYgKCF0aGlzLmJpdGdvUHVibGljR3BnS2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBnZXQgQml0Z28ncyBncGcga2V5XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJpdGdvUHVibGljR3BnS2V5ITtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBhc3luYyBjcmVhdGVLZXljaGFpbnMocGFyYW1zOiB7XG4gICAgcGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGVudGVycHJpc2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgY29uc3QgTVBDID0gbmV3IEVjZHNhKCk7XG4gICAgY29uc3QgbSA9IDI7XG4gICAgY29uc3QgbiA9IDM7XG5cbiAgICBjb25zdCB1c2VyS2V5U2hhcmUgPSBhd2FpdCBNUEMua2V5U2hhcmUoMSwgbSwgbik7XG4gICAgY29uc3QgYmFja3VwS2V5U2hhcmUgPSBhd2FpdCBNUEMua2V5U2hhcmUoMiwgbSwgbik7XG5cbiAgICBjb25zdCByYW5kb21IZXhTdHJpbmcgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBvcGVucGdwLmNvbmZpZy5yZWplY3RDdXJ2ZXMgPSBuZXcgU2V0KCk7XG5cbiAgICBjb25zdCB1c2VyR3BnS2V5ID0gYXdhaXQgb3BlbnBncC5nZW5lcmF0ZUtleSh7XG4gICAgICB1c2VySURzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiByYW5kb21IZXhTdHJpbmcsXG4gICAgICAgICAgZW1haWw6IGB1c2VyLSR7cmFuZG9tSGV4U3RyaW5nfUAke3JhbmRvbUhleFN0cmluZ30uY29tYCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjdXJ2ZTogJ3NlY3AyNTZrMScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBiaXRnb0tleWNoYWluID0gYXdhaXQgdGhpcy5jcmVhdGVCaXRnb0tleWNoYWluKHVzZXJHcGdLZXksIHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIHBhcmFtcy5lbnRlcnByaXNlKTtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5Qcm9taXNlID0gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgICAgdXNlckdwZ0tleSxcbiAgICAgIDEsXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgICBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGVcbiAgICApO1xuICAgIGNvbnN0IGJhY2t1cEtleWNoYWluUHJvbWlzZSA9IHRoaXMuY3JlYXRlUGFydGljaXBhbnRLZXljaGFpbihcbiAgICAgIHVzZXJHcGdLZXksXG4gICAgICAyLFxuICAgICAgdXNlcktleVNoYXJlLFxuICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgICAgcGFyYW1zLnBhc3NwaHJhc2VcbiAgICApO1xuXG4gICAgY29uc3QgW3VzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW5dID0gYXdhaXQgUHJvbWlzZS5hbGwoW3VzZXJLZXljaGFpblByb21pc2UsIGJhY2t1cEtleWNoYWluUHJvbWlzZV0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJLZXljaGFpbixcbiAgICAgIGJhY2t1cEtleWNoYWluLFxuICAgICAgYml0Z29LZXljaGFpbixcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlVXNlcktleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nLFxuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgICAgdXNlckdwZ0tleSxcbiAgICAgIDEsXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgICBwYXNzcGhyYXNlLFxuICAgICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUJhY2t1cEtleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKHVzZXJHcGdLZXksIDIsIHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIGJpdGdvS2V5Y2hhaW4sIHBhc3NwaHJhc2UpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIGNyZWF0ZUJpdGdvS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBjb25zdCBiaXRnb1B1YmxpY0dwZ0tleSA9IGF3YWl0IHRoaXMuZ2V0Qml0Z29QdWJsaWNHcGdLZXkoKTtcbiAgICBjb25zdCByZWNpcGllbnRJbmRleCA9IDM7XG4gICAgY29uc3QgdXNlclRvQml0Z29TaGFyZSA9IGF3YWl0IGVuY3J5cHROU2hhcmUoXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICByZWNpcGllbnRJbmRleCxcbiAgICAgIGJpdGdvUHVibGljR3BnS2V5LmFybW9yKCksXG4gICAgICB1c2VyR3BnS2V5LnByaXZhdGVLZXlcbiAgICApO1xuXG4gICAgY29uc3QgYmFja3VwVG9CaXRnb1NoYXJlID0gYXdhaXQgZW5jcnlwdE5TaGFyZShcbiAgICAgIGJhY2t1cEtleVNoYXJlLFxuICAgICAgcmVjaXBpZW50SW5kZXgsXG4gICAgICBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpLFxuICAgICAgdXNlckdwZ0tleS5wcml2YXRlS2V5XG4gICAgKTtcblxuICAgIGNvbnN0IGNyZWF0ZUJpdEdvTVBDUGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7XG4gICAgICBrZXlUeXBlOiAndHNzJyBhcyBLZXlUeXBlLFxuICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAga2V5U2hhcmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IHVzZXJUb0JpdGdvU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiB1c2VyVG9CaXRnb1NoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgIHRvOiAnYml0Z28nLFxuICAgICAgICAgIHB1YmxpY1NoYXJlOiBiYWNrdXBUb0JpdGdvU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiBiYWNrdXBUb0JpdGdvU2hhcmUuZW5jcnlwdGVkUHJpdmF0ZVNoYXJlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHVzZXJHUEdQdWJsaWNLZXk6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgYmFja3VwR1BHUHVibGljS2V5OiB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIGVudGVycHJpc2U6IGVudGVycHJpc2UsXG4gICAgfTtcblxuICAgIGNvbnN0IGtleWNoYWlucyA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuYWRkKGNyZWF0ZUJpdEdvTVBDUGFyYW1zKTtcbiAgICByZXR1cm4ga2V5Y2hhaW5zO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIGNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogb3BlbnBncC5TZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHJlY2lwaWVudEluZGV4OiBudW1iZXIsXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nLFxuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZ1xuICApOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgY29uc3QgYml0Z29LZXlTaGFyZXMgPSBiaXRnb0tleWNoYWluLmtleVNoYXJlcztcbiAgICBpZiAoIWJpdGdvS2V5U2hhcmVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28ga2V5IHNoYXJlcycpO1xuICAgIH1cbiAgICBpZiAoIWJpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBjb21tb24ga2V5IGNoYWluOiAke2JpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW59YCk7XG4gICAgfVxuXG4gICAgbGV0IHVzZXI6IHN0cmluZztcbiAgICBsZXQga2V5U2hhcmU6IEtleVNoYXJlO1xuICAgIGxldCBvdGhlclNoYXJlOiBLZXlTaGFyZTtcbiAgICBpZiAocmVjaXBpZW50SW5kZXggPT09IDEpIHtcbiAgICAgIGtleVNoYXJlID0gdXNlcktleVNoYXJlO1xuICAgICAgb3RoZXJTaGFyZSA9IGJhY2t1cEtleVNoYXJlO1xuICAgICAgdXNlciA9ICd1c2VyJztcbiAgICB9IGVsc2UgaWYgKHJlY2lwaWVudEluZGV4ID09PSAyKSB7XG4gICAgICBrZXlTaGFyZSA9IGJhY2t1cEtleVNoYXJlO1xuICAgICAgb3RoZXJTaGFyZSA9IHVzZXJLZXlTaGFyZTtcbiAgICAgIHVzZXIgPSAnYmFja3VwJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVzZXIgaW5kZXgnKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRHb1RvVXNlclNoYXJlID0gYml0Z29LZXlTaGFyZXMuZmluZCgoa2V5U2hhcmUpID0+IGtleVNoYXJlLmZyb20gPT09ICdiaXRnbycgJiYga2V5U2hhcmUudG8gPT09IHVzZXIpO1xuICAgIGlmICghYml0R29Ub1VzZXJTaGFyZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIHRvIFVzZXIga2V5IHNoYXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0Z29QdWJsaWNHcGdLZXkgPSBhd2FpdCB0aGlzLmdldEJpdGdvUHVibGljR3BnS2V5KCk7XG5cbiAgICBjb25zdCBiYWNrdXBUb1VzZXJTaGFyZSA9IGF3YWl0IGVuY3J5cHROU2hhcmUoXG4gICAgICBvdGhlclNoYXJlLFxuICAgICAgcmVjaXBpZW50SW5kZXgsXG4gICAgICB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIHVzZXJHcGdLZXkucHJpdmF0ZUtleVxuICAgICk7XG4gICAgY29uc3QgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgblNoYXJlOiBiYWNrdXBUb1VzZXJTaGFyZSxcbiAgICAgICAgcmVjaXBpZW50UHJpdmF0ZUFybW9yOiB1c2VyR3BnS2V5LnByaXZhdGVLZXksXG4gICAgICAgIHNlbmRlclB1YmxpY0FybW9yOiB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5TaGFyZToge1xuICAgICAgICAgIGk6IHJlY2lwaWVudEluZGV4LFxuICAgICAgICAgIGo6IDMsXG4gICAgICAgICAgcHVibGljU2hhcmU6IGJpdEdvVG9Vc2VyU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlOiBiaXRHb1RvVXNlclNoYXJlLnByaXZhdGVTaGFyZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVjaXBpZW50UHJpdmF0ZUFybW9yOiB1c2VyR3BnS2V5LnByaXZhdGVLZXksXG4gICAgICAgIHNlbmRlclB1YmxpY0FybW9yOiBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgdXNlckNvbWJpbmVkS2V5ID0gYXdhaXQgRUNEU0FNZXRob2RzLmNyZWF0ZUNvbWJpbmVkS2V5KFxuICAgICAga2V5U2hhcmUsXG4gICAgICBlbmNyeXB0ZWROU2hhcmVzLFxuICAgICAgYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpblxuICAgICk7XG5cbiAgICBjb25zdCBwcnYgPSBKU09OLnN0cmluZ2lmeSh1c2VyQ29tYmluZWRLZXkuc2lnbmluZ01hdGVyaWFsKTtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5QYXJhbXMgPSB7XG4gICAgICBzb3VyY2U6IHVzZXIsXG4gICAgICBrZXlUeXBlOiAndHNzJyBhcyBLZXlUeXBlLFxuICAgICAgY29tbW9uS2V5Y2hhaW46IGJpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW4sXG4gICAgICBwcnY6IHBydixcbiAgICAgIGVuY3J5cHRlZFBydjogdGhpcy5iaXRnby5lbmNyeXB0KHtcbiAgICAgICAgaW5wdXQ6IHBydixcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgICB9KSxcbiAgICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9O1xuXG4gICAgY29uc3Qga2V5Y2hhaW5zID0gdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKTtcbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgcmVjaXBpZW50SW5kZXggPT09IDEgPyBhd2FpdCBrZXljaGFpbnMuYWRkKHVzZXJLZXljaGFpblBhcmFtcykgOiBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHVzZXJLZXljaGFpblBhcmFtcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0aGUgdHJhbnNhY3Rpb24gYXNzb2NpYXRlZCB0byB0aGUgdHJhbnNhY3Rpb24gcmVxdWVzdC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBUeFJlcXVlc3R9IHBhcmFtcy50eFJlcXVlc3QgLSB0cmFuc2FjdGlvbiByZXF1ZXN0IG9iamVjdCBvciBpZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLnBydiAtIGRlY3J5cHRlZCBwcml2YXRlIGtleVxuICAgKiBAcGFyYW0geyBzdHJpbmd9IHBhcmFtcy5yZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gZnVsbHkgc2lnbmVkIFR4UmVxdWVzdCBvYmplY3RcbiAgICovXG4gIGFzeW5jIHNpZ25UeFJlcXVlc3QocGFyYW1zOiB7XG4gICAgdHhSZXF1ZXN0OiBzdHJpbmcgfCBUeFJlcXVlc3Q7XG4gICAgcHJ2OiBzdHJpbmc7XG4gICAgcmVxSWQ6IElSZXF1ZXN0VHJhY2VyO1xuICB9KTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBsZXQgdHhSZXF1ZXN0UmVzb2x2ZWQ6IFR4UmVxdWVzdDtcbiAgICBsZXQgdHhSZXF1ZXN0SWQ6IHN0cmluZztcblxuICAgIGNvbnN0IHsgdHhSZXF1ZXN0LCBwcnYgfSA9IHBhcmFtcztcblxuICAgIGlmICh0eXBlb2YgdHhSZXF1ZXN0ID09PSAnc3RyaW5nJykge1xuICAgICAgdHhSZXF1ZXN0UmVzb2x2ZWQgPSBhd2FpdCBnZXRUeFJlcXVlc3QodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0KTtcbiAgICAgIHR4UmVxdWVzdElkID0gdHhSZXF1ZXN0UmVzb2x2ZWQudHhSZXF1ZXN0SWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4UmVxdWVzdFJlc29sdmVkID0gdHhSZXF1ZXN0O1xuICAgICAgdHhSZXF1ZXN0SWQgPSB0eFJlcXVlc3QudHhSZXF1ZXN0SWQ7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlclNpZ25pbmdNYXRlcmlhbDogRUNEU0FNZXRob2RUeXBlcy5TaWduaW5nTWF0ZXJpYWwgPSBKU09OLnBhcnNlKHBydik7XG4gICAgaWYgKHVzZXJTaWduaW5nTWF0ZXJpYWwucFNoYXJlLmkgIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGtleScpO1xuICAgIH1cbiAgICBpZiAoIXVzZXJTaWduaW5nTWF0ZXJpYWwuYmFja3VwTlNoYXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBrZXkgLSBtaXNzaW5nIGJhY2t1cE5TaGFyZScpO1xuICAgIH1cbiAgICBjb25zdCBNUEMgPSBuZXcgRWNkc2EoKTtcbiAgICBjb25zdCBzaWduaW5nS2V5ID0gTVBDLmtleUNvbWJpbmUodXNlclNpZ25pbmdNYXRlcmlhbC5wU2hhcmUsIFtcbiAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwuYml0Z29OU2hhcmUsXG4gICAgICB1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cE5TaGFyZSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHVzZXJTaWduU2hhcmUgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlVXNlclNpZ25TaGFyZShzaWduaW5nS2V5LnhTaGFyZSwgc2lnbmluZ0tleS55U2hhcmVzWzNdKTtcblxuICAgIGNvbnN0IGJpdGdvVG9Vc2VyQVNoYXJlID0gKGF3YWl0IEVDRFNBTWV0aG9kcy5zZW5kU2hhcmVUb0JpdGdvKFxuICAgICAgdGhpcy5iaXRnbyxcbiAgICAgIHRoaXMud2FsbGV0LmlkKCksXG4gICAgICB0eFJlcXVlc3RJZCxcbiAgICAgIFNlbmRTaGFyZVR5cGUuS1NoYXJlLFxuICAgICAgdXNlclNpZ25TaGFyZS5rU2hhcmVcbiAgICApKSBhcyBBU2hhcmU7XG5cbiAgICBjb25zdCB1c2VyR2FtbWFBbmRNdVNoYXJlcyA9IGF3YWl0IEVDRFNBTWV0aG9kcy5jcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlKHVzZXJTaWduU2hhcmUud1NoYXJlLCBiaXRnb1RvVXNlckFTaGFyZSk7XG5cbiAgICBjb25zdCBiaXRnb1RvVXNlckRTaGFyZSA9IChhd2FpdCBFQ0RTQU1ldGhvZHMuc2VuZFNoYXJlVG9CaXRnbyhcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICB0aGlzLndhbGxldC5pZCgpLFxuICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICBTZW5kU2hhcmVUeXBlLk1VU2hhcmUsXG4gICAgICB1c2VyR2FtbWFBbmRNdVNoYXJlcy5tdVNoYXJlIGFzIEVDRFNBLk1VU2hhcmVcbiAgICApKSBhcyBEU2hhcmU7XG5cbiAgICBjb25zdCB1c2VyT21pY3JvbkFuZERlbHRhU2hhcmUgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlKFxuICAgICAgdXNlckdhbW1hQW5kTXVTaGFyZXMuZ1NoYXJlIGFzIEVDRFNBLkdTaGFyZVxuICAgICk7XG5cbiAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSBCdWZmZXIuZnJvbSh0eFJlcXVlc3RSZXNvbHZlZC51bnNpZ25lZFR4c1swXS5zaWduYWJsZUhleCwgJ2hleCcpO1xuXG4gICAgY29uc3QgdXNlclNTaGFyZSA9IGF3YWl0IEVDRFNBTWV0aG9kcy5jcmVhdGVVc2VyU2lnbmF0dXJlU2hhcmUoXG4gICAgICB1c2VyT21pY3JvbkFuZERlbHRhU2hhcmUub1NoYXJlLFxuICAgICAgYml0Z29Ub1VzZXJEU2hhcmUsXG4gICAgICBzaWduYWJsZVBheWxvYWRcbiAgICApO1xuXG4gICAgYXdhaXQgRUNEU0FNZXRob2RzLnNlbmRTaGFyZVRvQml0Z28oXG4gICAgICB0aGlzLmJpdGdvLFxuICAgICAgdGhpcy53YWxsZXQuaWQoKSxcbiAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgU2VuZFNoYXJlVHlwZS5TU2hhcmUsXG4gICAgICB1c2VyU1NoYXJlLFxuICAgICAgdXNlck9taWNyb25BbmREZWx0YVNoYXJlLmRTaGFyZVxuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IGdldFR4UmVxdWVzdCh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCk7XG4gIH1cbn1cbiJdfQ==
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IseURBQStEO0FBQy9ELDJEQUFvRTtBQUNwRSxpREFBbUM7QUFHbkMsK0RBQW9FO0FBRXBFLG1FQUEyQztBQUUzQyw0Q0FBMEY7QUFDMUYsZ0RBQW1EO0FBQ25ELG9EQUF5RTtBQUN6RSxxREFBMkU7QUFHM0Usb0RBQTRCO0FBQzVCLDhDQUF3QztBQUV4QyxNQUFNLGFBQWEsR0FBRyxlQUFZLENBQUMsYUFBYSxDQUFDO0FBRWpELGtCQUFrQjtBQUNsQixNQUFhLFVBQVcsU0FBUSxzQkFBc0I7SUFHcEQsWUFBWSxLQUFnQixFQUFFLFFBQW1CLEVBQUUsTUFBZ0I7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFIekIsc0JBQWlCLEdBQTRCLFNBQVMsQ0FBQztRQUk3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLGdDQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsZ0NBQWdDO1lBQ2hDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7YUFDbEQ7U0FDRjtR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dCI6WyJpbXBvcnQgKiBhcyBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgRUNEU0EsIEVjZHNhIH0gZnJvbSAnLi4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQgeyBiaWdJbnRUb0J1ZmZlckJFIH0gZnJvbSAnLi4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3V0aWwnO1xuaW1wb3J0ICogYXMgb3BlbnBncCBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IFNlcmlhbGl6ZWRLZXlQYWlyIH0gZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBBZGRLZXljaGFpbk9wdGlvbnMsIEtleWNoYWluLCBLZXlUeXBlIH0gZnJvbSAnLi4vLi4vLi4va2V5Y2hhaW4nO1xuaW1wb3J0IEVDRFNBTWV0aG9kcywgeyBFQ0RTQU1ldGhvZFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdHNzL2VjZHNhJztcbmltcG9ydCB7IElCYXNlQ29pbiwgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uLy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCBiYXNlVFNTVXRpbHMgZnJvbSAnLi4vYmFzZVRTU1V0aWxzJztcbmltcG9ydCB7IERlY3J5cHRhYmxlTlNoYXJlLCBLZXlTaGFyZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQml0Z29IZWxkQmFja3VwS2V5U2hhcmUsIFJlcXVlc3RUeXBlLCBUU1NQYXJhbXMsIFR4UmVxdWVzdCB9IGZyb20gJy4uL2Jhc2VUeXBlcyc7XG5pbXBvcnQgeyBnZXRUeFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi90c3MvY29tbW9uJztcbmltcG9ydCB7IEFTaGFyZSwgRFNoYXJlLCBTZW5kU2hhcmVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IGdlbmVyYXRlR1BHS2V5UGFpciwgZ2V0Qml0Z29HcGdQdWJLZXkgfSBmcm9tICcuLi8uLi9vcGVuZ3BnVXRpbHMnO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi8uLi8uLi93YWxsZXQnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgYmlwMzIgfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5jb25zdCBlbmNyeXB0TlNoYXJlID0gRUNEU0FNZXRob2RzLmVuY3J5cHROU2hhcmU7XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGNsYXNzIEVjZHNhVXRpbHMgZXh0ZW5kcyBiYXNlVFNTVXRpbHM8S2V5U2hhcmU+IHtcbiAgcHJpdmF0ZSBiaXRnb1B1YmxpY0dwZ0tleTogb3BlbnBncC5LZXkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbiwgd2FsbGV0PzogSVdhbGxldCkge1xuICAgIHN1cGVyKGJpdGdvLCBiYXNlQ29pbiwgd2FsbGV0KTtcbiAgICB0aGlzLnNldEJpdGdvR3BnUHViS2V5KGJpdGdvKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Qml0Z29HcGdQdWJLZXkoYml0Z28pIHtcbiAgICB0aGlzLmJpdGdvUHVibGljR3BnS2V5ID0gYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkoYml0Z28pO1xuICB9XG5cbiAgYXN5bmMgZ2V0Qml0Z29QdWJsaWNHcGdLZXkoKTogUHJvbWlzZTxvcGVucGdwLktleT4ge1xuICAgIGlmICghdGhpcy5iaXRnb1B1YmxpY0dwZ0tleSkge1xuICAgICAgLy8gcmV0cnkgZ2V0dGluZyBiaXRnbydzIGdwZyBrZXlcbiAgICAgIGF3YWl0IHRoaXMuc2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbyk7XG4gICAgICBpZiAoIXRoaXMuYml0Z29QdWJsaWNHcGdLZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGdldCBCaXRnbydzIGdwZyBrZXlcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYml0Z29QdWJsaWNHcGdLZXk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29tbW9uIHB1YmxpYyBrZXkgZnJvbSBjb21tb25LZXljaGFpbi5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGNvbW1vbktleWNoYWluIGNvbW1vbiBrZXkgY2hhaW4gYmV0d2VlbiBuIHBhcnRpZXNcbiAgICogQHJldHVybnMge3N0cmluZ30gZW5jb2RlZCBwdWJsaWMga2V5XG4gICAqL1xuICBzdGF0aWMgZ2V0UHVibGljS2V5RnJvbUNvbW1vbktleWNoYWluKGNvbW1vbktleWNoYWluOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChjb21tb25LZXljaGFpbi5sZW5ndGggIT09IDEzMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbW1vbktleWNoYWluIGxlbmd0aCwgZXhwZWN0ZWQgMTMwLCBnb3QgJHtjb21tb25LZXljaGFpbi5sZW5ndGh9YCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1vblB1YkhleFN0ciA9IGNvbW1vbktleWNoYWluLnNsaWNlKDAsIDY2KTtcbiAgICByZXR1cm4gYnM1OC5lbmNvZGUoQnVmZmVyLmZyb20oY29tbW9uUHViSGV4U3RyLCAnaGV4JykpO1xuICB9XG5cbiAgYXN5bmMgZmluYWxpemVCaXRnb0hlbGRCYWNrdXBLZXlTaGFyZShcbiAgICBrZXlJZDogc3RyaW5nLFxuICAgIGNvbW1vbktleWNoYWluOiBzdHJpbmcsXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpblxuICApOiBQcm9taXNlPEJpdGdvSGVsZEJhY2t1cEtleVNoYXJlPiB7XG4gICAgY29uc3QgYml0Z29HcGdLZXkgPSBhd2FpdCB0aGlzLmdldEJpdGdvUHVibGljR3BnS2V5KCk7XG4gICAgY29uc3QgZW5jcnlwdGVkVXNlclRvQmFja3VwU2hhcmUgPSBhd2FpdCBlbmNyeXB0TlNoYXJlKHVzZXJLZXlTaGFyZSwgMiwgYml0Z29HcGdLZXkuYXJtb3IoKSk7XG4gICAgY29uc3QgYml0Z29Ub0JhY2t1cEtleVNoYXJlID0gYml0Z29LZXljaGFpbi5rZXlTaGFyZXM/LmZpbmQoXG4gICAgICAoa2V5U2hhcmUpID0+IGtleVNoYXJlLmZyb20gPT09ICdiaXRnbycgJiYga2V5U2hhcmUudG8gPT09ICdiYWNrdXAnXG4gICAgKTtcbiAgICBhc3NlcnQoYml0Z29Ub0JhY2t1cEtleVNoYXJlKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnB1dCh0aGlzLmJhc2VDb2luLnVybChgL2tycy9iYWNrdXBrZXlzLyR7a2V5SWR9YCkpXG4gICAgICAuc2VuZCh7XG4gICAgICAgIGNvbW1vbktleWNoYWluLFxuICAgICAgICBrZXlTaGFyZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgICAgICB0bzogJ2JhY2t1cCcsXG4gICAgICAgICAgICBwdWJsaWNTaGFyZTogdXNlcktleVNoYXJlLm5TaGFyZXNbMl0ueSxcbiAgICAgICAgICAgIHByaXZhdGVTaGFyZTogZW5jcnlwdGVkVXNlclRvQmFja3VwU2hhcmUuZW5jcnlwdGVkUHJpdmF0ZVNoYXJlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYml0Z29Ub0JhY2t1cEtleVNoYXJlLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBhc3luYyBjcmVhdGVLZXljaGFpbnMocGFyYW1zOiB7XG4gICAgcGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGVudGVycHJpc2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgY29uc3QgTVBDID0gbmV3IEVjZHNhKCk7XG4gICAgY29uc3QgbSA9IDI7XG4gICAgY29uc3QgbiA9IDM7XG5cbiAgICBjb25zdCB1c2VyS2V5U2hhcmUgPSBhd2FpdCBNUEMua2V5U2hhcmUoMSwgbSwgbik7XG4gICAgY29uc3QgYmFja3VwS2V5U2hhcmUgPSBhd2FpdCBNUEMua2V5U2hhcmUoMiwgbSwgbik7XG5cbiAgICBjb25zdCB1c2VyR3BnS2V5ID0gYXdhaXQgZ2VuZXJhdGVHUEdLZXlQYWlyKCdzZWNwMjU2azEnKTtcblxuICAgIGNvbnN0IGJpdGdvS2V5Y2hhaW4gPSBhd2FpdCB0aGlzLmNyZWF0ZUJpdGdvS2V5Y2hhaW4odXNlckdwZ0tleSwgdXNlcktleVNoYXJlLCBiYWNrdXBLZXlTaGFyZSwgcGFyYW1zLmVudGVycHJpc2UpO1xuICAgIGNvbnN0IHVzZXJLZXljaGFpblByb21pc2UgPSB0aGlzLmNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgICB1c2VyR3BnS2V5LFxuICAgICAgMSxcbiAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgIGJhY2t1cEtleVNoYXJlLFxuICAgICAgYml0Z29LZXljaGFpbixcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZVxuICAgICk7XG4gICAgY29uc3QgYmFja3VwS2V5Y2hhaW5Qcm9taXNlID0gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgICAgdXNlckdwZ0tleSxcbiAgICAgIDIsXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgICBwYXJhbXMucGFzc3BocmFzZVxuICAgICk7XG5cbiAgICBjb25zdCBbdXNlcktleWNoYWluLCBiYWNrdXBLZXljaGFpbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbdXNlcktleWNoYWluUHJvbWlzZSwgYmFja3VwS2V5Y2hhaW5Qcm9taXNlXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXNlcktleWNoYWluLFxuICAgICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgIH07XG4gIH1cblxuICBjcmVhdGVVc2VyS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgICB1c2VyR3BnS2V5LFxuICAgICAgMSxcbiAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgIGJhY2t1cEtleVNoYXJlLFxuICAgICAgYml0Z29LZXljaGFpbixcbiAgICAgIHBhc3NwaHJhc2UsXG4gICAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGVcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlQmFja3VwS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4odXNlckdwZ0tleSwgMiwgdXNlcktleVNoYXJlLCBiYWNrdXBLZXlTaGFyZSwgYml0Z29LZXljaGFpbiwgcGFzc3BocmFzZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgY3JlYXRlQml0Z29LZXljaGFpbihcbiAgICB1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGVudGVycHJpc2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IGJpdGdvUHVibGljR3BnS2V5ID0gYXdhaXQgdGhpcy5nZXRCaXRnb1B1YmxpY0dwZ0tleSgpO1xuICAgIGNvbnN0IHJlY2lwaWVudEluZGV4ID0gMztcbiAgICBjb25zdCB1c2VyVG9CaXRnb1NoYXJlID0gYXdhaXQgZW5jcnlwdE5TaGFyZSh1c2VyS2V5U2hhcmUsIHJlY2lwaWVudEluZGV4LCBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpKTtcblxuICAgIGNvbnN0IGJhY2t1cFRvQml0Z29TaGFyZSA9IGF3YWl0IGVuY3J5cHROU2hhcmUoYmFja3VwS2V5U2hhcmUsIHJlY2lwaWVudEluZGV4LCBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpKTtcblxuICAgIGNvbnN0IGNyZWF0ZUJpdEdvTVBDUGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7XG4gICAgICBrZXlUeXBlOiAndHNzJyBhcyBLZXlUeXBlLFxuICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAga2V5U2hhcmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IHVzZXJUb0JpdGdvU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiB1c2VyVG9CaXRnb1NoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICAgICAgICBuOiB1c2VyVG9CaXRnb1NoYXJlLm4sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogYmFja3VwVG9CaXRnb1NoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZTogYmFja3VwVG9CaXRnb1NoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICAgICAgICBuOiBiYWNrdXBUb0JpdGdvU2hhcmUubixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1c2VyR1BHUHVibGljS2V5OiB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIGJhY2t1cEdQR1B1YmxpY0tleTogdXNlckdwZ0tleS5wdWJsaWNLZXksXG4gICAgICBlbnRlcnByaXNlOiBlbnRlcnByaXNlLFxuICAgIH07XG5cbiAgICBjb25zdCBrZXljaGFpbnMgPSBhd2FpdCB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpLmFkZChjcmVhdGVCaXRHb01QQ1BhcmFtcyk7XG4gICAgcmV0dXJuIGtleWNoYWlucztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBhc3luYyBjcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IG9wZW5wZ3AuU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICByZWNpcGllbnRJbmRleDogbnVtYmVyLFxuICAgIHVzZXJLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluLFxuICAgIHBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IGJpdGdvS2V5U2hhcmVzID0gYml0Z29LZXljaGFpbi5rZXlTaGFyZXM7XG4gICAgaWYgKCFiaXRnb0tleVNoYXJlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIGtleSBzaGFyZXMnKTtcbiAgICB9XG4gICAgaWYgKCFiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgY29tbW9uIGtleSBjaGFpbjogJHtiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWlufWApO1xuICAgIH1cblxuICAgIGxldCB1c2VyOiBzdHJpbmc7XG4gICAgbGV0IGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgICBsZXQgb3RoZXJTaGFyZTogS2V5U2hhcmU7XG4gICAgaWYgKHJlY2lwaWVudEluZGV4ID09PSAxKSB7XG4gICAgICBrZXlTaGFyZSA9IHVzZXJLZXlTaGFyZTtcbiAgICAgIG90aGVyU2hhcmUgPSBiYWNrdXBLZXlTaGFyZTtcbiAgICAgIHVzZXIgPSAndXNlcic7XG4gICAgfSBlbHNlIGlmIChyZWNpcGllbnRJbmRleCA9PT0gMikge1xuICAgICAga2V5U2hhcmUgPSBiYWNrdXBLZXlTaGFyZTtcbiAgICAgIG90aGVyU2hhcmUgPSB1c2VyS2V5U2hhcmU7XG4gICAgICB1c2VyID0gJ2JhY2t1cCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGluZGV4Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0R29Ub1VzZXJTaGFyZSA9IGJpdGdvS2V5U2hhcmVzLmZpbmQoKGtleVNoYXJlKSA9PiBrZXlTaGFyZS5mcm9tID09PSAnYml0Z28nICYmIGtleVNoYXJlLnRvID09PSB1c2VyKTtcbiAgICBpZiAoIWJpdEdvVG9Vc2VyU2hhcmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBCaXRHbyB0byBVc2VyIGtleSBzaGFyZScpO1xuICAgIH1cblxuICAgIGNvbnN0IGJpdGdvUHVibGljR3BnS2V5ID0gYXdhaXQgdGhpcy5nZXRCaXRnb1B1YmxpY0dwZ0tleSgpO1xuXG4gICAgY29uc3QgYmFja3VwVG9Vc2VyU2hhcmUgPSBhd2FpdCBlbmNyeXB0TlNoYXJlKG90aGVyU2hhcmUsIHJlY2lwaWVudEluZGV4LCB1c2VyR3BnS2V5LnB1YmxpY0tleSk7XG4gICAgY29uc3QgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgblNoYXJlOiBiYWNrdXBUb1VzZXJTaGFyZSxcbiAgICAgICAgcmVjaXBpZW50UHJpdmF0ZUFybW9yOiB1c2VyR3BnS2V5LnByaXZhdGVLZXksXG4gICAgICAgIHNlbmRlclB1YmxpY0FybW9yOiB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5TaGFyZToge1xuICAgICAgICAgIGk6IHJlY2lwaWVudEluZGV4LFxuICAgICAgICAgIGo6IDMsXG4gICAgICAgICAgcHVibGljU2hhcmU6IGJpdEdvVG9Vc2VyU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlOiBiaXRHb1RvVXNlclNoYXJlLnByaXZhdGVTaGFyZSxcbiAgICAgICAgICBuOiBiaXRHb1RvVXNlclNoYXJlLm4hLFxuICAgICAgICB9LFxuICAgICAgICByZWNpcGllbnRQcml2YXRlQXJtb3I6IHVzZXJHcGdLZXkucHJpdmF0ZUtleSxcbiAgICAgICAgc2VuZGVyUHVibGljQXJtb3I6IGJpdGdvUHVibGljR3BnS2V5LmFybW9yKCksXG4gICAgICAgIGlzYnM1OEVuY29kZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgdXNlckNvbWJpbmVkS2V5ID0gYXdhaXQgRUNEU0FNZXRob2RzLmNyZWF0ZUNvbWJpbmVkS2V5KFxuICAgICAga2V5U2hhcmUsXG4gICAgICBlbmNyeXB0ZWROU2hhcmVzLFxuICAgICAgYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpblxuICAgICk7XG5cbiAgICBjb25zdCBwcnYgPSBKU09OLnN0cmluZ2lmeSh1c2VyQ29tYmluZWRLZXkuc2lnbmluZ01hdGVyaWFsKTtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5QYXJhbXMgPSB7XG4gICAgICBzb3VyY2U6IHVzZXIsXG4gICAgICBrZXlUeXBlOiAndHNzJyBhcyBLZXlUeXBlLFxuICAgICAgY29tbW9uS2V5Y2hhaW46IGJpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW4sXG4gICAgICBwcnY6IHBydixcbiAgICAgIGVuY3J5cHRlZFBydjogdGhpcy5iaXRnby5lbmNyeXB0KHtcbiAgICAgICAgaW5wdXQ6IHBydixcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgICB9KSxcbiAgICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9O1xuXG4gICAgY29uc3Qga2V5Y2hhaW5zID0gdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKTtcbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgcmVjaXBpZW50SW5kZXggPT09IDEgPyBhd2FpdCBrZXljaGFpbnMuYWRkKHVzZXJLZXljaGFpblBhcmFtcykgOiBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHVzZXJLZXljaGFpblBhcmFtcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHNpZ25pbmcga2V5LCB0eFJlcXVlc3RSZXNvbHZlZCBhbmQgdHhSZXF1ZXN0SWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBUeFJlcXVlc3R9IHBhcmFtcy50eFJlcXVlc3QgLSB0cmFuc2FjdGlvbiByZXF1ZXN0IG9iamVjdCBvciBpZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLnBydiAtIGRlY3J5cHRlZCBwcml2YXRlIGtleVxuICAgKiBAcGFyYW0geyBzdHJpbmd9IHBhcmFtcy5yZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8RUNEU0FTaWduaW5nUmVxdWVzdEJhc2VSZXN1bHQ+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaWduUmVxdWVzdEJhc2UocGFyYW1zOiBUU1NQYXJhbXMsIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgbGV0IHR4UmVxdWVzdFJlc29sdmVkOiBUeFJlcXVlc3Q7XG4gICAgbGV0IHR4UmVxdWVzdElkOiBzdHJpbmc7XG5cbiAgICBjb25zdCB7IHR4UmVxdWVzdCwgcHJ2IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAodHlwZW9mIHR4UmVxdWVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR4UmVxdWVzdFJlc29sdmVkID0gYXdhaXQgZ2V0VHhSZXF1ZXN0KHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmlkKCksIHR4UmVxdWVzdCk7XG4gICAgICB0eFJlcXVlc3RJZCA9IHR4UmVxdWVzdFJlc29sdmVkLnR4UmVxdWVzdElkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eFJlcXVlc3RSZXNvbHZlZCA9IHR4UmVxdWVzdDtcbiAgICAgIHR4UmVxdWVzdElkID0gdHhSZXF1ZXN0LnR4UmVxdWVzdElkO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJTaWduaW5nTWF0ZXJpYWw6IEVDRFNBTWV0aG9kVHlwZXMuU2lnbmluZ01hdGVyaWFsID0gSlNPTi5wYXJzZShwcnYpO1xuICAgIGlmICh1c2VyU2lnbmluZ01hdGVyaWFsLnBTaGFyZS5pICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBrZXknKTtcbiAgICB9XG4gICAgaWYgKCF1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cE5TaGFyZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVzZXIga2V5IC0gbWlzc2luZyBiYWNrdXBOU2hhcmUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBNUEMgPSBuZXcgRWNkc2EoKTtcbiAgICBjb25zdCBzaWduaW5nS2V5ID0gTVBDLmtleUNvbWJpbmUodXNlclNpZ25pbmdNYXRlcmlhbC5wU2hhcmUsIFtcbiAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwuYml0Z29OU2hhcmUsXG4gICAgICB1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cE5TaGFyZSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHRocmVzaG9sZCA9IDI7XG4gICAgY29uc3QgbnVtU2hhcmVzID0gMztcbiAgICBjb25zdCB1U2hhcmVzID0gRWNkc2Euc2hhbWlyLnNwbGl0KEJpZ0ludCh1c2VyU2lnbmluZ01hdGVyaWFsLnBTaGFyZS51dSksIHRocmVzaG9sZCwgbnVtU2hhcmVzKTtcbiAgICBjb25zdCB1c2VyU2lnblNoYXJlID0gYXdhaXQgRUNEU0FNZXRob2RzLmNyZWF0ZVVzZXJTaWduU2hhcmUoc2lnbmluZ0tleS54U2hhcmUsIHNpZ25pbmdLZXkueVNoYXJlc1szXSk7XG5cbiAgICBsZXQgdSA9IGJpZ0ludFRvQnVmZmVyQkUodVNoYXJlc1szXSwgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICB3aGlsZSAodS5sZW5ndGggPCA2NCkge1xuICAgICAgdSA9ICcwJyArIHU7XG4gICAgfVxuXG4gICAgbGV0IGNoYWluY29kZSA9IHVzZXJTaWduaW5nTWF0ZXJpYWwuYml0Z29OU2hhcmUuY2hhaW5jb2RlO1xuICAgIHdoaWxlIChjaGFpbmNvZGUubGVuZ3RoIDwgNjQpIHtcbiAgICAgIGNoYWluY29kZSA9ICcwJyArIGNoYWluY29kZTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmVyU2hhcmUgPSBiaXAzMi5mcm9tUHJpdmF0ZUtleShCdWZmZXIuZnJvbSh1LCAnaGV4JyksIEJ1ZmZlci5mcm9tKGNoYWluY29kZSwgJ2hleCcpKS50b0Jhc2U1OCgpO1xuICAgIGNvbnN0IGJpdGdvR3BnS2V5ID0gYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbyk7XG4gICAgY29uc3QgZW5jcnlwdGVkU2lnbmVyU2hhcmUgPSAoYXdhaXQgb3BlbnBncC5lbmNyeXB0KHtcbiAgICAgIG1lc3NhZ2U6IGF3YWl0IG9wZW5wZ3AuY3JlYXRlTWVzc2FnZSh7XG4gICAgICAgIHRleHQ6IHNpZ25lclNoYXJlLFxuICAgICAgfSksXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgcmVqZWN0Q3VydmVzOiBuZXcgU2V0KCksXG4gICAgICB9LFxuICAgICAgZW5jcnlwdGlvbktleXM6IFtiaXRnb0dwZ0tleV0sXG4gICAgfSkpIGFzIHN0cmluZztcblxuICAgIGNvbnN0IGJpdGdvVG9Vc2VyQVNoYXJlID0gKGF3YWl0IEVDRFNBTWV0aG9kcy5zZW5kU2hhcmVUb0JpdGdvKFxuICAgICAgdGhpcy5iaXRnbyxcbiAgICAgIHRoaXMud2FsbGV0LmlkKCksXG4gICAgICB0eFJlcXVlc3RJZCxcbiAgICAgIHJlcXVlc3RUeXBlLFxuICAgICAgU2VuZFNoYXJlVHlwZS5LU2hhcmUsXG4gICAgICB1c2VyU2lnblNoYXJlLmtTaGFyZSxcbiAgICAgIGVuY3J5cHRlZFNpZ25lclNoYXJlXG4gICAgKSkgYXMgQVNoYXJlO1xuXG4gICAgY29uc3QgdXNlckdhbW1hQW5kTXVTaGFyZXMgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZSh1c2VyU2lnblNoYXJlLndTaGFyZSwgYml0Z29Ub1VzZXJBU2hhcmUpO1xuICAgIGNvbnN0IHVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZSA9IGF3YWl0IEVDRFNBTWV0aG9kcy5jcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmUoXG4gICAgICB1c2VyR2FtbWFBbmRNdVNoYXJlcy5nU2hhcmUgYXMgRUNEU0EuR1NoYXJlXG4gICAgKTtcblxuICAgIGNvbnN0IG11U2hhcmUgPSB1c2VyR2FtbWFBbmRNdVNoYXJlcy5tdVNoYXJlITtcbiAgICBjb25zdCBkU2hhcmUgPSB1c2VyT21pY3JvbkFuZERlbHRhU2hhcmUuZFNoYXJlO1xuICAgIGNvbnN0IGJpdGdvVG9Vc2VyRFNoYXJlID0gKGF3YWl0IEVDRFNBTWV0aG9kcy5zZW5kU2hhcmVUb0JpdGdvKFxuICAgICAgdGhpcy5iaXRnbyxcbiAgICAgIHRoaXMud2FsbGV0LmlkKCksXG4gICAgICB0eFJlcXVlc3RJZCxcbiAgICAgIHJlcXVlc3RUeXBlLFxuICAgICAgU2VuZFNoYXJlVHlwZS5NVVNoYXJlLFxuICAgICAgeyBtdVNoYXJlLCBkU2hhcmUsIGk6IG11U2hhcmUuaSB9XG4gICAgKSkgYXMgRFNoYXJlO1xuXG4gICAgbGV0IHNpZ25hYmxlUGF5bG9hZDtcblxuICAgIGlmIChyZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGUudHgpIHtcbiAgICAgIHNpZ25hYmxlUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHR4UmVxdWVzdFJlc29sdmVkLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNpZ25hYmxlSGV4LCAnaGV4Jyk7XG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGUubWVzc2FnZSkge1xuICAgICAgYXNzZXJ0KHR4UmVxdWVzdFJlc29sdmVkLnVuc2lnbmVkTWVzc2FnZXM/LlswXSk7XG4gICAgICBzaWduYWJsZVBheWxvYWQgPSBCdWZmZXIuZnJvbSh0eFJlcXVlc3RSZXNvbHZlZC51bnNpZ25lZE1lc3NhZ2VzWzBdLm1lc3NhZ2UsICdoZXgnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyU1NoYXJlID0gYXdhaXQgRUNEU0FNZXRob2RzLmNyZWF0ZVVzZXJTaWduYXR1cmVTaGFyZShcbiAgICAgIHVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZS5vU2hhcmUsXG4gICAgICBiaXRnb1RvVXNlckRTaGFyZSxcbiAgICAgIHNpZ25hYmxlUGF5bG9hZFxuICAgICk7XG5cbiAgICBhd2FpdCBFQ0RTQU1ldGhvZHMuc2VuZFNoYXJlVG9CaXRnbyhcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICB0aGlzLndhbGxldC5pZCgpLFxuICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICByZXF1ZXN0VHlwZSxcbiAgICAgIFNlbmRTaGFyZVR5cGUuU1NoYXJlLFxuICAgICAgdXNlclNTaGFyZVxuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IGdldFR4UmVxdWVzdCh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdGhlIHRyYW5zYWN0aW9uIGFzc29jaWF0ZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgVHhSZXF1ZXN0fSBwYXJhbXMudHhSZXF1ZXN0IC0gdHJhbnNhY3Rpb24gcmVxdWVzdCBvYmplY3Qgb3IgaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5wcnYgLSBkZWNyeXB0ZWQgcHJpdmF0ZSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5yZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gZnVsbHkgc2lnbmVkIFR4UmVxdWVzdCBvYmplY3RcbiAgICovXG4gIGFzeW5jIHNpZ25UeFJlcXVlc3QocGFyYW1zOiBUU1NQYXJhbXMpOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIHJldHVybiB0aGlzLnNpZ25SZXF1ZXN0QmFzZShwYXJhbXMsIFJlcXVlc3RUeXBlLnR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0aGUgbWVzc2FnZSBhc3NvY2lhdGVkIHRvIHRoZSB0cmFuc2FjdGlvbiByZXF1ZXN0LlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IFR4UmVxdWVzdH0gcGFyYW1zLnR4UmVxdWVzdCAtIHRyYW5zYWN0aW9uIHJlcXVlc3Qgb2JqZWN0IG9yIGlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMucHJ2IC0gZGVjcnlwdGVkIHByaXZhdGUga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMucmVxSWQgLSByZXF1ZXN0IGlkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFR4UmVxdWVzdD59IGZ1bGx5IHNpZ25lZCBUeFJlcXVlc3Qgb2JqZWN0XG4gICAqL1xuICBhc3luYyBzaWduVHhSZXF1ZXN0Rm9yTWVzc2FnZShwYXJhbXM6IFRTU1BhcmFtcyk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2lnblJlcXVlc3RCYXNlKHBhcmFtcywgUmVxdWVzdFR5cGUubWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as openpgp from 'openpgp';
|
|
2
|
-
import {
|
|
2
|
+
import { SignShare, GShare } from '../../../../account-lib/mpc/tss';
|
|
3
3
|
import { Keychain } from '../../../keychain';
|
|
4
|
-
import { TxRequest } from '../baseTypes';
|
|
5
|
-
import { KeyShare } from './types';
|
|
4
|
+
import { CustomGShareGeneratingFunction, CustomRShareGeneratingFunction, SignatureShareRecord, TSSParams, TxRequest } from '../baseTypes';
|
|
5
|
+
import { KeyShare, YShare } from './types';
|
|
6
6
|
import baseTSSUtils from '../baseTSSUtils';
|
|
7
7
|
import { KeychainsTriplet } from '../../../baseCoin';
|
|
8
8
|
/**
|
|
@@ -11,25 +11,27 @@ import { KeychainsTriplet } from '../../../baseCoin';
|
|
|
11
11
|
export declare class EddsaUtils extends baseTSSUtils<KeyShare> {
|
|
12
12
|
/**
|
|
13
13
|
* Creates a Keychain containing the User's TSS signing materials.
|
|
14
|
+
* We need to have the passphrase be optional to allow for the client to store their backup key on their premises
|
|
14
15
|
*
|
|
15
16
|
* @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
|
|
16
17
|
* @param userKeyShare - user's TSS key share
|
|
17
18
|
* @param backupKeyShare - backup's TSS key share
|
|
18
19
|
* @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
|
|
19
|
-
* @param passphrase - wallet passphrase used to encrypt user's signing materials
|
|
20
|
+
* @param [passphrase] - optional wallet passphrase used to encrypt user's signing materials
|
|
20
21
|
* @param [originalPasscodeEncryptionCode] - optional encryption code needed for wallet password reset for hot wallets
|
|
21
22
|
*/
|
|
22
|
-
createUserKeychain(userGpgKey: openpgp.SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase
|
|
23
|
+
createUserKeychain(userGpgKey: openpgp.SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase?: string, originalPasscodeEncryptionCode?: string): Promise<Keychain>;
|
|
23
24
|
/**
|
|
24
25
|
* Creates a Keychain containing the Backup party's TSS signing materials.
|
|
26
|
+
* We need to have the passphrase be optional to allow for the client to store their backup key on their premises
|
|
25
27
|
*
|
|
26
28
|
* @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
|
|
27
29
|
* @param userKeyShare - User's TSS Keyshare
|
|
28
30
|
* @param backupKeyShare - Backup's TSS Keyshare
|
|
29
31
|
* @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
|
|
30
|
-
* @param passphrase - wallet passphrase used to encrypt user's signing materials
|
|
32
|
+
* @param [passphrase] - optional wallet passphrase used to encrypt user's signing materials
|
|
31
33
|
*/
|
|
32
|
-
createBackupKeychain(userGpgKey: openpgp.SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase
|
|
34
|
+
createBackupKeychain(userGpgKey: openpgp.SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase?: string): Promise<Keychain>;
|
|
33
35
|
/**
|
|
34
36
|
* Creates a Keychain containing BitGo's TSS signing materials.
|
|
35
37
|
*
|
|
@@ -44,10 +46,24 @@ export declare class EddsaUtils extends baseTSSUtils<KeyShare> {
|
|
|
44
46
|
* @param params.passphrase - passphrase used to encrypt signing materials created for User and Backup
|
|
45
47
|
*/
|
|
46
48
|
createKeychains(params: {
|
|
47
|
-
passphrase
|
|
49
|
+
passphrase?: string;
|
|
48
50
|
enterprise?: string;
|
|
49
51
|
originalPasscodeEncryptionCode?: string;
|
|
50
52
|
}): Promise<KeychainsTriplet>;
|
|
53
|
+
createRShareFromTxRequest(params: {
|
|
54
|
+
txRequest: TxRequest;
|
|
55
|
+
prv: string;
|
|
56
|
+
}): Promise<{
|
|
57
|
+
rShare: SignShare;
|
|
58
|
+
signingKeyYShare: YShare;
|
|
59
|
+
}>;
|
|
60
|
+
createGShareFromTxRequest(params: {
|
|
61
|
+
txRequest: string | TxRequest;
|
|
62
|
+
prv: string;
|
|
63
|
+
bitgoToUserRShare: SignatureShareRecord;
|
|
64
|
+
userToBitgoRShare: SignShare;
|
|
65
|
+
}): Promise<GShare>;
|
|
66
|
+
signUsingExternalSigner(txRequest: string | TxRequest, externalSignerRShareGenerator: CustomRShareGeneratingFunction, externalSignerGShareGenerator: CustomGShareGeneratingFunction): Promise<TxRequest>;
|
|
51
67
|
/**
|
|
52
68
|
* Signs the transaction associated to the transaction request.
|
|
53
69
|
*
|
|
@@ -56,11 +72,7 @@ export declare class EddsaUtils extends baseTSSUtils<KeyShare> {
|
|
|
56
72
|
* @param reqId - request id
|
|
57
73
|
* @returns {Promise<TxRequest>} fully signed TxRequest object
|
|
58
74
|
*/
|
|
59
|
-
signTxRequest(params:
|
|
60
|
-
txRequest: string | TxRequest;
|
|
61
|
-
prv: string;
|
|
62
|
-
reqId: IRequestTracer;
|
|
63
|
-
}): Promise<TxRequest>;
|
|
75
|
+
signTxRequest(params: TSSParams): Promise<TxRequest>;
|
|
64
76
|
/**
|
|
65
77
|
* Get the commonPub portion of the commonKeychain.
|
|
66
78
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/eddsa.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/eddsa.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAsB,QAAQ,EAAgC,MAAM,mBAAmB,CAAC;AAW/F,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,oBAAoB,EACpB,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AAEH,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;IACpD;;;;;;;;;;OAUG;IACG,kBAAkB,CACtB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,CAAC,EAAE,MAAM,EACnB,8BAA8B,CAAC,EAAE,MAAM,GACtC,OAAO,CAAC,QAAQ,CAAC;IAmDpB;;;;;;;;;OASG;IACG,oBAAoB,CACxB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAkDpB;;;;;;OAMG;IACG,mBAAmB,CACvB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAuCpB;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;KACzC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsCvB,yBAAyB,CAAC,MAAM,EAAE;QACtC,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;KACb,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BtD,yBAAyB,CAAC,MAAM,EAAE;QACtC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,iBAAiB,EAAE,oBAAoB,CAAC;QACxC,iBAAiB,EAAE,SAAS,CAAC;KAC9B,GAAG,OAAO,CAAC,MAAM,CAAC;IAiCb,uBAAuB,CAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,6BAA6B,EAAE,8BAA8B,EAC7D,6BAA6B,EAAE,8BAA8B,GAC5D,OAAO,CAAC,SAAS,CAAC;IA6BrB;;;;;;;OAOG;IACG,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA0D1D;;;;;OAKG;IACH,MAAM,CAAC,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;CAOtE;AACD;;GAEG;AACH,eAAO,MAAM,QAAQ,mBAAa,CAAC"}
|