@bitgo/sdk-core 37.5.0 → 37.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/api/types.d.ts +1 -0
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/api/types.js +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +14 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +16 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +57 -0
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/defi/defiVault.d.ts +80 -0
- package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -0
- package/dist/src/bitgo/defi/defiVault.js +201 -0
- package/dist/src/bitgo/defi/iDefiVault.d.ts +59 -0
- package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -0
- package/dist/src/bitgo/defi/iDefiVault.js +6 -0
- package/dist/src/bitgo/defi/index.d.ts +3 -0
- package/dist/src/bitgo/defi/index.d.ts.map +1 -0
- package/dist/src/bitgo/defi/index.js +22 -0
- 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/internal/keycard.d.ts +2 -1
- package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
- package/dist/src/bitgo/internal/keycard.js +6 -3
- package/dist/src/bitgo/keychain/iKeychains.d.ts +4 -1
- 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 +2 -1
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +8 -3
- package/dist/src/bitgo/tss/common.d.ts +2 -1
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +14 -4
- package/dist/src/bitgo/utils/messageTypes.d.ts +3 -1
- package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/messageTypes.js +3 -1
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +23 -3
- package/dist/src/bitgo/utils/tss/addressVerification.d.ts +25 -0
- package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/addressVerification.js +31 -13
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +25 -3
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +5 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +25 -16
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +8 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +47 -49
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +2 -2
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +25 -15
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +18 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +77 -33
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +5 -0
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
- package/dist/src/bitgo/utils/tss/index.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/index.js +2 -1
- package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts +23 -0
- package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/preHashedSignable.js +26 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts +6 -1
- 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 +26 -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 +9 -3
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +79 -9
- package/dist/src/bitgo/wallet/wallets.d.ts +12 -2
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +179 -20
- package/dist/src/coins/ofc.d.ts +4 -0
- package/dist/src/coins/ofc.d.ts.map +1 -1
- package/dist/src/coins/ofc.js +17 -2
- package/dist/test/unit/bitgo/defi/defiVault.d.ts +2 -0
- package/dist/test/unit/bitgo/defi/defiVault.d.ts.map +1 -0
- package/dist/test/unit/bitgo/defi/defiVault.js +283 -0
- package/dist/test/unit/bitgo/utils/tss/addressVerification.js +45 -1
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.js +94 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +53 -1
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +88 -3
- package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/preHashedSignable.js +55 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.js +141 -0
- package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +228 -0
- package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +320 -0
- package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +16 -12
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecdsaEncryptionVersion.d.ts","sourceRoot":"","sources":["../../../../../../../test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const assert = __importStar(require("assert"));
|
|
37
|
+
const sinon = __importStar(require("sinon"));
|
|
38
|
+
const ecdsa_1 = require("../../../../../../src/bitgo/utils/tss/ecdsa/ecdsa");
|
|
39
|
+
/**
|
|
40
|
+
* Regression tests for the ECDSA MPCv1 createKeychains encryptionVersion bug.
|
|
41
|
+
*
|
|
42
|
+
* Previously, EcdsaUtils.createKeychains dropped `encryptionVersion` silently —
|
|
43
|
+
* it was not declared in the params and was never forwarded to createUserKeychain
|
|
44
|
+
* or createBackupKeychain, causing a version mismatch within a wallet: v2 for
|
|
45
|
+
* encryptedWalletPassphrase but v1 for the user/backup keychains.
|
|
46
|
+
*/
|
|
47
|
+
describe('EcdsaUtils.createKeychains - encryptionVersion forwarding', function () {
|
|
48
|
+
let ecdsaUtils;
|
|
49
|
+
let createUserKeychainStub;
|
|
50
|
+
let createBackupKeychainStub;
|
|
51
|
+
const fakeKeychain = { id: 'key-id', pub: 'pub', commonKeychain: 'ckc', type: 'tss' };
|
|
52
|
+
const fakeGpgKey = { publicKey: 'pub', privateKey: 'prv' };
|
|
53
|
+
const fakeKeyShare = { userHeldKeyShare: {} };
|
|
54
|
+
beforeEach(function () {
|
|
55
|
+
const mockBitgo = { getEnv: sinon.stub().returns('test') };
|
|
56
|
+
const mockCoin = {};
|
|
57
|
+
ecdsaUtils = new ecdsa_1.EcdsaUtils(mockBitgo, mockCoin);
|
|
58
|
+
createUserKeychainStub = sinon.stub(ecdsaUtils, 'createUserKeychain').resolves(fakeKeychain);
|
|
59
|
+
createBackupKeychainStub = sinon.stub(ecdsaUtils, 'createBackupKeychain').resolves(fakeKeychain);
|
|
60
|
+
sinon.stub(ecdsaUtils, 'createBitgoKeychain').resolves(fakeKeychain);
|
|
61
|
+
sinon.stub(ecdsaUtils, 'createBackupKeyShares').resolves(fakeKeyShare);
|
|
62
|
+
sinon.stub(ecdsaUtils, 'getBitgoGpgPubkeyBasedOnFeatureFlags').resolves({ mpcv2PublicKey: undefined });
|
|
63
|
+
sinon.stub(ecdsaUtils, 'getBackupGpgPubKey').resolves(fakeGpgKey);
|
|
64
|
+
sinon.stub(require('../../../../../../src/bitgo/utils/opengpgUtils'), 'generateGPGKeyPair').resolves(fakeGpgKey);
|
|
65
|
+
});
|
|
66
|
+
afterEach(function () {
|
|
67
|
+
sinon.restore();
|
|
68
|
+
});
|
|
69
|
+
it('forwards encryptionVersion: 2 to createUserKeychain', async function () {
|
|
70
|
+
await ecdsaUtils.createKeychains({ passphrase: 'pass', encryptionVersion: 2 });
|
|
71
|
+
assert.ok(createUserKeychainStub.calledOnce);
|
|
72
|
+
const userParams = createUserKeychainStub.firstCall.args[0];
|
|
73
|
+
assert.strictEqual(userParams.encryptionVersion, 2);
|
|
74
|
+
});
|
|
75
|
+
it('forwards encryptionVersion: 2 to createBackupKeychain', async function () {
|
|
76
|
+
await ecdsaUtils.createKeychains({ passphrase: 'pass', encryptionVersion: 2 });
|
|
77
|
+
assert.ok(createBackupKeychainStub.calledOnce);
|
|
78
|
+
const backupParams = createBackupKeychainStub.firstCall.args[0];
|
|
79
|
+
assert.strictEqual(backupParams.encryptionVersion, 2);
|
|
80
|
+
});
|
|
81
|
+
it('forwards encryptionVersion: undefined when not set', async function () {
|
|
82
|
+
await ecdsaUtils.createKeychains({ passphrase: 'pass' });
|
|
83
|
+
assert.ok(createUserKeychainStub.calledOnce);
|
|
84
|
+
assert.ok(createBackupKeychainStub.calledOnce);
|
|
85
|
+
assert.strictEqual(createUserKeychainStub.firstCall.args[0].encryptionVersion, undefined);
|
|
86
|
+
assert.strictEqual(createBackupKeychainStub.firstCall.args[0].encryptionVersion, undefined);
|
|
87
|
+
});
|
|
88
|
+
it('forwards encryptionVersion: 1 explicitly', async function () {
|
|
89
|
+
await ecdsaUtils.createKeychains({ passphrase: 'pass', encryptionVersion: 1 });
|
|
90
|
+
assert.strictEqual(createUserKeychainStub.firstCall.args[0].encryptionVersion, 1);
|
|
91
|
+
assert.strictEqual(createBackupKeychainStub.firstCall.args[0].encryptionVersion, 1);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FFbmNyeXB0aW9uVmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby91dGlscy90c3MvZWNkc2EvZWNkc2FFbmNyeXB0aW9uVmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFDL0IsNkVBQStFO0FBRy9FOzs7Ozs7O0dBT0c7QUFDSCxRQUFRLENBQUMsMkRBQTJELEVBQUU7SUFDcEUsSUFBSSxVQUFzQixDQUFDO0lBQzNCLElBQUksc0JBQXVDLENBQUM7SUFDNUMsSUFBSSx3QkFBeUMsQ0FBQztJQUU5QyxNQUFNLFlBQVksR0FBRyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFjLEVBQUUsQ0FBQztJQUMvRixNQUFNLFVBQVUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNELE1BQU0sWUFBWSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFOUMsVUFBVSxDQUFDO1FBQ1QsTUFBTSxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBMEIsQ0FBQztRQUNuRixNQUFNLFFBQVEsR0FBRyxFQUEwQixDQUFDO1FBRTVDLFVBQVUsR0FBRyxJQUFJLGtCQUFVLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRWpELHNCQUFzQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdGLHdCQUF3QixH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QUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IEVjZHNhVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VjZHNhL2VjZHNhJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgSUJhc2VDb2luIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3JjJztcblxuLyoqXG4gKiBSZWdyZXNzaW9uIHRlc3RzIGZvciB0aGUgRUNEU0EgTVBDdjEgY3JlYXRlS2V5Y2hhaW5zIGVuY3J5cHRpb25WZXJzaW9uIGJ1Zy5cbiAqXG4gKiBQcmV2aW91c2x5LCBFY2RzYVV0aWxzLmNyZWF0ZUtleWNoYWlucyBkcm9wcGVkIGBlbmNyeXB0aW9uVmVyc2lvbmAgc2lsZW50bHkg4oCUXG4gKiBpdCB3YXMgbm90IGRlY2xhcmVkIGluIHRoZSBwYXJhbXMgYW5kIHdhcyBuZXZlciBmb3J3YXJkZWQgdG8gY3JlYXRlVXNlcktleWNoYWluXG4gKiBvciBjcmVhdGVCYWNrdXBLZXljaGFpbiwgY2F1c2luZyBhIHZlcnNpb24gbWlzbWF0Y2ggd2l0aGluIGEgd2FsbGV0OiB2MiBmb3JcbiAqIGVuY3J5cHRlZFdhbGxldFBhc3NwaHJhc2UgYnV0IHYxIGZvciB0aGUgdXNlci9iYWNrdXAga2V5Y2hhaW5zLlxuICovXG5kZXNjcmliZSgnRWNkc2FVdGlscy5jcmVhdGVLZXljaGFpbnMgLSBlbmNyeXB0aW9uVmVyc2lvbiBmb3J3YXJkaW5nJywgZnVuY3Rpb24gKCkge1xuICBsZXQgZWNkc2FVdGlsczogRWNkc2FVdGlscztcbiAgbGV0IGNyZWF0ZVVzZXJLZXljaGFpblN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgbGV0IGNyZWF0ZUJhY2t1cEtleWNoYWluU3R1Yjogc2lub24uU2lub25TdHViO1xuXG4gIGNvbnN0IGZha2VLZXljaGFpbiA9IHsgaWQ6ICdrZXktaWQnLCBwdWI6ICdwdWInLCBjb21tb25LZXljaGFpbjogJ2NrYycsIHR5cGU6ICd0c3MnIGFzIGNvbnN0IH07XG4gIGNvbnN0IGZha2VHcGdLZXkgPSB7IHB1YmxpY0tleTogJ3B1YicsIHByaXZhdGVLZXk6ICdwcnYnIH07XG4gIGNvbnN0IGZha2VLZXlTaGFyZSA9IHsgdXNlckhlbGRLZXlTaGFyZToge30gfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBtb2NrQml0Z28gPSB7IGdldEVudjogc2lub24uc3R1YigpLnJldHVybnMoJ3Rlc3QnKSB9IGFzIHVua25vd24gYXMgQml0R29CYXNlO1xuICAgIGNvbnN0IG1vY2tDb2luID0ge30gYXMgdW5rbm93biBhcyBJQmFzZUNvaW47XG5cbiAgICBlY2RzYVV0aWxzID0gbmV3IEVjZHNhVXRpbHMobW9ja0JpdGdvLCBtb2NrQ29pbik7XG5cbiAgICBjcmVhdGVVc2VyS2V5Y2hhaW5TdHViID0gc2lub24uc3R1YihlY2RzYVV0aWxzLCAnY3JlYXRlVXNlcktleWNoYWluJykucmVzb2x2ZXMoZmFrZUtleWNoYWluKTtcbiAgICBjcmVhdGVCYWNrdXBLZXljaGFpblN0dWIgPSBzaW5vbi5zdHViKGVjZHNhVXRpbHMsICdjcmVhdGVCYWNrdXBLZXljaGFpbicpLnJlc29sdmVzKGZha2VLZXljaGFpbik7XG4gICAgc2lub24uc3R1YihlY2RzYVV0aWxzLCAnY3JlYXRlQml0Z29LZXljaGFpbicpLnJlc29sdmVzKGZha2VLZXljaGFpbik7XG4gICAgc2lub24uc3R1YihlY2RzYVV0aWxzLCAnY3JlYXRlQmFja3VwS2V5U2hhcmVzJykucmVzb2x2ZXMoZmFrZUtleVNoYXJlIGFzIGFueSk7XG4gICAgc2lub24uc3R1YihlY2RzYVV0aWxzLCAnZ2V0Qml0Z29HcGdQdWJrZXlCYXNlZE9uRmVhdHVyZUZsYWdzJykucmVzb2x2ZXMoeyBtcGN2MlB1YmxpY0tleTogdW5kZWZpbmVkIH0gYXMgYW55KTtcblxuICAgIHNpbm9uLnN0dWIoZWNkc2FVdGlscyBhcyBhbnksICdnZXRCYWNrdXBHcGdQdWJLZXknKS5yZXNvbHZlcyhmYWtlR3BnS2V5KTtcbiAgICBzaW5vbi5zdHViKHJlcXVpcmUoJy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy9vcGVuZ3BnVXRpbHMnKSwgJ2dlbmVyYXRlR1BHS2V5UGFpcicpLnJlc29sdmVzKGZha2VHcGdLZXkpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ2ZvcndhcmRzIGVuY3J5cHRpb25WZXJzaW9uOiAyIHRvIGNyZWF0ZVVzZXJLZXljaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBlY2RzYVV0aWxzLmNyZWF0ZUtleWNoYWlucyh7IHBhc3NwaHJhc2U6ICdwYXNzJywgZW5jcnlwdGlvblZlcnNpb246IDIgfSk7XG5cbiAgICBhc3NlcnQub2soY3JlYXRlVXNlcktleWNoYWluU3R1Yi5jYWxsZWRPbmNlKTtcbiAgICBjb25zdCB1c2VyUGFyYW1zID0gY3JlYXRlVXNlcktleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXNlclBhcmFtcy5lbmNyeXB0aW9uVmVyc2lvbiwgMik7XG4gIH0pO1xuXG4gIGl0KCdmb3J3YXJkcyBlbmNyeXB0aW9uVmVyc2lvbjogMiB0byBjcmVhdGVCYWNrdXBLZXljaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBlY2RzYVV0aWxzLmNyZWF0ZUtleWNoYWlucyh7IHBhc3NwaHJhc2U6ICdwYXNzJywgZW5jcnlwdGlvblZlcnNpb246IDIgfSk7XG5cbiAgICBhc3NlcnQub2soY3JlYXRlQmFja3VwS2V5Y2hhaW5TdHViLmNhbGxlZE9uY2UpO1xuICAgIGNvbnN0IGJhY2t1cFBhcmFtcyA9IGNyZWF0ZUJhY2t1cEtleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYmFja3VwUGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uLCAyKTtcbiAgfSk7XG5cbiAgaXQoJ2ZvcndhcmRzIGVuY3J5cHRpb25WZXJzaW9uOiB1bmRlZmluZWQgd2hlbiBub3Qgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGVjZHNhVXRpbHMuY3JlYXRlS2V5Y2hhaW5zKHsgcGFzc3BocmFzZTogJ3Bhc3MnIH0pO1xuXG4gICAgYXNzZXJ0Lm9rKGNyZWF0ZVVzZXJLZXljaGFpblN0dWIuY2FsbGVkT25jZSk7XG4gICAgYXNzZXJ0Lm9rKGNyZWF0ZUJhY2t1cEtleWNoYWluU3R1Yi5jYWxsZWRPbmNlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3JlYXRlVXNlcktleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXS5lbmNyeXB0aW9uVmVyc2lvbiwgdW5kZWZpbmVkKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3JlYXRlQmFja3VwS2V5Y2hhaW5TdHViLmZpcnN0Q2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCB1bmRlZmluZWQpO1xuICB9KTtcblxuICBpdCgnZm9yd2FyZHMgZW5jcnlwdGlvblZlcnNpb246IDEgZXhwbGljaXRseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBlY2RzYVV0aWxzLmNyZWF0ZUtleWNoYWlucyh7IHBhc3NwaHJhc2U6ICdwYXNzJywgZW5jcnlwdGlvblZlcnNpb246IDEgfSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3JlYXRlVXNlcktleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXS5lbmNyeXB0aW9uVmVyc2lvbiwgMSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNyZWF0ZUJhY2t1cEtleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXS5lbmNyeXB0aW9uVmVyc2lvbiwgMSk7XG4gIH0pO1xufSk7XG4iXX0=
|