@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":"preHashedSignable.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/bitgo/utils/tss/preHashedSignable.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
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 preHashedSignable_1 = require("../../../../../src/bitgo/utils/tss/preHashedSignable");
|
|
38
|
+
describe('preHashedSignable', function () {
|
|
39
|
+
it('isAvalancheAtomicTx detects codec prefix 0000', function () {
|
|
40
|
+
assert.strictEqual((0, preHashedSignable_1.isAvalancheAtomicTx)({
|
|
41
|
+
serializedTxHex: '0000000000010000007278db5c',
|
|
42
|
+
signableHex: 'abc',
|
|
43
|
+
}), true);
|
|
44
|
+
assert.strictEqual((0, preHashedSignable_1.isAvalancheAtomicTx)({
|
|
45
|
+
serializedTxHex: 'f86c808504a817c800825208',
|
|
46
|
+
signableHex: 'f86c808504a817c800825208',
|
|
47
|
+
}), false);
|
|
48
|
+
});
|
|
49
|
+
it('isCoinWithPreHashedSignable type guard', function () {
|
|
50
|
+
assert.strictEqual((0, preHashedSignable_1.isCoinWithPreHashedSignable)({ isSignablePreHashed: () => true }), true);
|
|
51
|
+
assert.strictEqual((0, preHashedSignable_1.isCoinWithPreHashedSignable)({}), false);
|
|
52
|
+
assert.strictEqual((0, preHashedSignable_1.isCoinWithPreHashedSignable)(null), false);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlSGFzaGVkU2lnbmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3ByZUhhc2hlZFNpZ25hYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDRGQUF3SDtBQUV4SCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsRUFBRSxDQUFDLCtDQUErQyxFQUFFO1FBQ2xELE1BQU0sQ0FBQyxXQUFXLENBQ2hCLElBQUEsdUNBQW1CLEVBQUM7WUFDbEIsZUFBZSxFQUFFLDRCQUE0QjtZQUM3QyxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLEVBQ0YsSUFBSSxDQUNMLENBQUM7UUFDRixNQUFNLENBQUMsV0FBVyxDQUNoQixJQUFBLHVDQUFtQixFQUFDO1lBQ2xCLGVBQWUsRUFBRSwwQkFBMEI7WUFDM0MsV0FBVyxFQUFFLDBCQUEwQjtTQUN4QyxDQUFDLEVBQ0YsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtRQUMzQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsK0NBQTJCLEVBQUMsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNGLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSwrQ0FBMkIsRUFBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsK0NBQTJCLEVBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgaXNBdmFsYW5jaGVBdG9taWNUeCwgaXNDb2luV2l0aFByZUhhc2hlZFNpZ25hYmxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9wcmVIYXNoZWRTaWduYWJsZSc7XG5cbmRlc2NyaWJlKCdwcmVIYXNoZWRTaWduYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ2lzQXZhbGFuY2hlQXRvbWljVHggZGV0ZWN0cyBjb2RlYyBwcmVmaXggMDAwMCcsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICBpc0F2YWxhbmNoZUF0b21pY1R4KHtcbiAgICAgICAgc2VyaWFsaXplZFR4SGV4OiAnMDAwMDAwMDAwMDAxMDAwMDAwNzI3OGRiNWMnLFxuICAgICAgICBzaWduYWJsZUhleDogJ2FiYycsXG4gICAgICB9KSxcbiAgICAgIHRydWVcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIGlzQXZhbGFuY2hlQXRvbWljVHgoe1xuICAgICAgICBzZXJpYWxpemVkVHhIZXg6ICdmODZjODA4NTA0YTgxN2M4MDA4MjUyMDgnLFxuICAgICAgICBzaWduYWJsZUhleDogJ2Y4NmM4MDg1MDRhODE3YzgwMDgyNTIwOCcsXG4gICAgICB9KSxcbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2lzQ29pbldpdGhQcmVIYXNoZWRTaWduYWJsZSB0eXBlIGd1YXJkJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0NvaW5XaXRoUHJlSGFzaGVkU2lnbmFibGUoeyBpc1NpZ25hYmxlUHJlSGFzaGVkOiAoKSA9PiB0cnVlIH0pLCB0cnVlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNDb2luV2l0aFByZUhhc2hlZFNpZ25hYmxlKHt9KSwgZmFsc2UpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0NvaW5XaXRoUHJlSGFzaGVkU2lnbmFibGUobnVsbCksIGZhbHNlKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ofcWalletAddressCreation.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/wallet/ofcWalletAddressCreation.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/**
|
|
7
|
+
* @prettier
|
|
8
|
+
*/
|
|
9
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
10
|
+
require("should");
|
|
11
|
+
const wallet_1 = require("../../../../src/bitgo/wallet/wallet");
|
|
12
|
+
const coins_1 = require("../../../../src/coins");
|
|
13
|
+
const OFC_ZEC_CONFIG = {
|
|
14
|
+
coin: 'ofczec',
|
|
15
|
+
decimalPlaces: 8,
|
|
16
|
+
name: 'OFCZEC',
|
|
17
|
+
type: 'ofczec',
|
|
18
|
+
backingCoin: 'zec',
|
|
19
|
+
isFiat: false,
|
|
20
|
+
};
|
|
21
|
+
describe('Wallet - OFC createAddress', function () {
|
|
22
|
+
let mockBitGo;
|
|
23
|
+
let ofcToken;
|
|
24
|
+
let keychainsGetStub;
|
|
25
|
+
function makePostChain(resolved) {
|
|
26
|
+
const chain = {};
|
|
27
|
+
chain.send = sinon_1.default.stub().returns(chain);
|
|
28
|
+
chain.result = sinon_1.default.stub().resolves(resolved);
|
|
29
|
+
return chain;
|
|
30
|
+
}
|
|
31
|
+
beforeEach(function () {
|
|
32
|
+
keychainsGetStub = sinon_1.default.stub().resolves({ id: 'user-key-id', pub: 'xpub-value' });
|
|
33
|
+
mockBitGo = {
|
|
34
|
+
url: sinon_1.default.stub().returns('https://test.bitgo.com/'),
|
|
35
|
+
post: sinon_1.default.stub(),
|
|
36
|
+
setRequestTracer: sinon_1.default.stub(),
|
|
37
|
+
};
|
|
38
|
+
ofcToken = new coins_1.OfcToken(mockBitGo, OFC_ZEC_CONFIG);
|
|
39
|
+
mockBitGo.coin = sinon_1.default.stub().returns(ofcToken);
|
|
40
|
+
sinon_1.default.stub(coins_1.OfcToken.prototype, 'keychains').returns({ get: keychainsGetStub });
|
|
41
|
+
});
|
|
42
|
+
afterEach(function () {
|
|
43
|
+
sinon_1.default.restore();
|
|
44
|
+
});
|
|
45
|
+
const mockAddressResponse = {
|
|
46
|
+
id: 'new-address-id',
|
|
47
|
+
address: 'bg-aabbccddeeff00112233445566778899',
|
|
48
|
+
chain: 0,
|
|
49
|
+
index: 1,
|
|
50
|
+
};
|
|
51
|
+
describe('single-key OFC wallet (userKeySigningRequired: true)', function () {
|
|
52
|
+
it('should create a receive address without fetching any keychains', async function () {
|
|
53
|
+
const walletData = {
|
|
54
|
+
id: 'wallet-id',
|
|
55
|
+
coin: 'ofc',
|
|
56
|
+
keys: ['user-key-id'],
|
|
57
|
+
type: 'trading',
|
|
58
|
+
multisigType: 'onchain',
|
|
59
|
+
enterprise: 'ent-id',
|
|
60
|
+
userKeySigningRequired: true,
|
|
61
|
+
};
|
|
62
|
+
const wallet = new wallet_1.Wallet(mockBitGo, ofcToken, walletData);
|
|
63
|
+
mockBitGo.post.returns(makePostChain(mockAddressResponse));
|
|
64
|
+
const result = await wallet.createAddress({ onToken: 'ofczec' });
|
|
65
|
+
result.should.have.property('id', 'new-address-id');
|
|
66
|
+
result.should.have.property('address', 'bg-aabbccddeeff00112233445566778899');
|
|
67
|
+
keychainsGetStub.called.should.be.false();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('two-key OFC wallet (userKeySigningRequired: false)', function () {
|
|
71
|
+
it('should create a receive address without fetching keychains', async function () {
|
|
72
|
+
const walletData = {
|
|
73
|
+
id: 'wallet-id',
|
|
74
|
+
coin: 'ofc',
|
|
75
|
+
keys: ['user-key-id', 'bitgo-key-id'],
|
|
76
|
+
type: 'trading',
|
|
77
|
+
multisigType: 'onchain',
|
|
78
|
+
enterprise: 'ent-id',
|
|
79
|
+
userKeySigningRequired: false,
|
|
80
|
+
};
|
|
81
|
+
const wallet = new wallet_1.Wallet(mockBitGo, ofcToken, walletData);
|
|
82
|
+
mockBitGo.post.returns(makePostChain(mockAddressResponse));
|
|
83
|
+
const result = await wallet.createAddress({ onToken: 'ofczec' });
|
|
84
|
+
result.should.have.property('id', 'new-address-id');
|
|
85
|
+
keychainsGetStub.called.should.be.false();
|
|
86
|
+
});
|
|
87
|
+
it('should succeed even if keychains().get() would fail for a server-managed key', async function () {
|
|
88
|
+
keychainsGetStub.rejects(new Error('key not found'));
|
|
89
|
+
const walletData = {
|
|
90
|
+
id: 'wallet-id',
|
|
91
|
+
coin: 'ofc',
|
|
92
|
+
keys: ['user-key-id', 'bitgo-key-id'],
|
|
93
|
+
type: 'trading',
|
|
94
|
+
multisigType: 'onchain',
|
|
95
|
+
enterprise: 'ent-id',
|
|
96
|
+
userKeySigningRequired: false,
|
|
97
|
+
};
|
|
98
|
+
const wallet = new wallet_1.Wallet(mockBitGo, ofcToken, walletData);
|
|
99
|
+
mockBitGo.post.returns(makePostChain(mockAddressResponse));
|
|
100
|
+
const result = await wallet.createAddress({ onToken: 'ofczec' });
|
|
101
|
+
result.should.have.property('id', 'new-address-id');
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe('non-OFC wallet (eth)', function () {
|
|
105
|
+
it('should still fetch keychains for address verification', async function () {
|
|
106
|
+
const mockEthCoin = {
|
|
107
|
+
getFamily: sinon_1.default.stub().returns('eth'),
|
|
108
|
+
isEVM: sinon_1.default.stub().returns(true),
|
|
109
|
+
supportsTss: sinon_1.default.stub().returns(false),
|
|
110
|
+
url: sinon_1.default.stub().returns('/api/v2/eth/wallet/wallet-id/address'),
|
|
111
|
+
isWalletAddress: sinon_1.default.stub().resolves(true),
|
|
112
|
+
keychains: sinon_1.default.stub().returns({ get: keychainsGetStub }),
|
|
113
|
+
};
|
|
114
|
+
const walletData = {
|
|
115
|
+
id: 'wallet-id',
|
|
116
|
+
coin: 'eth',
|
|
117
|
+
keys: ['user-key-id', 'backup-key-id', 'bitgo-key-id'],
|
|
118
|
+
coinSpecific: { pendingChainInitialization: false },
|
|
119
|
+
};
|
|
120
|
+
const wallet = new wallet_1.Wallet(mockBitGo, mockEthCoin, walletData);
|
|
121
|
+
mockBitGo.post.returns(makePostChain({ id: 'eth-addr-id', address: '0xabc', coinSpecific: {} }));
|
|
122
|
+
await wallet.createAddress({});
|
|
123
|
+
keychainsGetStub.callCount.should.equal(3);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
describe('missing onToken parameter', function () {
|
|
127
|
+
it('should throw for OFC wallets when onToken is omitted', async function () {
|
|
128
|
+
const walletData = {
|
|
129
|
+
id: 'wallet-id',
|
|
130
|
+
coin: 'ofc',
|
|
131
|
+
keys: ['user-key-id'],
|
|
132
|
+
type: 'trading',
|
|
133
|
+
multisigType: 'onchain',
|
|
134
|
+
enterprise: 'ent-id',
|
|
135
|
+
};
|
|
136
|
+
const wallet = new wallet_1.Wallet(mockBitGo, ofcToken, walletData);
|
|
137
|
+
await wallet.createAddress({}).should.be.rejectedWith('onToken is a mandatory parameter for OFC wallets');
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjV2FsbGV0QWRkcmVzc0NyZWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC9vZmNXYWxsZXRBZGRyZXNzQ3JlYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILGtEQUEwQjtBQUMxQixrQkFBZ0I7QUFDaEIsZ0VBQTZEO0FBQzdELGlEQUFpRDtBQUVqRCxNQUFNLGNBQWMsR0FBRztJQUNyQixJQUFJLEVBQUUsUUFBUTtJQUNkLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLFFBQVE7SUFDZCxXQUFXLEVBQUUsS0FBSztJQUNsQixNQUFNLEVBQUUsS0FBSztDQUNkLENBQUM7QUFFRixRQUFRLENBQUMsNEJBQTRCLEVBQUU7SUFDckMsSUFBSSxTQUFjLENBQUM7SUFDbkIsSUFBSSxRQUFrQixDQUFDO0lBQ3ZCLElBQUksZ0JBQWlDLENBQUM7SUFFdEMsU0FBUyxhQUFhLENBQUMsUUFBaUI7UUFDdEMsTUFBTSxLQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxJQUFJLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxLQUFLLENBQUMsTUFBTSxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsVUFBVSxDQUFDO1FBQ1QsZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbkYsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FB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c0RBQXNELEVBQUUsS0FBSztZQUM5RCxNQUFNLFVBQVUsR0FBRztnQkFDakIsRUFBRSxFQUFFLFdBQVc7Z0JBQ2YsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUNyQixJQUFJLEVBQUUsU0FBUztnQkFDZixZQUFZLEVBQUUsU0FBUztnQkFDdkIsVUFBVSxFQUFFLFFBQVE7YUFDckIsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFM0QsTUFBTSxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDNUcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IFdhbGxldCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvd2FsbGV0JztcbmltcG9ydCB7IE9mY1Rva2VuIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2NvaW5zJztcblxuY29uc3QgT0ZDX1pFQ19DT05GSUcgPSB7XG4gIGNvaW46ICdvZmN6ZWMnLFxuICBkZWNpbWFsUGxhY2VzOiA4LFxuICBuYW1lOiAnT0ZDWkVDJyxcbiAgdHlwZTogJ29mY3plYycsXG4gIGJhY2tpbmdDb2luOiAnemVjJyxcbiAgaXNGaWF0OiBmYWxzZSxcbn07XG5cbmRlc2NyaWJlKCdXYWxsZXQgLSBPRkMgY3JlYXRlQWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgb2ZjVG9rZW46IE9mY1Rva2VuO1xuICBsZXQga2V5Y2hhaW5zR2V0U3R1Yjogc2lub24uU2lub25TdHViO1xuXG4gIGZ1bmN0aW9uIG1ha2VQb3N0Q2hhaW4ocmVzb2x2ZWQ6IHVua25vd24pOiBhbnkge1xuICAgIGNvbnN0IGNoYWluOiBhbnkgPSB7fTtcbiAgICBjaGFpbi5zZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoY2hhaW4pO1xuICAgIGNoYWluLnJlc3VsdCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhyZXNvbHZlZCk7XG4gICAgcmV0dXJuIGNoYWluO1xuICB9XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAga2V5Y2hhaW5zR2V0U3R1YiA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiAndXNlci1rZXktaWQnLCBwdWI6ICd4cHViLXZhbHVlJyB9KTtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdodHRwczovL3Rlc3QuYml0Z28uY29tLycpLFxuICAgICAgcG9zdDogc2lub24uc3R1YigpLFxuICAgICAgc2V0UmVxdWVzdFRyYWNlcjogc2lub24uc3R1YigpLFxuICAgIH07XG4gICAgb2ZjVG9rZW4gPSBuZXcgT2ZjVG9rZW4obW9ja0JpdEdvLCBPRkNfWkVDX0NPTkZJRyk7XG4gICAgbW9ja0JpdEdvLmNvaW4gPSBzaW5vbi5zdHViKCkucmV0dXJucyhvZmNUb2tlbik7XG4gICAgc2lub24uc3R1YihPZmNUb2tlbi5wcm90b3R5cGUsICdrZXljaGFpbnMnKS5yZXR1cm5zKHsgZ2V0OiBrZXljaGFpbnNHZXRTdHViIH0gYXMgYW55KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGNvbnN0IG1vY2tBZGRyZXNzUmVzcG9uc2UgPSB7XG4gICAgaWQ6ICduZXctYWRkcmVzcy1pZCcsXG4gICAgYWRkcmVzczogJ2JnLWFhYmJjY2RkZWVmZjAwMTEyMjMzNDQ1NTY2Nzc4ODk5JyxcbiAgICBjaGFpbjogMCxcbiAgICBpbmRleDogMSxcbiAgfTtcblxuICBkZXNjcmliZSgnc2luZ2xlLWtleSBPRkMgd2FsbGV0ICh1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiB0cnVlKScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHJlY2VpdmUgYWRkcmVzcyB3aXRob3V0IGZldGNoaW5nIGFueSBrZXljaGFpbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJ3dhbGxldC1pZCcsXG4gICAgICAgIGNvaW46ICdvZmMnLFxuICAgICAgICBrZXlzOiBbJ3VzZXIta2V5LWlkJ10sXG4gICAgICAgIHR5cGU6ICd0cmFkaW5nJyxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgIGVudGVycHJpc2U6ICdlbnQtaWQnLFxuICAgICAgICB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiB0cnVlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBvZmNUb2tlbiwgd2FsbGV0RGF0YSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKG1ha2VQb3N0Q2hhaW4obW9ja0FkZHJlc3NSZXNwb25zZSkpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWxsZXQuY3JlYXRlQWRkcmVzcyh7IG9uVG9rZW46ICdvZmN6ZWMnIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lkJywgJ25ldy1hZGRyZXNzLWlkJyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2FkZHJlc3MnLCAnYmctYWFiYmNjZGRlZWZmMDAxMTIyMzM0NDU1NjY3Nzg4OTknKTtcbiAgICAgIGtleWNoYWluc0dldFN0dWIuY2FsbGVkLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndHdvLWtleSBPRkMgd2FsbGV0ICh1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSknLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSByZWNlaXZlIGFkZHJlc3Mgd2l0aG91dCBmZXRjaGluZyBrZXljaGFpbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJ3dhbGxldC1pZCcsXG4gICAgICAgIGNvaW46ICdvZmMnLFxuICAgICAgICBrZXlzOiBbJ3VzZXIta2V5LWlkJywgJ2JpdGdvLWtleS1pZCddLFxuICAgICAgICB0eXBlOiAndHJhZGluZycsXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ29uY2hhaW4nLFxuICAgICAgICBlbnRlcnByaXNlOiAnZW50LWlkJyxcbiAgICAgICAgdXNlcktleVNpZ25pbmdSZXF1aXJlZDogZmFsc2UsXG4gICAgICB9O1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChtb2NrQml0R28sIG9mY1Rva2VuLCB3YWxsZXREYXRhKTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMobWFrZVBvc3RDaGFpbihtb2NrQWRkcmVzc1Jlc3BvbnNlKSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhbGxldC5jcmVhdGVBZGRyZXNzKHsgb25Ub2tlbjogJ29mY3plYycgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaWQnLCAnbmV3LWFkZHJlc3MtaWQnKTtcbiAgICAgIGtleWNoYWluc0dldFN0dWIuY2FsbGVkLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIGV2ZW4gaWYga2V5Y2hhaW5zKCkuZ2V0KCkgd291bGQgZmFpbCBmb3IgYSBzZXJ2ZXItbWFuYWdlZCBrZXknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBrZXljaGFpbnNHZXRTdHViLnJlamVjdHMobmV3IEVycm9yKCdrZXkgbm90IGZvdW5kJykpO1xuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICd3YWxsZXQtaWQnLFxuICAgICAgICBjb2luOiAnb2ZjJyxcbiAgICAgICAga2V5czogWyd1c2VyLWtleS1pZCcsICdiaXRnby1rZXktaWQnXSxcbiAgICAgICAgdHlwZTogJ3RyYWRpbmcnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyxcbiAgICAgICAgZW50ZXJwcmlzZTogJ2VudC1pZCcsXG4gICAgICAgIHVzZXJLZXlTaWduaW5nUmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBvZmNUb2tlbiwgd2FsbGV0RGF0YSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKG1ha2VQb3N0Q2hhaW4obW9ja0FkZHJlc3NSZXNwb25zZSkpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWxsZXQuY3JlYXRlQWRkcmVzcyh7IG9uVG9rZW46ICdvZmN6ZWMnIH0pO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdpZCcsICduZXctYWRkcmVzcy1pZCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbm9uLU9GQyB3YWxsZXQgKGV0aCknLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzdGlsbCBmZXRjaCBrZXljaGFpbnMgZm9yIGFkZHJlc3MgdmVyaWZpY2F0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja0V0aENvaW46IGFueSA9IHtcbiAgICAgICAgZ2V0RmFtaWx5OiBzaW5vbi5zdHViKCkucmV0dXJucygnZXRoJyksXG4gICAgICAgIGlzRVZNOiBzaW5vbi5zdHViKCkucmV0dXJucyh0cnVlKSxcbiAgICAgICAgc3VwcG9ydHNUc3M6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICAgICAgdXJsOiBzaW5vbi5zdHViKCkucmV0dXJucygnL2FwaS92Mi9ldGgvd2FsbGV0L3dhbGxldC1pZC9hZGRyZXNzJyksXG4gICAgICAgIGlzV2FsbGV0QWRkcmVzczogc2lub24uc3R1YigpLnJlc29sdmVzKHRydWUpLFxuICAgICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgZ2V0OiBrZXljaGFpbnNHZXRTdHViIH0pLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnd2FsbGV0LWlkJyxcbiAgICAgICAgY29pbjogJ2V0aCcsXG4gICAgICAgIGtleXM6IFsndXNlci1rZXktaWQnLCAnYmFja3VwLWtleS1pZCcsICdiaXRnby1rZXktaWQnXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7IHBlbmRpbmdDaGFpbkluaXRpYWxpemF0aW9uOiBmYWxzZSB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBtb2NrRXRoQ29pbiwgd2FsbGV0RGF0YSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKG1ha2VQb3N0Q2hhaW4oeyBpZDogJ2V0aC1hZGRyLWlkJywgYWRkcmVzczogJzB4YWJjJywgY29pblNwZWNpZmljOiB7fSB9KSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldC5jcmVhdGVBZGRyZXNzKHt9KTtcblxuICAgICAga2V5Y2hhaW5zR2V0U3R1Yi5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDMpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbWlzc2luZyBvblRva2VuIHBhcmFtZXRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHRocm93IGZvciBPRkMgd2FsbGV0cyB3aGVuIG9uVG9rZW4gaXMgb21pdHRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnd2FsbGV0LWlkJyxcbiAgICAgICAgY29pbjogJ29mYycsXG4gICAgICAgIGtleXM6IFsndXNlci1rZXktaWQnXSxcbiAgICAgICAgdHlwZTogJ3RyYWRpbmcnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyxcbiAgICAgICAgZW50ZXJwcmlzZTogJ2VudC1pZCcsXG4gICAgICB9O1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChtb2NrQml0R28sIG9mY1Rva2VuLCB3YWxsZXREYXRhKTtcblxuICAgICAgYXdhaXQgd2FsbGV0LmNyZWF0ZUFkZHJlc3Moe30pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ29uVG9rZW4gaXMgYSBtYW5kYXRvcnkgcGFyYW1ldGVyIGZvciBPRkMgd2FsbGV0cycpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletsEncryptionVersion.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/wallet/walletsEncryptionVersion.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,228 @@
|
|
|
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
|
+
require("should");
|
|
39
|
+
const wallets_1 = require("../../../../src/bitgo/wallet/wallets");
|
|
40
|
+
const wallet_1 = require("../../../../src/bitgo/wallet/wallet");
|
|
41
|
+
describe('Wallets - encryptionVersion threading', function () {
|
|
42
|
+
let wallets;
|
|
43
|
+
let mockBitGo;
|
|
44
|
+
let mockBaseCoin;
|
|
45
|
+
let mockKeychains;
|
|
46
|
+
const userPrv = 'xprvSomeUserPrivateKey';
|
|
47
|
+
const userPub = 'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8';
|
|
48
|
+
beforeEach(function () {
|
|
49
|
+
mockKeychains = {
|
|
50
|
+
create: sinon.stub().returns({ pub: userPub, prv: userPrv }),
|
|
51
|
+
add: sinon.stub().resolves({ id: 'user-key-id', pub: userPub, encryptedPrv: 'encrypted-prv' }),
|
|
52
|
+
};
|
|
53
|
+
mockBitGo = {
|
|
54
|
+
encryptAsync: sinon
|
|
55
|
+
.stub()
|
|
56
|
+
.callsFake(async ({ password, input }) => `enc:${password}:${input}`),
|
|
57
|
+
decryptAsync: sinon.stub().resolves('decryptedPrv'),
|
|
58
|
+
get: sinon.stub().returns({ result: sinon.stub(), query: sinon.stub().returnsThis() }),
|
|
59
|
+
post: sinon.stub().returns({ send: sinon.stub().returns({ result: sinon.stub().resolves({}) }) }),
|
|
60
|
+
put: sinon.stub().returns({
|
|
61
|
+
send: sinon
|
|
62
|
+
.stub()
|
|
63
|
+
.returns({ result: sinon.stub().resolves({ acceptedWalletShares: [], walletShareUpdateErrors: [] }) }),
|
|
64
|
+
}),
|
|
65
|
+
getECDHKeychain: sinon.stub().resolves({ encryptedXprv: 'encXprv' }),
|
|
66
|
+
setRequestTracer: sinon.stub(),
|
|
67
|
+
url: sinon.stub().returns('/test/url'),
|
|
68
|
+
};
|
|
69
|
+
mockBaseCoin = {
|
|
70
|
+
keychains: sinon.stub().returns(mockKeychains),
|
|
71
|
+
url: sinon.stub().callsFake((path) => path),
|
|
72
|
+
getFamily: sinon.stub().returns('btc'),
|
|
73
|
+
getChain: sinon.stub().returns('btc'),
|
|
74
|
+
supportsTss: sinon.stub().returns(false),
|
|
75
|
+
getMPCAlgorithm: sinon.stub().returns('ecdsa'),
|
|
76
|
+
};
|
|
77
|
+
wallets = new wallets_1.Wallets(mockBitGo, mockBaseCoin);
|
|
78
|
+
});
|
|
79
|
+
afterEach(function () {
|
|
80
|
+
sinon.restore();
|
|
81
|
+
});
|
|
82
|
+
describe('acceptShare', function () {
|
|
83
|
+
it('passes encryptionVersion: 2 to encryptAsync on the multiUserKeyRotationRequired path', async function () {
|
|
84
|
+
mockBitGo.get.returns({
|
|
85
|
+
result: sinon.stub().resolves({
|
|
86
|
+
userMultiKeyRotationRequired: true,
|
|
87
|
+
keychain: null,
|
|
88
|
+
permissions: ['spend'],
|
|
89
|
+
wallet: 'wallet-id',
|
|
90
|
+
}),
|
|
91
|
+
});
|
|
92
|
+
await wallets.acceptShare({
|
|
93
|
+
walletShareId: 'share-id',
|
|
94
|
+
userPassword: 'my-password',
|
|
95
|
+
encryptionVersion: 2,
|
|
96
|
+
});
|
|
97
|
+
assert.ok(mockBitGo.encryptAsync.called, 'encryptAsync should have been called');
|
|
98
|
+
const call = mockBitGo.encryptAsync.firstCall;
|
|
99
|
+
assert.strictEqual(call.args[0].encryptionVersion, 2);
|
|
100
|
+
});
|
|
101
|
+
it('passes encryptionVersion: undefined when not set', async function () {
|
|
102
|
+
mockBitGo.get.returns({
|
|
103
|
+
result: sinon.stub().resolves({
|
|
104
|
+
userMultiKeyRotationRequired: true,
|
|
105
|
+
keychain: null,
|
|
106
|
+
permissions: ['spend'],
|
|
107
|
+
wallet: 'wallet-id',
|
|
108
|
+
}),
|
|
109
|
+
});
|
|
110
|
+
await wallets.acceptShare({
|
|
111
|
+
walletShareId: 'share-id',
|
|
112
|
+
userPassword: 'my-password',
|
|
113
|
+
});
|
|
114
|
+
assert.ok(mockBitGo.encryptAsync.called);
|
|
115
|
+
const call = mockBitGo.encryptAsync.firstCall;
|
|
116
|
+
assert.strictEqual(call.args[0].encryptionVersion, undefined);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('bulkAcceptShare', function () {
|
|
120
|
+
const walletSharesList = {
|
|
121
|
+
incoming: [
|
|
122
|
+
{
|
|
123
|
+
id: 'share-id',
|
|
124
|
+
userMultiKeyRotationRequired: true,
|
|
125
|
+
keychain: null,
|
|
126
|
+
permissions: ['spend'],
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
outgoing: [],
|
|
130
|
+
};
|
|
131
|
+
beforeEach(function () {
|
|
132
|
+
mockBitGo.get.returns({ result: sinon.stub().resolves(walletSharesList) });
|
|
133
|
+
});
|
|
134
|
+
it('passes encryptionVersion: 2 to encryptAsync on the multiUserKeyRotationRequired path', async function () {
|
|
135
|
+
await wallets.bulkAcceptShare({
|
|
136
|
+
walletShareIds: ['share-id'],
|
|
137
|
+
userLoginPassword: 'login-password',
|
|
138
|
+
encryptionVersion: 2,
|
|
139
|
+
});
|
|
140
|
+
assert.ok(mockBitGo.encryptAsync.called);
|
|
141
|
+
const call = mockBitGo.encryptAsync.firstCall;
|
|
142
|
+
assert.strictEqual(call.args[0].encryptionVersion, 2);
|
|
143
|
+
});
|
|
144
|
+
it('passes encryptionVersion: undefined when not set', async function () {
|
|
145
|
+
await wallets.bulkAcceptShare({
|
|
146
|
+
walletShareIds: ['share-id'],
|
|
147
|
+
userLoginPassword: 'login-password',
|
|
148
|
+
});
|
|
149
|
+
assert.ok(mockBitGo.encryptAsync.called);
|
|
150
|
+
const call = mockBitGo.encryptAsync.firstCall;
|
|
151
|
+
assert.strictEqual(call.args[0].encryptionVersion, undefined);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
describe('Wallet.shareWallet / createBulkWalletShare', function () {
|
|
155
|
+
let wallet;
|
|
156
|
+
beforeEach(function () {
|
|
157
|
+
const mockWalletData = {
|
|
158
|
+
id: 'wallet-id',
|
|
159
|
+
keys: ['key-1', 'key-2', 'key-3'],
|
|
160
|
+
coin: 'btc',
|
|
161
|
+
label: 'Test Wallet',
|
|
162
|
+
users: [],
|
|
163
|
+
multisigType: 'onchain',
|
|
164
|
+
type: 'hot',
|
|
165
|
+
};
|
|
166
|
+
mockBaseCoin.supportsTss = sinon.stub().returns(false);
|
|
167
|
+
mockBaseCoin.getMPCAlgorithm = sinon.stub().returns('ecdsa');
|
|
168
|
+
wallet = new wallet_1.Wallet(mockBitGo, mockBaseCoin, mockWalletData);
|
|
169
|
+
});
|
|
170
|
+
it('shareWallet passes encryptionVersion to prepareSharedKeychain', async function () {
|
|
171
|
+
const prepareStub = sinon.stub(wallet, 'prepareSharedKeychain').resolves({});
|
|
172
|
+
mockBitGo.getSharingKey = sinon.stub().resolves({ userId: 'user-id', pubkey: 'recvPub', path: 'm/0' });
|
|
173
|
+
mockBitGo.post.returns({ send: sinon.stub().returns({ result: sinon.stub().resolves({}) }) });
|
|
174
|
+
await wallet.shareWallet({
|
|
175
|
+
email: 'test@test.com',
|
|
176
|
+
permissions: 'spend',
|
|
177
|
+
walletPassphrase: 'passphrase',
|
|
178
|
+
encryptionVersion: 2,
|
|
179
|
+
});
|
|
180
|
+
assert.ok(prepareStub.calledOnce, 'prepareSharedKeychain should be called');
|
|
181
|
+
assert.strictEqual(prepareStub.firstCall.args[3], 2, 'encryptionVersion should be forwarded');
|
|
182
|
+
});
|
|
183
|
+
it('shareWallet passes encryptionVersion: undefined when not set', async function () {
|
|
184
|
+
const prepareStub = sinon.stub(wallet, 'prepareSharedKeychain').resolves({});
|
|
185
|
+
mockBitGo.getSharingKey = sinon.stub().resolves({ userId: 'user-id', pubkey: 'recvPub', path: 'm/0' });
|
|
186
|
+
mockBitGo.post.returns({ send: sinon.stub().returns({ result: sinon.stub().resolves({}) }) });
|
|
187
|
+
await wallet.shareWallet({
|
|
188
|
+
email: 'test@test.com',
|
|
189
|
+
permissions: 'spend',
|
|
190
|
+
walletPassphrase: 'passphrase',
|
|
191
|
+
});
|
|
192
|
+
assert.ok(prepareStub.calledOnce);
|
|
193
|
+
assert.strictEqual(prepareStub.firstCall.args[3], undefined);
|
|
194
|
+
});
|
|
195
|
+
it('createBulkWalletShare passes encryptionVersion to encryptPrvForUserAsync', async function () {
|
|
196
|
+
const encryptPrvStub = sinon
|
|
197
|
+
.stub(wallet, 'encryptPrvForUserAsync')
|
|
198
|
+
.resolves({ encryptedPrv: 'enc', pub: 'pub', fromPubKey: 'fpk', toPubKey: 'tpk', path: 'm/0' });
|
|
199
|
+
sinon
|
|
200
|
+
.stub(wallet, 'getDecryptedKeychainForSharing')
|
|
201
|
+
.resolves({ prv: 'prv', pub: 'pub', encryptedPrv: 'encPrv' });
|
|
202
|
+
sinon.stub(wallet, 'createBulkKeyShares').resolves({ shares: [] });
|
|
203
|
+
await wallet.createBulkWalletShare({
|
|
204
|
+
walletPassphrase: 'passphrase',
|
|
205
|
+
keyShareOptions: [{ userId: 'user-1', pubKey: 'pubKey', path: 'm/0', permissions: ['spend'] }],
|
|
206
|
+
encryptionVersion: 2,
|
|
207
|
+
});
|
|
208
|
+
assert.ok(encryptPrvStub.calledOnce);
|
|
209
|
+
assert.strictEqual(encryptPrvStub.firstCall.args[4], 2, 'encryptionVersion should be forwarded');
|
|
210
|
+
});
|
|
211
|
+
it('createBulkWalletShare passes encryptionVersion: undefined when not set', async function () {
|
|
212
|
+
const encryptPrvStub = sinon
|
|
213
|
+
.stub(wallet, 'encryptPrvForUserAsync')
|
|
214
|
+
.resolves({ encryptedPrv: 'enc', pub: 'pub', fromPubKey: 'fpk', toPubKey: 'tpk', path: 'm/0' });
|
|
215
|
+
sinon
|
|
216
|
+
.stub(wallet, 'getDecryptedKeychainForSharing')
|
|
217
|
+
.resolves({ prv: 'prv', pub: 'pub', encryptedPrv: 'encPrv' });
|
|
218
|
+
sinon.stub(wallet, 'createBulkKeyShares').resolves({ shares: [] });
|
|
219
|
+
await wallet.createBulkWalletShare({
|
|
220
|
+
walletPassphrase: 'passphrase',
|
|
221
|
+
keyShareOptions: [{ userId: 'user-1', pubKey: 'pubKey', path: 'm/0', permissions: ['spend'] }],
|
|
222
|
+
});
|
|
223
|
+
assert.ok(encryptPrvStub.calledOnce);
|
|
224
|
+
assert.strictEqual(encryptPrvStub.firstCall.args[4], undefined);
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0c0VuY3J5cHRpb25WZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC93YWxsZXRzRW5jcnlwdGlvblZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLGtCQUFnQjtBQUNoQixrRUFBK0Q7QUFDL0QsZ0VBQTZEO0FBRTdELFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRTtJQUNoRCxJQUFJLE9BQWdCLENBQUM7SUFDckIsSUFBSSxTQUFjLENBQUM7SUFDbkIsSUFBSSxZQUFpQixDQUFDO0lBQ3RCLElBQUksYUFBa0IsQ0FBQztJQUV2QixNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQztJQUN6QyxNQUFNLE9BQU8sR0FDWCxpSEFBaUgsQ0FBQztJQUVwSCxVQUFVLENBQUM7UUFDVCxhQUFhLEdBQUc7WUFDZCxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVELEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsQ0FBQztTQUMvRixDQUFDO1FBRUYsU0FBUyxHQUFHO1lBQ1YsWUFBWSxFQUFFLEtBQUs7aUJBQ2hCLElBQUksRUFBRTtpQkFDTixTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUMsRUFBRSxFQUFFLENBQUMsT0FBTyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDNUcsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FB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QUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBXYWxsZXRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC93YWxsZXRzJztcbmltcG9ydCB7IFdhbGxldCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvd2FsbGV0JztcblxuZGVzY3JpYmUoJ1dhbGxldHMgLSBlbmNyeXB0aW9uVmVyc2lvbiB0aHJlYWRpbmcnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB3YWxsZXRzOiBXYWxsZXRzO1xuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBtb2NrQmFzZUNvaW46IGFueTtcbiAgbGV0IG1vY2tLZXljaGFpbnM6IGFueTtcblxuICBjb25zdCB1c2VyUHJ2ID0gJ3hwcnZTb21lVXNlclByaXZhdGVLZXknO1xuICBjb25zdCB1c2VyUHViID1cbiAgICAneHB1YjY2MU15TXdBcVJiY0Z0WGdTNXNZSkFCcXFHOVlMbUM0UTFSZGFwOWdTRThOcXR3eWJHaGVQWTJnWjI5RVNGanFKb0N1MVJ1cGplOFl0R3FzZWZEMjY1VE1nN3VzVURGZHA2VzFFR01jZXQ4JztcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrS2V5Y2hhaW5zID0ge1xuICAgICAgY3JlYXRlOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHB1YjogdXNlclB1YiwgcHJ2OiB1c2VyUHJ2IH0pLFxuICAgICAgYWRkOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDogJ3VzZXIta2V5LWlkJywgcHViOiB1c2VyUHViLCBlbmNyeXB0ZWRQcnY6ICdlbmNyeXB0ZWQtcHJ2JyB9KSxcbiAgICB9O1xuXG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgZW5jcnlwdEFzeW5jOiBzaW5vblxuICAgICAgICAuc3R1YigpXG4gICAgICAgIC5jYWxsc0Zha2UoYXN5bmMgKHsgcGFzc3dvcmQsIGlucHV0IH06IHsgcGFzc3dvcmQ6IHN0cmluZzsgaW5wdXQ6IHN0cmluZyB9KSA9PiBgZW5jOiR7cGFzc3dvcmR9OiR7aW5wdXR9YCksXG4gICAgICBkZWNyeXB0QXN5bmM6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcygnZGVjcnlwdGVkUHJ2JyksXG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCksIHF1ZXJ5OiBzaW5vbi5zdHViKCkucmV0dXJuc1RoaXMoKSB9KSxcbiAgICAgIHBvc3Q6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgc2VuZDogc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7fSkgfSkgfSksXG4gICAgICBwdXQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgc2VuZDogc2lub25cbiAgICAgICAgICAuc3R1YigpXG4gICAgICAgICAgLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGFjY2VwdGVkV2FsbGV0U2hhcmVzOiBbXSwgd2FsbGV0U2hhcmVVcGRhdGVFcnJvcnM6IFtdIH0pIH0pLFxuICAgICAgfSksXG4gICAgICBnZXRFQ0RIS2V5Y2hhaW46IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGVuY3J5cHRlZFhwcnY6ICdlbmNYcHJ2JyB9KSxcbiAgICAgIHNldFJlcXVlc3RUcmFjZXI6IHNpbm9uLnN0dWIoKSxcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJy90ZXN0L3VybCcpLFxuICAgIH07XG5cbiAgICBtb2NrQmFzZUNvaW4gPSB7XG4gICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tLZXljaGFpbnMpLFxuICAgICAgdXJsOiBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChwYXRoOiBzdHJpbmcpID0+IHBhdGgpLFxuICAgICAgZ2V0RmFtaWx5OiBzaW5vbi5zdHViKCkucmV0dXJucygnYnRjJyksXG4gICAgICBnZXRDaGFpbjogc2lub24uc3R1YigpLnJldHVybnMoJ2J0YycpLFxuICAgICAgc3VwcG9ydHNUc3M6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICAgIGdldE1QQ0FsZ29yaXRobTogc2lub24uc3R1YigpLnJldHVybnMoJ2VjZHNhJyksXG4gICAgfTtcblxuICAgIHdhbGxldHMgPSBuZXcgV2FsbGV0cyhtb2NrQml0R28sIG1vY2tCYXNlQ29pbik7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWNjZXB0U2hhcmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Bhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogMiB0byBlbmNyeXB0QXN5bmMgb24gdGhlIG11bHRpVXNlcktleVJvdGF0aW9uUmVxdWlyZWQgcGF0aCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vY2tCaXRHby5nZXQucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgICB1c2VyTXVsdGlLZXlSb3RhdGlvblJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIGtleWNoYWluOiBudWxsLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbJ3NwZW5kJ10sXG4gICAgICAgICAgd2FsbGV0OiAnd2FsbGV0LWlkJyxcbiAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgd2FsbGV0cy5hY2NlcHRTaGFyZSh7XG4gICAgICAgIHdhbGxldFNoYXJlSWQ6ICdzaGFyZS1pZCcsXG4gICAgICAgIHVzZXJQYXNzd29yZDogJ215LXBhc3N3b3JkJyxcbiAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IDIsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKG1vY2tCaXRHby5lbmNyeXB0QXN5bmMuY2FsbGVkLCAnZW5jcnlwdEFzeW5jIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkJyk7XG4gICAgICBjb25zdCBjYWxsID0gbW9ja0JpdEdvLmVuY3J5cHRBc3luYy5maXJzdENhbGw7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCAyKTtcbiAgICB9KTtcblxuICAgIGl0KCdwYXNzZXMgZW5jcnlwdGlvblZlcnNpb246IHVuZGVmaW5lZCB3aGVuIG5vdCBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBtb2NrQml0R28uZ2V0LnJldHVybnMoe1xuICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgICAgdXNlck11bHRpS2V5Um90YXRpb25SZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBrZXljaGFpbjogbnVsbCxcbiAgICAgICAgICBwZXJtaXNzaW9uczogWydzcGVuZCddLFxuICAgICAgICAgIHdhbGxldDogJ3dhbGxldC1pZCcsXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldHMuYWNjZXB0U2hhcmUoe1xuICAgICAgICB3YWxsZXRTaGFyZUlkOiAnc2hhcmUtaWQnLFxuICAgICAgICB1c2VyUGFzc3dvcmQ6ICdteS1wYXNzd29yZCcsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKG1vY2tCaXRHby5lbmNyeXB0QXN5bmMuY2FsbGVkKTtcbiAgICAgIGNvbnN0IGNhbGwgPSBtb2NrQml0R28uZW5jcnlwdEFzeW5jLmZpcnN0Q2FsbDtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjYWxsLmFyZ3NbMF0uZW5jcnlwdGlvblZlcnNpb24sIHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWxrQWNjZXB0U2hhcmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgd2FsbGV0U2hhcmVzTGlzdCA9IHtcbiAgICAgIGluY29taW5nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ3NoYXJlLWlkJyxcbiAgICAgICAgICB1c2VyTXVsdGlLZXlSb3RhdGlvblJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIGtleWNoYWluOiBudWxsLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbJ3NwZW5kJ10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgb3V0Z29pbmc6IFtdLFxuICAgIH07XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vY2tCaXRHby5nZXQucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHdhbGxldFNoYXJlc0xpc3QpIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Bhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogMiB0byBlbmNyeXB0QXN5bmMgb24gdGhlIG11bHRpVXNlcktleVJvdGF0aW9uUmVxdWlyZWQgcGF0aCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHdhbGxldHMuYnVsa0FjY2VwdFNoYXJlKHtcbiAgICAgICAgd2FsbGV0U2hhcmVJZHM6IFsnc2hhcmUtaWQnXSxcbiAgICAgICAgdXNlckxvZ2luUGFzc3dvcmQ6ICdsb2dpbi1wYXNzd29yZCcsXG4gICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiAyLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhtb2NrQml0R28uZW5jcnlwdEFzeW5jLmNhbGxlZCk7XG4gICAgICBjb25zdCBjYWxsID0gbW9ja0JpdEdvLmVuY3J5cHRBc3luYy5maXJzdENhbGw7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCAyKTtcbiAgICB9KTtcblxuICAgIGl0KCdwYXNzZXMgZW5jcnlwdGlvblZlcnNpb246IHVuZGVmaW5lZCB3aGVuIG5vdCBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCB3YWxsZXRzLmJ1bGtBY2NlcHRTaGFyZSh7XG4gICAgICAgIHdhbGxldFNoYXJlSWRzOiBbJ3NoYXJlLWlkJ10sXG4gICAgICAgIHVzZXJMb2dpblBhc3N3b3JkOiAnbG9naW4tcGFzc3dvcmQnLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhtb2NrQml0R28uZW5jcnlwdEFzeW5jLmNhbGxlZCk7XG4gICAgICBjb25zdCBjYWxsID0gbW9ja0JpdEdvLmVuY3J5cHRBc3luYy5maXJzdENhbGw7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnV2FsbGV0LnNoYXJlV2FsbGV0IC8gY3JlYXRlQnVsa1dhbGxldFNoYXJlJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCB3YWxsZXQ6IFdhbGxldDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja1dhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnd2FsbGV0LWlkJyxcbiAgICAgICAga2V5czogWydrZXktMScsICdrZXktMicsICdrZXktMyddLFxuICAgICAgICBjb2luOiAnYnRjJyxcbiAgICAgICAgbGFiZWw6ICdUZXN0IFdhbGxldCcsXG4gICAgICAgIHVzZXJzOiBbXSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgfTtcbiAgICAgIG1vY2tCYXNlQ29pbi5zdXBwb3J0c1RzcyA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKTtcbiAgICAgIG1vY2tCYXNlQ29pbi5nZXRNUENBbGdvcml0aG0gPSBzaW5vbi5zdHViKCkucmV0dXJucygnZWNkc2EnKTtcbiAgICAgIHdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBtb2NrQmFzZUNvaW4sIG1vY2tXYWxsZXREYXRhKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaGFyZVdhbGxldCBwYXNzZXMgZW5jcnlwdGlvblZlcnNpb24gdG8gcHJlcGFyZVNoYXJlZEtleWNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcHJlcGFyZVN0dWIgPSBzaW5vbi5zdHViKHdhbGxldCwgJ3ByZXBhcmVTaGFyZWRLZXljaGFpbicpLnJlc29sdmVzKHt9KTtcbiAgICAgIG1vY2tCaXRHby5nZXRTaGFyaW5nS2V5ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgdXNlcklkOiAndXNlci1pZCcsIHB1YmtleTogJ3JlY3ZQdWInLCBwYXRoOiAnbS8wJyB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHt9KSB9KSB9KTtcblxuICAgICAgYXdhaXQgd2FsbGV0LnNoYXJlV2FsbGV0KHtcbiAgICAgICAgZW1haWw6ICd0ZXN0QHRlc3QuY29tJyxcbiAgICAgICAgcGVybWlzc2lvbnM6ICdzcGVuZCcsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzcGhyYXNlJyxcbiAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IDIsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKHByZXBhcmVTdHViLmNhbGxlZE9uY2UsICdwcmVwYXJlU2hhcmVkS2V5Y2hhaW4gc2hvdWxkIGJlIGNhbGxlZCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHByZXBhcmVTdHViLmZpcnN0Q2FsbC5hcmdzWzNdLCAyLCAnZW5jcnlwdGlvblZlcnNpb24gc2hvdWxkIGJlIGZvcndhcmRlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NoYXJlV2FsbGV0IHBhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogdW5kZWZpbmVkIHdoZW4gbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHByZXBhcmVTdHViID0gc2lub24uc3R1Yih3YWxsZXQsICdwcmVwYXJlU2hhcmVkS2V5Y2hhaW4nKS5yZXNvbHZlcyh7fSk7XG4gICAgICBtb2NrQml0R28uZ2V0U2hhcmluZ0tleSA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IHVzZXJJZDogJ3VzZXItaWQnLCBwdWJrZXk6ICdyZWN2UHViJywgcGF0aDogJ20vMCcgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7fSkgfSkgfSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldC5zaGFyZVdhbGxldCh7XG4gICAgICAgIGVtYWlsOiAndGVzdEB0ZXN0LmNvbScsXG4gICAgICAgIHBlcm1pc3Npb25zOiAnc3BlbmQnLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAncGFzc3BocmFzZScsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0Lm9rKHByZXBhcmVTdHViLmNhbGxlZE9uY2UpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHByZXBhcmVTdHViLmZpcnN0Q2FsbC5hcmdzWzNdLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZUJ1bGtXYWxsZXRTaGFyZSBwYXNzZXMgZW5jcnlwdGlvblZlcnNpb24gdG8gZW5jcnlwdFBydkZvclVzZXJBc3luYycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVuY3J5cHRQcnZTdHViID0gc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0LCAnZW5jcnlwdFBydkZvclVzZXJBc3luYycpXG4gICAgICAgIC5yZXNvbHZlcyh7IGVuY3J5cHRlZFBydjogJ2VuYycsIHB1YjogJ3B1YicsIGZyb21QdWJLZXk6ICdmcGsnLCB0b1B1YktleTogJ3RwaycsIHBhdGg6ICdtLzAnIH0pO1xuICAgICAgc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0IGFzIGFueSwgJ2dldERlY3J5cHRlZEtleWNoYWluRm9yU2hhcmluZycpXG4gICAgICAgIC5yZXNvbHZlcyh7IHBydjogJ3BydicsIHB1YjogJ3B1YicsIGVuY3J5cHRlZFBydjogJ2VuY1BydicgfSk7XG4gICAgICBzaW5vbi5zdHViKHdhbGxldCBhcyBhbnksICdjcmVhdGVCdWxrS2V5U2hhcmVzJykucmVzb2x2ZXMoeyBzaGFyZXM6IFtdIH0pO1xuXG4gICAgICBhd2FpdCB3YWxsZXQuY3JlYXRlQnVsa1dhbGxldFNoYXJlKHtcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ3Bhc3NwaHJhc2UnLFxuICAgICAgICBrZXlTaGFyZU9wdGlvbnM6IFt7IHVzZXJJZDogJ3VzZXItMScsIHB1YktleTogJ3B1YktleScsIHBhdGg6ICdtLzAnLCBwZXJtaXNzaW9uczogWydzcGVuZCddIH1dLFxuICAgICAgICBlbmNyeXB0aW9uVmVyc2lvbjogMixcbiAgICAgIH0pO1xuXG4gICAgICBhc3NlcnQub2soZW5jcnlwdFBydlN0dWIuY2FsbGVkT25jZSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZW5jcnlwdFBydlN0dWIuZmlyc3RDYWxsLmFyZ3NbNF0sIDIsICdlbmNyeXB0aW9uVmVyc2lvbiBzaG91bGQgYmUgZm9yd2FyZGVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlQnVsa1dhbGxldFNoYXJlIHBhc3NlcyBlbmNyeXB0aW9uVmVyc2lvbjogdW5kZWZpbmVkIHdoZW4gbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVuY3J5cHRQcnZTdHViID0gc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0LCAnZW5jcnlwdFBydkZvclVzZXJBc3luYycpXG4gICAgICAgIC5yZXNvbHZlcyh7IGVuY3J5cHRlZFBydjogJ2VuYycsIHB1YjogJ3B1YicsIGZyb21QdWJLZXk6ICdmcGsnLCB0b1B1YktleTogJ3RwaycsIHBhdGg6ICdtLzAnIH0pO1xuICAgICAgc2lub25cbiAgICAgICAgLnN0dWIod2FsbGV0IGFzIGFueSwgJ2dldERlY3J5cHRlZEtleWNoYWluRm9yU2hhcmluZycpXG4gICAgICAgIC5yZXNvbHZlcyh7IHBydjogJ3BydicsIHB1YjogJ3B1YicsIGVuY3J5cHRlZFBydjogJ2VuY1BydicgfSk7XG4gICAgICBzaW5vbi5zdHViKHdhbGxldCBhcyBhbnksICdjcmVhdGVCdWxrS2V5U2hhcmVzJykucmVzb2x2ZXMoeyBzaGFyZXM6IFtdIH0pO1xuXG4gICAgICBhd2FpdCB3YWxsZXQuY3JlYXRlQnVsa1dhbGxldFNoYXJlKHtcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ3Bhc3NwaHJhc2UnLFxuICAgICAgICBrZXlTaGFyZU9wdGlvbnM6IFt7IHVzZXJJZDogJ3VzZXItMScsIHB1YktleTogJ3B1YktleScsIHBhdGg6ICdtLzAnLCBwZXJtaXNzaW9uczogWydzcGVuZCddIH1dLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhlbmNyeXB0UHJ2U3R1Yi5jYWxsZWRPbmNlKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlbmNyeXB0UHJ2U3R1Yi5maXJzdENhbGwuYXJnc1s0XSwgdW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletsExternalSigner.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/wallet/walletsExternalSigner.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,CAAC"}
|