@bitgo-beta/sdk-api 1.10.1-beta.210 → 1.10.1-beta.2101
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/package.json +20 -27
- package/dist/src/api.d.ts +18 -6
- package/dist/src/api.d.ts.map +1 -1
- package/dist/src/api.js +151 -72
- package/dist/src/bitgoAPI.d.ts +123 -30
- package/dist/src/bitgoAPI.d.ts.map +1 -1
- package/dist/src/bitgoAPI.js +794 -339
- package/dist/src/decryptV1.d.ts +39 -0
- package/dist/src/decryptV1.d.ts.map +1 -0
- package/dist/src/decryptV1.js +125 -0
- package/dist/src/encrypt.d.ts +42 -6
- package/dist/src/encrypt.d.ts.map +1 -1
- package/dist/src/encrypt.js +171 -15
- package/dist/src/encryptV2.d.ts +67 -0
- package/dist/src/encryptV2.d.ts.map +1 -0
- package/dist/src/encryptV2.js +234 -0
- package/dist/src/encryptionSession.d.ts +63 -0
- package/dist/src/encryptionSession.d.ts.map +1 -0
- package/dist/src/encryptionSession.js +140 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -2
- package/dist/src/types.d.ts +87 -43
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +4 -2
- package/dist/src/util.d.ts +12 -0
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +57 -4
- package/dist/src/v1/blockchain.js +25 -12
- package/dist/src/v1/keychains.js +52 -26
- package/dist/src/v1/markets.js +10 -5
- package/dist/src/v1/pendingapproval.d.ts.map +1 -1
- package/dist/src/v1/pendingapproval.js +57 -18
- package/dist/src/v1/pendingapprovals.d.ts.map +1 -1
- package/dist/src/v1/pendingapprovals.js +41 -7
- package/dist/src/v1/signPsbt.d.ts +14 -0
- package/dist/src/v1/signPsbt.d.ts.map +1 -0
- package/dist/src/v1/signPsbt.js +69 -0
- package/dist/src/v1/transactionBuilder.js +221 -91
- package/dist/src/v1/travelRule.js +125 -66
- package/dist/src/v1/verifyAddress.d.ts +6 -0
- package/dist/src/v1/verifyAddress.d.ts.map +1 -0
- package/dist/src/v1/verifyAddress.js +50 -0
- package/dist/src/v1/wallet.d.ts.map +1 -1
- package/dist/src/v1/wallet.js +498 -230
- package/dist/src/v1/wallets.js +118 -53
- package/dist/test/unit/api.d.ts +2 -0
- package/dist/test/unit/api.d.ts.map +1 -0
- package/dist/test/unit/api.js +331 -0
- package/dist/test/unit/bitgoAPI.d.ts +2 -0
- package/dist/test/unit/bitgoAPI.d.ts.map +1 -0
- package/dist/test/unit/bitgoAPI.js +1339 -0
- package/dist/test/unit/decryptV1.d.ts +2 -0
- package/dist/test/unit/decryptV1.d.ts.map +1 -0
- package/dist/test/unit/decryptV1.js +230 -0
- package/dist/test/unit/encrypt.d.ts +2 -0
- package/dist/test/unit/encrypt.d.ts.map +1 -0
- package/dist/test/unit/encrypt.js +544 -0
- package/dist/test/unit/fixtures/keycard.d.ts +25 -0
- package/dist/test/unit/fixtures/keycard.d.ts.map +1 -0
- package/dist/test/unit/fixtures/keycard.js +28 -0
- package/dist/test/unit/hmacStrategy.d.ts +2 -0
- package/dist/test/unit/hmacStrategy.d.ts.map +1 -0
- package/dist/test/unit/hmacStrategy.js +136 -0
- package/dist/test/unit/serializeRequestDataIntegration.d.ts +2 -0
- package/dist/test/unit/serializeRequestDataIntegration.d.ts.map +1 -0
- package/dist/test/unit/serializeRequestDataIntegration.js +115 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +65 -0
- package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts +4 -0
- package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts.map +1 -0
- package/dist/test/unit/v1/fixtures/accelerate-tx.js +53 -0
- package/dist/test/unit/v1/fixtures/index.d.ts +3 -0
- package/dist/test/unit/v1/fixtures/index.d.ts.map +1 -0
- package/dist/test/unit/v1/fixtures/index.js +24 -0
- package/dist/test/unit/v1/keychains.d.ts +2 -0
- package/dist/test/unit/v1/keychains.d.ts.map +1 -0
- package/dist/test/unit/v1/keychains.js +114 -0
- package/dist/test/unit/v1/signPsbt.d.ts +2 -0
- package/dist/test/unit/v1/signPsbt.d.ts.map +1 -0
- package/dist/test/unit/v1/signPsbt.js +53 -0
- package/dist/test/unit/v1/travelRule.d.ts +2 -0
- package/dist/test/unit/v1/travelRule.d.ts.map +1 -0
- package/dist/test/unit/v1/travelRule.js +125 -0
- package/dist/test/unit/v1/wallet.d.ts +2 -0
- package/dist/test/unit/v1/wallet.d.ts.map +1 -0
- package/dist/test/unit/v1/wallet.js +1717 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +20 -27
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -639
- package/dist/web/main.js +0 -2
- package/dist/web/main.js.LICENSE.txt +0 -110
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
require("should");
|
|
40
|
+
const sinon = __importStar(require("sinon"));
|
|
41
|
+
const nock_1 = __importDefault(require("nock"));
|
|
42
|
+
const Keychains = require('../../../src/v1/keychains');
|
|
43
|
+
const ROOT = 'https://app.example.local';
|
|
44
|
+
/**
|
|
45
|
+
* The deprecated v1 keychains updatePassword (src/v1/keychains.ts) fetches the user's
|
|
46
|
+
* server-stored encryptedXprvs, re-encrypts each with the new password, and preserves
|
|
47
|
+
* each envelope's version (isV2Envelope ? 2 : 1). It deliberately ignores both
|
|
48
|
+
* `encryptionVersion` and `encryptionSession` -- v1 stays v1 during a v2 rotation and
|
|
49
|
+
* no session is ever consumed. These tests pin that wire behavior so the rollback
|
|
50
|
+
* contract documented in WCN-2640 cannot regress.
|
|
51
|
+
*/
|
|
52
|
+
describe('v1 Keychains.updatePassword', function () {
|
|
53
|
+
const v1Envelope = JSON.stringify({ v: 1, iter: 10000, salt: 'c2FsdA==', iv: 'aXY=', ct: 'Y3Q=' });
|
|
54
|
+
const v2Envelope = JSON.stringify({ v: 2, m: 65536, t: 3, p: 4, salt: 'c2FsdA==', iv: 'aXY=', ct: 'Y3Q=' });
|
|
55
|
+
const undecryptableEnvelope = JSON.stringify({ v: 1, iter: 10000, salt: 'YmFk', iv: 'aXY=', ct: 'Y3Q=' });
|
|
56
|
+
function makeBitgo(stored, decryptResults, encryptStub) {
|
|
57
|
+
return {
|
|
58
|
+
url: (path) => `${ROOT}/api/v1${path}`,
|
|
59
|
+
post: () => ({ result: async () => ({ version: 25, keychains: stored }) }),
|
|
60
|
+
decrypt: async ({ input }) => {
|
|
61
|
+
const result = decryptResults[input];
|
|
62
|
+
if (result === undefined) {
|
|
63
|
+
throw new Error('decryption failed');
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
},
|
|
67
|
+
encrypt: encryptStub,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
afterEach(function () {
|
|
71
|
+
nock_1.default.cleanAll();
|
|
72
|
+
sinon.restore();
|
|
73
|
+
});
|
|
74
|
+
it('ignores encryptionSession and preserves per-envelope versions under a v2 rotation', async function () {
|
|
75
|
+
const stored = { xpubV1: v1Envelope, xpubV2: v2Envelope };
|
|
76
|
+
(0, nock_1.default)(ROOT).post('/api/v1/user/encrypted').reply(200, { version: 25, keychains: stored });
|
|
77
|
+
const encryptStub = sinon.stub().resolves('re-encrypted');
|
|
78
|
+
const keychains = new Keychains(makeBitgo(stored, { [v1Envelope]: 'plain-v1', [v2Envelope]: 'plain-v2' }, encryptStub));
|
|
79
|
+
const session = {
|
|
80
|
+
encrypt: sinon.stub().resolves('session-encrypted'),
|
|
81
|
+
decrypt: sinon.stub().resolves('session-decrypted'),
|
|
82
|
+
destroy: sinon.stub(),
|
|
83
|
+
};
|
|
84
|
+
const result = await keychains.updatePassword({
|
|
85
|
+
oldPassword: 'oldpw',
|
|
86
|
+
newPassword: 'newpw',
|
|
87
|
+
encryptionVersion: 2,
|
|
88
|
+
encryptionSession: session,
|
|
89
|
+
});
|
|
90
|
+
// the v1-leg never touches the session: no encrypt, no destroy (destroy is the caller's job)
|
|
91
|
+
session.encrypt.called.should.equal(false);
|
|
92
|
+
session.destroy.called.should.equal(false);
|
|
93
|
+
// re-encryption preserves each envelope's own version: v1 -> encryptionVersion 1,
|
|
94
|
+
// v2 -> encryptionVersion 2, NOT the caller's encryptionVersion: 2 opt-in
|
|
95
|
+
encryptStub.calledTwice.should.equal(true);
|
|
96
|
+
encryptStub.getCall(0).args[0].encryptionVersion.should.equal(1);
|
|
97
|
+
encryptStub.getCall(1).args[0].encryptionVersion.should.equal(2);
|
|
98
|
+
encryptStub.alwaysCalledWithMatch({ password: 'newpw' }).should.equal(true);
|
|
99
|
+
result.keychains.should.deepEqual({ xpubV1: 're-encrypted', xpubV2: 're-encrypted' });
|
|
100
|
+
result.version.should.equal(25);
|
|
101
|
+
});
|
|
102
|
+
it('keeps keychains that cannot be decrypted with the old password unchanged', async function () {
|
|
103
|
+
const stored = { xpubV1: v1Envelope, xpubV2: v2Envelope, xpubUndecryptable: undecryptableEnvelope };
|
|
104
|
+
(0, nock_1.default)(ROOT).post('/api/v1/user/encrypted').reply(200, { version: 25, keychains: stored });
|
|
105
|
+
const encryptStub = sinon.stub().resolves('re-encrypted');
|
|
106
|
+
const keychains = new Keychains(makeBitgo(stored, { [v1Envelope]: 'plain-v1', [v2Envelope]: 'plain-v2' }, encryptStub));
|
|
107
|
+
const result = await keychains.updatePassword({ oldPassword: 'oldpw', newPassword: 'newpw' });
|
|
108
|
+
encryptStub.calledTwice.should.equal(true);
|
|
109
|
+
result.keychains.xpubUndecryptable.should.equal(undecryptableEnvelope);
|
|
110
|
+
result.keychains.xpubV1.should.equal('re-encrypted');
|
|
111
|
+
result.keychains.xpubV2.should.equal('re-encrypted');
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3YxL2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtCQUFnQjtBQUNoQiw2Q0FBK0I7QUFDL0IsZ0RBQXdCO0FBeUJ4QixNQUFNLFNBQVMsR0FBb0IsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFeEUsTUFBTSxJQUFJLEdBQUcsMkJBQTJCLENBQUM7QUFFekM7Ozs7Ozs7R0FPRztBQUNILFFBQVEsQ0FBQyw2QkFBNkIsRUFBRTtJQUN0QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNuRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUcsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUUxRyxTQUFTLFNBQVMsQ0FDaEIsTUFBOEIsRUFDOUIsY0FBc0MsRUFDdEMsV0FBNEI7UUFFNUIsT0FB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QztRQUU5RixXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCB0eXBlIHsgSUVuY3J5cHRpb25TZXNzaW9uIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuLy8gQ0pTIG1vZHVsZS5leHBvcnRzIGFzc2lnbm1lbnQ7IHJlcXVpcmUgaWRpb20gbWF0Y2hlcyBzcmMvYml0Z29BUEkudHMuIFRoZVxuLy8gc3RydWN0dXJhbCBjb250cmFjdCBiZWxvdyBwaW5zIHRoZSBzdXJmYWNlIHRoaXMgdGVzdCBleGVyY2lzZXMuXG5pbnRlcmZhY2UgVjFVcGRhdGVQYXNzd29yZFJlc3VsdCB7XG4gIGtleWNoYWluczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgdmVyc2lvbjogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgVjFCaXRnbyB7XG4gIHVybChwYXRoOiBzdHJpbmcpOiBzdHJpbmc7XG4gIHBvc3QodXJsOiBzdHJpbmcpOiB7IHJlc3VsdCgpOiBQcm9taXNlPHVua25vd24+IH07XG4gIGRlY3J5cHQocGFyYW1zOiB7IGlucHV0OiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSk6IFByb21pc2U8c3RyaW5nPjtcbiAgZW5jcnlwdChwYXJhbXM6IHsgaW5wdXQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZzsgZW5jcnlwdGlvblZlcnNpb24/OiBudW1iZXIgfSk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxudHlwZSBWMUtleWNoYWluc0N0b3IgPSBuZXcgKGJpdGdvOiBWMUJpdGdvKSA9PiB7XG4gIHVwZGF0ZVBhc3N3b3JkKHBhcmFtczoge1xuICAgIG9sZFBhc3N3b3JkOiBzdHJpbmc7XG4gICAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbiAgICBlbmNyeXB0aW9uVmVyc2lvbj86IG51bWJlcjtcbiAgICBlbmNyeXB0aW9uU2Vzc2lvbj86IElFbmNyeXB0aW9uU2Vzc2lvbjtcbiAgfSk6IFByb21pc2U8VjFVcGRhdGVQYXNzd29yZFJlc3VsdD47XG59O1xuXG5jb25zdCBLZXljaGFpbnM6IFYxS2V5Y2hhaW5zQ3RvciA9IHJlcXVpcmUoJy4uLy4uLy4uL3NyYy92MS9rZXljaGFpbnMnKTtcblxuY29uc3QgUk9PVCA9ICdodHRwczovL2FwcC5leGFtcGxlLmxvY2FsJztcblxuLyoqXG4gKiBUaGUgZGVwcmVjYXRlZCB2MSBrZXljaGFpbnMgdXBkYXRlUGFzc3dvcmQgKHNyYy92MS9rZXljaGFpbnMudHMpIGZldGNoZXMgdGhlIHVzZXInc1xuICogc2VydmVyLXN0b3JlZCBlbmNyeXB0ZWRYcHJ2cywgcmUtZW5jcnlwdHMgZWFjaCB3aXRoIHRoZSBuZXcgcGFzc3dvcmQsIGFuZCBwcmVzZXJ2ZXNcbiAqIGVhY2ggZW52ZWxvcGUncyB2ZXJzaW9uIChpc1YyRW52ZWxvcGUgPyAyIDogMSkuIEl0IGRlbGliZXJhdGVseSBpZ25vcmVzIGJvdGhcbiAqIGBlbmNyeXB0aW9uVmVyc2lvbmAgYW5kIGBlbmNyeXB0aW9uU2Vzc2lvbmAgLS0gdjEgc3RheXMgdjEgZHVyaW5nIGEgdjIgcm90YXRpb24gYW5kXG4gKiBubyBzZXNzaW9uIGlzIGV2ZXIgY29uc3VtZWQuIFRoZXNlIHRlc3RzIHBpbiB0aGF0IHdpcmUgYmVoYXZpb3Igc28gdGhlIHJvbGxiYWNrXG4gKiBjb250cmFjdCBkb2N1bWVudGVkIGluIFdDTi0yNjQwIGNhbm5vdCByZWdyZXNzLlxuICovXG5kZXNjcmliZSgndjEgS2V5Y2hhaW5zLnVwZGF0ZVBhc3N3b3JkJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCB2MUVudmVsb3BlID0gSlNPTi5zdHJpbmdpZnkoeyB2OiAxLCBpdGVyOiAxMDAwMCwgc2FsdDogJ2MyRnNkQT09JywgaXY6ICdhWFk9JywgY3Q6ICdZM1E9JyB9KTtcbiAgY29uc3QgdjJFbnZlbG9wZSA9IEpTT04uc3RyaW5naWZ5KHsgdjogMiwgbTogNjU1MzYsIHQ6IDMsIHA6IDQsIHNhbHQ6ICdjMkZzZEE9PScsIGl2OiAnYVhZPScsIGN0OiAnWTNRPScgfSk7XG4gIGNvbnN0IHVuZGVjcnlwdGFibGVFbnZlbG9wZSA9IEpTT04uc3RyaW5naWZ5KHsgdjogMSwgaXRlcjogMTAwMDAsIHNhbHQ6ICdZbUZrJywgaXY6ICdhWFk9JywgY3Q6ICdZM1E9JyB9KTtcblxuICBmdW5jdGlvbiBtYWtlQml0Z28oXG4gICAgc3RvcmVkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIGRlY3J5cHRSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIGVuY3J5cHRTdHViOiBzaW5vbi5TaW5vblN0dWJcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVybDogKHBhdGg6IHN0cmluZykgPT4gYCR7Uk9PVH0vYXBpL3YxJHtwYXRofWAsXG4gICAgICBwb3N0OiAoKSA9PiAoeyByZXN1bHQ6IGFzeW5jICgpID0+ICh7IHZlcnNpb246IDI1LCBrZXljaGFpbnM6IHN0b3JlZCB9KSB9KSxcbiAgICAgIGRlY3J5cHQ6IGFzeW5jICh7IGlucHV0IH06IHsgaW5wdXQ6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlY3J5cHRSZXN1bHRzW2lucHV0XTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGZhaWxlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgICAgZW5jcnlwdDogZW5jcnlwdFN0dWIsXG4gICAgfTtcbiAgfVxuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ2lnbm9yZXMgZW5jcnlwdGlvblNlc3Npb24gYW5kIHByZXNlcnZlcyBwZXItZW52ZWxvcGUgdmVyc2lvbnMgdW5kZXIgYSB2MiByb3RhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzdG9yZWQgPSB7IHhwdWJWMTogdjFFbnZlbG9wZSwgeHB1YlYyOiB2MkVudmVsb3BlIH07XG4gICAgbm9jayhST09UKS5wb3N0KCcvYXBpL3YxL3VzZXIvZW5jcnlwdGVkJykucmVwbHkoMjAwLCB7IHZlcnNpb246IDI1LCBrZXljaGFpbnM6IHN0b3JlZCB9KTtcblxuICAgIGNvbnN0IGVuY3J5cHRTdHViID0gc2lub24uc3R1YigpLnJlc29sdmVzKCdyZS1lbmNyeXB0ZWQnKTtcbiAgICBjb25zdCBrZXljaGFpbnMgPSBuZXcgS2V5Y2hhaW5zKFxuICAgICAgbWFrZUJpdGdvKHN0b3JlZCwgeyBbdjFFbnZlbG9wZV06ICdwbGFpbi12MScsIFt2MkVudmVsb3BlXTogJ3BsYWluLXYyJyB9LCBlbmNyeXB0U3R1YilcbiAgICApO1xuXG4gICAgY29uc3Qgc2Vzc2lvbjogSUVuY3J5cHRpb25TZXNzaW9uID0ge1xuICAgICAgZW5jcnlwdDogc2lub24uc3R1YigpLnJlc29sdmVzKCdzZXNzaW9uLWVuY3J5cHRlZCcpLFxuICAgICAgZGVjcnlwdDogc2lub24uc3R1YigpLnJlc29sdmVzKCdzZXNzaW9uLWRlY3J5cHRlZCcpLFxuICAgICAgZGVzdHJveTogc2lub24uc3R1YigpLFxuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBrZXljaGFpbnMudXBkYXRlUGFzc3dvcmQoe1xuICAgICAgb2xkUGFzc3dvcmQ6ICdvbGRwdycsXG4gICAgICBuZXdQYXNzd29yZDogJ25ld3B3JyxcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiAyLFxuICAgICAgZW5jcnlwdGlvblNlc3Npb246IHNlc3Npb24sXG4gICAgfSk7XG5cbiAgICAvLyB0aGUgdjEtbGVnIG5ldmVyIHRvdWNoZXMgdGhlIHNlc3Npb246IG5vIGVuY3J5cHQsIG5vIGRlc3Ryb3kgKGRlc3Ryb3kgaXMgdGhlIGNhbGxlcidzIGpvYilcbiAgICAoc2Vzc2lvbi5lbmNyeXB0IGFzIHNpbm9uLlNpbm9uU3R1YikuY2FsbGVkLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgKHNlc3Npb24uZGVzdHJveSBhcyBzaW5vbi5TaW5vblN0dWIpLmNhbGxlZC5zaG91bGQuZXF1YWwoZmFsc2UpO1xuXG4gICAgLy8gcmUtZW5jcnlwdGlvbiBwcmVzZXJ2ZXMgZWFjaCBlbnZlbG9wZSdzIG93biB2ZXJzaW9uOiB2MSAtPiBlbmNyeXB0aW9uVmVyc2lvbiAxLFxuICAgIC8vIHYyIC0+IGVuY3J5cHRpb25WZXJzaW9uIDIsIE5PVCB0aGUgY2FsbGVyJ3MgZW5jcnlwdGlvblZlcnNpb246IDIgb3B0LWluXG4gICAgZW5jcnlwdFN0dWIuY2FsbGVkVHdpY2Uuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIGVuY3J5cHRTdHViLmdldENhbGwoMCkuYXJnc1swXS5lbmNyeXB0aW9uVmVyc2lvbi5zaG91bGQuZXF1YWwoMSk7XG4gICAgZW5jcnlwdFN0dWIuZ2V0Q2FsbCgxKS5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLnNob3VsZC5lcXVhbCgyKTtcbiAgICBlbmNyeXB0U3R1Yi5hbHdheXNDYWxsZWRXaXRoTWF0Y2goeyBwYXNzd29yZDogJ25ld3B3JyB9KS5zaG91bGQuZXF1YWwodHJ1ZSk7XG5cbiAgICByZXN1bHQua2V5Y2hhaW5zLnNob3VsZC5kZWVwRXF1YWwoeyB4cHViVjE6ICdyZS1lbmNyeXB0ZWQnLCB4cHViVjI6ICdyZS1lbmNyeXB0ZWQnIH0pO1xuICAgIHJlc3VsdC52ZXJzaW9uLnNob3VsZC5lcXVhbCgyNSk7XG4gIH0pO1xuXG4gIGl0KCdrZWVwcyBrZXljaGFpbnMgdGhhdCBjYW5ub3QgYmUgZGVjcnlwdGVkIHdpdGggdGhlIG9sZCBwYXNzd29yZCB1bmNoYW5nZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgc3RvcmVkID0geyB4cHViVjE6IHYxRW52ZWxvcGUsIHhwdWJWMjogdjJFbnZlbG9wZSwgeHB1YlVuZGVjcnlwdGFibGU6IHVuZGVjcnlwdGFibGVFbnZlbG9wZSB9O1xuICAgIG5vY2soUk9PVCkucG9zdCgnL2FwaS92MS91c2VyL2VuY3J5cHRlZCcpLnJlcGx5KDIwMCwgeyB2ZXJzaW9uOiAyNSwga2V5Y2hhaW5zOiBzdG9yZWQgfSk7XG5cbiAgICBjb25zdCBlbmNyeXB0U3R1YiA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcygncmUtZW5jcnlwdGVkJyk7XG4gICAgY29uc3Qga2V5Y2hhaW5zID0gbmV3IEtleWNoYWlucyhcbiAgICAgIG1ha2VCaXRnbyhzdG9yZWQsIHsgW3YxRW52ZWxvcGVdOiAncGxhaW4tdjEnLCBbdjJFbnZlbG9wZV06ICdwbGFpbi12MicgfSwgZW5jcnlwdFN0dWIpXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGtleWNoYWlucy51cGRhdGVQYXNzd29yZCh7IG9sZFBhc3N3b3JkOiAnb2xkcHcnLCBuZXdQYXNzd29yZDogJ25ld3B3JyB9KTtcblxuICAgIGVuY3J5cHRTdHViLmNhbGxlZFR3aWNlLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICByZXN1bHQua2V5Y2hhaW5zLnhwdWJVbmRlY3J5cHRhYmxlLnNob3VsZC5lcXVhbCh1bmRlY3J5cHRhYmxlRW52ZWxvcGUpO1xuICAgIHJlc3VsdC5rZXljaGFpbnMueHB1YlYxLnNob3VsZC5lcXVhbCgncmUtZW5jcnlwdGVkJyk7XG4gICAgcmVzdWx0LmtleWNoYWlucy54cHViVjIuc2hvdWxkLmVxdWFsKCdyZS1lbmNyeXB0ZWQnKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signPsbt.d.ts","sourceRoot":"","sources":["../../../../test/unit/v1/signPsbt.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
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 utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
38
|
+
const signPsbt_1 = require("../../../src/v1/signPsbt");
|
|
39
|
+
describe('signPsbt', function () {
|
|
40
|
+
it('signs psbt', function () {
|
|
41
|
+
const keys = utxolib.testutil.getDefaultWalletKeys();
|
|
42
|
+
const psbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2sh', value: BigInt(1e8) }], [{ scriptType: 'p2sh', value: BigInt(1e8 - 1000) }], utxolib.networks.bitcoin, keys, 'unsigned');
|
|
43
|
+
const result = (0, signPsbt_1.signPsbtRequest)({
|
|
44
|
+
psbt: psbt.toHex(),
|
|
45
|
+
keychain: {
|
|
46
|
+
xprv: keys.triple[0].toBase58(),
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
const halfSignedPsbt = utxolib.bitgo.createPsbtFromBuffer(Buffer.from(result.psbt, 'hex'), utxolib.networks.bitcoin);
|
|
50
|
+
assert.ok(halfSignedPsbt.validateSignaturesOfInputHD(0, keys.triple[0]));
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdjEvc2lnblBzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsOERBQWdEO0FBQ2hELHVEQUEyRDtBQUUzRCxRQUFRLENBQUMsVUFBVSxFQUFFO0lBQ25CLEVBQUUsQ0FBQyxZQUFZLEVBQUU7UUFDZixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQ3pDLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUM1QyxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQ25ELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUN4QixJQUFJLEVBQ0osVUFBVSxDQUNYLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxJQUFBLDBCQUFlLEVBQUM7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEIsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTthQUNoQztTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQ3pCLENBQUM7UUFDRixNQUFNLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBzaWduUHNidFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9zcmMvdjEvc2lnblBzYnQnO1xuXG5kZXNjcmliZSgnc2lnblBzYnQnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaWducyBwc2J0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGtleXMgPSB1dHhvbGliLnRlc3R1dGlsLmdldERlZmF1bHRXYWxsZXRLZXlzKCk7XG4gICAgY29uc3QgcHNidCA9IHV0eG9saWIudGVzdHV0aWwuY29uc3RydWN0UHNidChcbiAgICAgIFt7IHNjcmlwdFR5cGU6ICdwMnNoJywgdmFsdWU6IEJpZ0ludCgxZTgpIH1dLFxuICAgICAgW3sgc2NyaXB0VHlwZTogJ3Ayc2gnLCB2YWx1ZTogQmlnSW50KDFlOCAtIDEwMDApIH1dLFxuICAgICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luLFxuICAgICAga2V5cyxcbiAgICAgICd1bnNpZ25lZCdcbiAgICApO1xuICAgIGNvbnN0IHJlc3VsdCA9IHNpZ25Qc2J0UmVxdWVzdCh7XG4gICAgICBwc2J0OiBwc2J0LnRvSGV4KCksXG4gICAgICBrZXljaGFpbjoge1xuICAgICAgICB4cHJ2OiBrZXlzLnRyaXBsZVswXS50b0Jhc2U1OCgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBoYWxmU2lnbmVkUHNidCA9IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21CdWZmZXIoXG4gICAgICBCdWZmZXIuZnJvbShyZXN1bHQucHNidCwgJ2hleCcpLFxuICAgICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luXG4gICAgKTtcbiAgICBhc3NlcnQub2soaGFsZlNpZ25lZFBzYnQudmFsaWRhdGVTaWduYXR1cmVzT2ZJbnB1dEhEKDAsIGtleXMudHJpcGxlWzBdKSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"travelRule.d.ts","sourceRoot":"","sources":["../../../../test/unit/v1/travelRule.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
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 sinon = __importStar(require("sinon"));
|
|
37
|
+
require("should");
|
|
38
|
+
const bitgoAPI_1 = require("../../../src/bitgoAPI");
|
|
39
|
+
const TravelRule = require('../../../src/v1/travelRule');
|
|
40
|
+
// Use a real 33-byte compressed public key from the utxo-lib test vector set.
|
|
41
|
+
const KNOWN_RECIPIENT_PUB = '0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798';
|
|
42
|
+
describe('TravelRule unit tests', () => {
|
|
43
|
+
let bitgo;
|
|
44
|
+
let travel;
|
|
45
|
+
beforeEach(() => {
|
|
46
|
+
bitgo = new bitgoAPI_1.BitGoAPI({ env: 'test' });
|
|
47
|
+
travel = new TravelRule(bitgo);
|
|
48
|
+
});
|
|
49
|
+
afterEach(() => {
|
|
50
|
+
sinon.restore();
|
|
51
|
+
});
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// decryptReceivedTravelInfo
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
describe('decryptReceivedTravelInfo', () => {
|
|
56
|
+
it('throws when tx param is missing', async () => {
|
|
57
|
+
await travel.decryptReceivedTravelInfo({}).should.be.rejectedWith(/expecting tx param to be object/);
|
|
58
|
+
});
|
|
59
|
+
it('returns tx unchanged when receivedTravelInfo is empty', async () => {
|
|
60
|
+
const tx = { receivedTravelInfo: [] };
|
|
61
|
+
const result = await travel.decryptReceivedTravelInfo({ tx });
|
|
62
|
+
result.should.equal(tx);
|
|
63
|
+
});
|
|
64
|
+
it('returns tx unchanged when receivedTravelInfo is not present', async () => {
|
|
65
|
+
const tx = { id: 'txid456' };
|
|
66
|
+
const result = await travel.decryptReceivedTravelInfo({ tx });
|
|
67
|
+
result.should.equal(tx);
|
|
68
|
+
});
|
|
69
|
+
it('calls decrypt for each travel info entry', async () => {
|
|
70
|
+
const decryptStub = sinon.stub(bitgo, 'decrypt').resolves(JSON.stringify({ fromUserName: 'Alice' }));
|
|
71
|
+
const xprv = 'xprv9s21ZrQH143K2fJ91S4BRsupcYrE6mmY96fcX5HkhoTrrwmwjd16Cn87cWinJjByrfpojjx7ezsJLx7TAKLT8m8hM5Kax9YcoxnBeJZ3t2k';
|
|
72
|
+
const keychain = { xprv };
|
|
73
|
+
const tx = {
|
|
74
|
+
receivedTravelInfo: [
|
|
75
|
+
{
|
|
76
|
+
toPubKeyPath: 'm/0/0',
|
|
77
|
+
fromPubKey: KNOWN_RECIPIENT_PUB,
|
|
78
|
+
encryptedTravelInfo: 'someEncryptedBlob',
|
|
79
|
+
travelInfo: '',
|
|
80
|
+
transactionId: 'txid1',
|
|
81
|
+
outputIndex: 0,
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
};
|
|
85
|
+
const result = await travel.decryptReceivedTravelInfo({ tx, keychain });
|
|
86
|
+
decryptStub.callCount.should.equal(1);
|
|
87
|
+
result.should.equal(tx);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
// prepareParams
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
describe('prepareParams', () => {
|
|
94
|
+
it('throws when recipient is missing', async () => {
|
|
95
|
+
await travel
|
|
96
|
+
.prepareParams({
|
|
97
|
+
txid: 'abc123',
|
|
98
|
+
travelInfo: { fromUserName: 'Alice' },
|
|
99
|
+
})
|
|
100
|
+
.should.be.rejectedWith(/invalid or missing recipient/);
|
|
101
|
+
});
|
|
102
|
+
it('throws when travelInfo is missing', async () => {
|
|
103
|
+
await travel
|
|
104
|
+
.prepareParams({
|
|
105
|
+
txid: 'abc123',
|
|
106
|
+
recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '0' },
|
|
107
|
+
})
|
|
108
|
+
.should.be.rejectedWith(/invalid or missing travelInfo/);
|
|
109
|
+
});
|
|
110
|
+
it('calls encrypt and returns expected output shape', async () => {
|
|
111
|
+
const encryptStub = sinon.stub(bitgo, 'encrypt').resolves('asyncEncryptedBlob');
|
|
112
|
+
const result = await travel.prepareParams({
|
|
113
|
+
txid: 'txid789',
|
|
114
|
+
recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '1' },
|
|
115
|
+
travelInfo: { fromUserName: 'Bob', toAddress: '1BitGo' },
|
|
116
|
+
});
|
|
117
|
+
encryptStub.callCount.should.equal(1);
|
|
118
|
+
result.should.have.property('txid', 'txid789');
|
|
119
|
+
result.should.have.property('toPubKey', KNOWN_RECIPIENT_PUB);
|
|
120
|
+
result.should.have.property('fromPubKey').which.is.a.String();
|
|
121
|
+
result.should.have.property('encryptedTravelInfo', 'asyncEncryptedBlob');
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVsUnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC92MS90cmF2ZWxSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLGtCQUFnQjtBQUNoQixvREFBaUQ7QUFFakQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFekQsOEVBQThFO0FBQzlFLE1BQU0sbUJBQW1CLEdBQUcsb0VBQW9FLENBQUM7QUFFakcsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxJQUFJLEtBQWUsQ0FBQztJQUNwQixJQUFJLE1BQXlCLENBQUM7SUFFOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEtBQUssR0FBRyxJQUFJLG1CQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsOEVBQThFO0lBQzlFLDRCQUE0QjtJQUM1Qiw4RUFBOEU7SUFDOUUsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDL0MsTUFBTSxNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN2RyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRSxNQUFN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LENBQUMsQ0FBQztZQUVoRixNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3hDLElBQUksRUFBRSxTQUFTO2dCQUNmLFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUU7Z0JBQ25GLFVBQVUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTthQUN6RCxDQUFDLENBQUM7WUFFSCxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMvQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2JpdGdvQVBJJztcblxuY29uc3QgVHJhdmVsUnVsZSA9IHJlcXVpcmUoJy4uLy4uLy4uL3NyYy92MS90cmF2ZWxSdWxlJyk7XG5cbi8vIFVzZSBhIHJlYWwgMzMtYnl0ZSBjb21wcmVzc2VkIHB1YmxpYyBrZXkgZnJvbSB0aGUgdXR4by1saWIgdGVzdCB2ZWN0b3Igc2V0LlxuY29uc3QgS05PV05fUkVDSVBJRU5UX1BVQiA9ICcwMjc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgnO1xuXG5kZXNjcmliZSgnVHJhdmVsUnVsZSB1bml0IHRlc3RzJywgKCkgPT4ge1xuICBsZXQgYml0Z286IEJpdEdvQVBJO1xuICBsZXQgdHJhdmVsOiB0eXBlb2YgVHJhdmVsUnVsZTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIHRyYXZlbCA9IG5ldyBUcmF2ZWxSdWxlKGJpdGdvKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBkZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBkZXNjcmliZSgnZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mbycsICgpID0+IHtcbiAgICBpdCgndGhyb3dzIHdoZW4gdHggcGFyYW0gaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvKHt9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9leHBlY3RpbmcgdHggcGFyYW0gdG8gYmUgb2JqZWN0Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyB0eCB1bmNoYW5nZWQgd2hlbiByZWNlaXZlZFRyYXZlbEluZm8gaXMgZW1wdHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IHsgcmVjZWl2ZWRUcmF2ZWxJbmZvOiBbXSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhdmVsLmRlY3J5cHRSZWNlaXZlZFRyYXZlbEluZm8oeyB0eCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgdHggdW5jaGFuZ2VkIHdoZW4gcmVjZWl2ZWRUcmF2ZWxJbmZvIGlzIG5vdCBwcmVzZW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSB7IGlkOiAndHhpZDQ1NicgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvKHsgdHggfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHR4KTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBkZWNyeXB0IGZvciBlYWNoIHRyYXZlbCBpbmZvIGVudHJ5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVjcnlwdFN0dWIgPSBzaW5vbi5zdHViKGJpdGdvLCAnZGVjcnlwdCcpLnJlc29sdmVzKEpTT04uc3RyaW5naWZ5KHsgZnJvbVVzZXJOYW1lOiAnQWxpY2UnIH0pKTtcblxuICAgICAgY29uc3QgeHBydiA9XG4gICAgICAgICd4cHJ2OXMyMVpyUUgxNDNLMmZKOTFTNEJSc3VwY1lyRTZtbVk5NmZjWDVIa2hvVHJyd213amQxNkNuODdjV2luSmpCeXJmcG9qang3ZXpzSkx4N1RBS0xUOG04aE01S2F4OVljb3huQmVKWjN0MmsnO1xuICAgICAgY29uc3Qga2V5Y2hhaW4gPSB7IHhwcnYgfTtcbiAgICAgIGNvbnN0IHR4ID0ge1xuICAgICAgICByZWNlaXZlZFRyYXZlbEluZm86IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b1B1YktleVBhdGg6ICdtLzAvMCcsXG4gICAgICAgICAgICBmcm9tUHViS2V5OiBLTk9XTl9SRUNJUElFTlRfUFVCLFxuICAgICAgICAgICAgZW5jcnlwdGVkVHJhdmVsSW5mbzogJ3NvbWVFbmNyeXB0ZWRCbG9iJyxcbiAgICAgICAgICAgIHRyYXZlbEluZm86ICcnLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25JZDogJ3R4aWQxJyxcbiAgICAgICAgICAgIG91dHB1dEluZGV4OiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmF2ZWwuZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mbyh7IHR4LCBrZXljaGFpbiB9KTtcbiAgICAgIGRlY3J5cHRTdHViLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHR4KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHByZXBhcmVQYXJhbXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGRlc2NyaWJlKCdwcmVwYXJlUGFyYW1zJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3Mgd2hlbiByZWNpcGllbnQgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRyYXZlbFxuICAgICAgICAucHJlcGFyZVBhcmFtcyh7XG4gICAgICAgICAgdHhpZDogJ2FiYzEyMycsXG4gICAgICAgICAgdHJhdmVsSW5mbzogeyBmcm9tVXNlck5hbWU6ICdBbGljZScgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL2ludmFsaWQgb3IgbWlzc2luZyByZWNpcGllbnQvKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3Mgd2hlbiB0cmF2ZWxJbmZvIGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0cmF2ZWxcbiAgICAgICAgLnByZXBhcmVQYXJhbXMoe1xuICAgICAgICAgIHR4aWQ6ICdhYmMxMjMnLFxuICAgICAgICAgIHJlY2lwaWVudDogeyBlbnRlcnByaXNlOiAnU0RLVGVzdCcsIHB1YktleTogS05PV05fUkVDSVBJRU5UX1BVQiwgb3V0cHV0SW5kZXg6ICcwJyB9LFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvaW52YWxpZCBvciBtaXNzaW5nIHRyYXZlbEluZm8vKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBlbmNyeXB0IGFuZCByZXR1cm5zIGV4cGVjdGVkIG91dHB1dCBzaGFwZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVuY3J5cHRTdHViID0gc2lub24uc3R1YihiaXRnbywgJ2VuY3J5cHQnKS5yZXNvbHZlcygnYXN5bmNFbmNyeXB0ZWRCbG9iJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYXZlbC5wcmVwYXJlUGFyYW1zKHtcbiAgICAgICAgdHhpZDogJ3R4aWQ3ODknLFxuICAgICAgICByZWNpcGllbnQ6IHsgZW50ZXJwcmlzZTogJ1NES1Rlc3QnLCBwdWJLZXk6IEtOT1dOX1JFQ0lQSUVOVF9QVUIsIG91dHB1dEluZGV4OiAnMScgfSxcbiAgICAgICAgdHJhdmVsSW5mbzogeyBmcm9tVXNlck5hbWU6ICdCb2InLCB0b0FkZHJlc3M6ICcxQml0R28nIH0sXG4gICAgICB9KTtcblxuICAgICAgZW5jcnlwdFN0dWIuY2FsbENvdW50LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhpZCcsICd0eGlkNzg5Jyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RvUHViS2V5JywgS05PV05fUkVDSVBJRU5UX1BVQik7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Zyb21QdWJLZXknKS53aGljaC5pcy5hLlN0cmluZygpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdlbmNyeXB0ZWRUcmF2ZWxJbmZvJywgJ2FzeW5jRW5jcnlwdGVkQmxvYicpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../test/unit/v1/wallet.ts"],"names":[],"mappings":""}
|