@bitgo/abstract-lightning 7.1.1 → 7.2.1
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/codecs/api/transaction.d.ts +58 -2
- package/dist/src/codecs/api/transaction.d.ts.map +1 -1
- package/dist/src/codecs/api/transaction.js +22 -4
- package/dist/src/lightning/lightningUtils.d.ts +10 -0
- package/dist/src/lightning/lightningUtils.d.ts.map +1 -1
- package/dist/src/lightning/lightningUtils.js +45 -13
- package/dist/src/lightning/parseWithdrawPsbt.d.ts.map +1 -1
- package/dist/src/lightning/parseWithdrawPsbt.js +8 -2
- package/dist/src/wallet/lightning.d.ts +6 -5
- package/dist/src/wallet/lightning.d.ts.map +1 -1
- package/dist/src/wallet/lightning.js +2 -2
- package/dist/test/unit/lightning/codecs.d.ts +2 -0
- package/dist/test/unit/lightning/codecs.d.ts.map +1 -0
- package/dist/test/unit/lightning/codecs.js +151 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.d.ts +4 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.d.ts.map +1 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.js +1561 -0
- package/dist/test/unit/lightning/lightningUtils.d.ts +2 -0
- package/dist/test/unit/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/test/unit/lightning/lightningUtils.js +123 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.d.ts +2 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.d.ts.map +1 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.js +125 -0
- package/dist/test/unit/lightning/signableJson.d.ts +2 -0
- package/dist/test/unit/lightning/signableJson.d.ts.map +1 -0
- package/dist/test/unit/lightning/signableJson.js +52 -0
- package/dist/test/unit/lightning/signature.d.ts +2 -0
- package/dist/test/unit/lightning/signature.d.ts.map +1 -0
- package/dist/test/unit/lightning/signature.js +91 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +7 -4
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -469
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightningUtils.d.ts","sourceRoot":"","sources":["../../../../test/unit/lightning/lightningUtils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,123 @@
|
|
|
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
|
+
const assert_1 = __importDefault(require("assert"));
|
|
40
|
+
const macaroon_1 = require("macaroon");
|
|
41
|
+
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
42
|
+
const createWatchOnlyFixture_1 = require("./createWatchOnlyFixture");
|
|
43
|
+
const lightning_1 = require("../../../src/lightning");
|
|
44
|
+
const sdkcore = __importStar(require("@bitgo/sdk-core"));
|
|
45
|
+
describe('lightning utils', function () {
|
|
46
|
+
[
|
|
47
|
+
{ name: 'lnbtc', networkName: 'bitcoin' },
|
|
48
|
+
{ name: 'tlnbtc', networkName: 'testnet' },
|
|
49
|
+
].forEach(({ name, networkName }) => {
|
|
50
|
+
describe(`success - coin ${name} and network ${networkName}`, function () {
|
|
51
|
+
it(`isValidLightningNetworkName and getLightningNetwork`, function () {
|
|
52
|
+
(0, assert_1.default)((0, lightning_1.isValidLightningNetworkName)(networkName));
|
|
53
|
+
const network = (0, lightning_1.getLightningNetwork)(networkName);
|
|
54
|
+
assert_1.default.strictEqual(network, utxolib.networks[networkName]);
|
|
55
|
+
});
|
|
56
|
+
it(`isValidLightningNetwork`, function () {
|
|
57
|
+
(0, assert_1.default)((0, lightning_1.isValidLightningNetworkName)(networkName));
|
|
58
|
+
(0, assert_1.default)((0, lightning_1.isValidLightningNetwork)(utxolib.networks[networkName]));
|
|
59
|
+
});
|
|
60
|
+
it(`getStaticsLightningNetwork`, function () {
|
|
61
|
+
assert_1.default.strictEqual((0, lightning_1.getStaticsLightningNetwork)(name).family, 'lnbtc');
|
|
62
|
+
});
|
|
63
|
+
it(`getUtxolibNetwork`, function () {
|
|
64
|
+
assert_1.default.strictEqual((0, lightning_1.getUtxolibNetwork)(name), networkName === 'bitcoin' ? utxolib.networks.bitcoin : utxolib.networks.testnet);
|
|
65
|
+
});
|
|
66
|
+
it(`isLightningCoinName`, function () {
|
|
67
|
+
assert_1.default.strictEqual((0, lightning_1.isLightningCoinName)(name), true);
|
|
68
|
+
assert_1.default.strictEqual((0, lightning_1.isLightningCoinName)('ltc'), false);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
it(`isValidLightningNetworkName should return false for non lightning network name`, function () {
|
|
73
|
+
assert_1.default.strictEqual((0, lightning_1.isValidLightningNetworkName)('litecoin'), false);
|
|
74
|
+
});
|
|
75
|
+
it(`isValidLightningNetwork should return false for non lightning network`, function () {
|
|
76
|
+
assert_1.default.strictEqual((0, lightning_1.isValidLightningNetwork)(utxolib.networks['litecoin']), false);
|
|
77
|
+
});
|
|
78
|
+
it(`getUtxolibNetwork should return fail for invalid lightning coin`, function () {
|
|
79
|
+
assert_1.default.throws(() => {
|
|
80
|
+
(0, lightning_1.getUtxolibNetwork)('ltc');
|
|
81
|
+
}, /ltc is not a lightning coin/);
|
|
82
|
+
});
|
|
83
|
+
it(`createWatchOnly`, function () {
|
|
84
|
+
const watchOnly = (0, lightning_1.createWatchOnly)(createWatchOnlyFixture_1.signerRootKey, utxolib.networks.testnet);
|
|
85
|
+
assert_1.default.deepStrictEqual(watchOnly.accounts, createWatchOnlyFixture_1.accounts);
|
|
86
|
+
assert_1.default.strictEqual(watchOnly.master_key_fingerprint, utxolib.bip32.fromBase58(createWatchOnlyFixture_1.signerRootKey, utxolib.networks.testnet).fingerprint.toString('hex'));
|
|
87
|
+
});
|
|
88
|
+
it(`addIPCaveatToMacaroon`, function () {
|
|
89
|
+
const macaroon = 'AgEDbG5kAvgBAwoQMgU7rDi802Yqg/tHll24nhIBMBoWCgdhZGRyZXNzEgRyZWFkEgV3cml0ZRoTCgRpbmZvEgRyZWFkEgV3cml0ZRoXCghpbnZvaWNlcxIEcmVhZBIFd3JpdGUaIQoIbWFjYXJvb24SCGdlbmVyYXRlEgRyZWFkEgV3cml0ZRoWCgdtZXNzYWdlEgRyZWFkEgV3cml0ZRoXCghvZmZjaGFpbhIEcmVhZBIFd3JpdGUaFgoHb25jaGFpbhIEcmVhZBIFd3JpdGUaFAoFcGVlcnMSBHJlYWQSBXdyaXRlGhgKBnNpZ25lchIIZ2VuZXJhdGUSBHJlYWQAAAYgZKiUvEzxGd2QKGUS+9R5ZWevG09S06fMJUnt+k1XXXQ=';
|
|
90
|
+
const macaroonObj = (0, macaroon_1.importMacaroon)(macaroon).exportJSON();
|
|
91
|
+
assert_1.default.strictEqual(macaroonObj.c, undefined);
|
|
92
|
+
const macaroonWithCaveat = (0, lightning_1.addIPCaveatToMacaroon)(macaroon, '127.0.0.1');
|
|
93
|
+
const macaroonObjWithCaveat = (0, macaroon_1.importMacaroon)(macaroonWithCaveat).exportJSON();
|
|
94
|
+
assert_1.default.strictEqual(macaroonObjWithCaveat.c[0].i, 'ipaddr 127.0.0.1');
|
|
95
|
+
});
|
|
96
|
+
it(`deriveLightningServiceSharedSecret`, function () {
|
|
97
|
+
const userAuthXprv = 'xprv9s21ZrQH143K4NPkV8riiTnFf72MRyQDVHMmmpekGF1w5QkS2MfTei9KXYvrZVMop4zQ4arnzSF7TRp3Cy73AWaDdADiYMCi5qpYW1bUa5m';
|
|
98
|
+
const lightningServicePubKey = (0, lightning_1.getStaticsLightningNetwork)('tlnbtc').lightningServicePubKey;
|
|
99
|
+
const expectedSecret = sdkcore.getSharedSecret(utxolib.bip32.fromBase58(userAuthXprv), Buffer.from(lightningServicePubKey, 'hex'));
|
|
100
|
+
const secret = (0, lightning_1.deriveLightningServiceSharedSecret)('tlnbtc', userAuthXprv);
|
|
101
|
+
assert_1.default.deepStrictEqual(secret, expectedSecret);
|
|
102
|
+
});
|
|
103
|
+
it(`deriveMiddlewareSharedSecret`, function () {
|
|
104
|
+
const userAuthXprv = 'xprv9s21ZrQH143K4NPkV8riiTnFf72MRyQDVHMmmpekGF1w5QkS2MfTei9KXYvrZVMop4zQ4arnzSF7TRp3Cy73AWaDdADiYMCi5qpYW1bUa5m';
|
|
105
|
+
const middlewarePubKey = (0, lightning_1.getStaticsLightningNetwork)('tlnbtc').middlewarePubKey;
|
|
106
|
+
const expectedSecret = sdkcore.getSharedSecret(utxolib.bip32.fromBase58(userAuthXprv), Buffer.from(middlewarePubKey, 'hex'));
|
|
107
|
+
const secret = (0, lightning_1.deriveMiddlewareSharedSecret)('tlnbtc', userAuthXprv);
|
|
108
|
+
assert_1.default.deepStrictEqual(secret, expectedSecret);
|
|
109
|
+
});
|
|
110
|
+
it(`deriveTatSharedSecret`, function () {
|
|
111
|
+
const userXprv = 'xprv9s21ZrQH143K4NPkV8riiTnFf72MRyQDVHMmmpekGF1w5QkS2MfTei9KXYvrZVMop4zQ4arnzSF7TRp3Cy73AWaDdADiYMCi5qpYW1bUa5m';
|
|
112
|
+
const tatPubKey = (0, lightning_1.getStaticsLightningNetwork)('tlnbtc').tatPubKey;
|
|
113
|
+
const expectedSecret = sdkcore.getSharedSecret(utxolib.bip32.fromBase58(userXprv), Buffer.from(tatPubKey, 'hex'));
|
|
114
|
+
const secret = (0, lightning_1.deriveTatSharedSecret)('tlnbtc', userXprv);
|
|
115
|
+
assert_1.default.deepStrictEqual(secret, expectedSecret);
|
|
116
|
+
});
|
|
117
|
+
it(`computeBip32DerivationIndexFromSeed`, function () {
|
|
118
|
+
const seed1 = 'The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.';
|
|
119
|
+
const seed2 = 'The Times 04/Jan/2009 Chancellor on brink of second bailout for banks.';
|
|
120
|
+
assert_1.default.notDeepStrictEqual((0, lightning_1.computeBip32DerivationIndexFromSeed)(seed1), (0, lightning_1.computeBip32DerivationIndexFromSeed)(seed2));
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHVDQUEwQztBQUMxQyx5REFBMkM7QUFFM0MscUVBQW1FO0FBQ25FLHNEQWFnQztBQUVoQyx5REFBMkM7QUFFM0MsUUFBUSxDQUFDLGlCQUFpQixFQUFFO0lBQzFCO1FBQ0UsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7UUFDekMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7S0FDM0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1FBQ2xDLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxnQkFBZ0IsV0FBVyxFQUFFLEVBQUU7WUFDNUQsRUFBRSxDQUFDLHFEQUFxRCxFQUFFO2dCQUN4RCxJQUFBLGdCQUFNLEVBQUMsSUFBQSx1Q0FBMkIsRUFBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFBLCtCQUFtQixFQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNqRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHlCQUF5QixFQUFFO2dCQUM1QixJQUFBLGdCQUFNLEVBQUMsSUFBQSx1Q0FBMkIsRUFBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxJQUFBLGdCQUFNLEVBQUMsSUFBQSxtQ0FBdUIsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FB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Q1osaUhBQWlILENBQUM7UUFDcEgsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQ0FBMEIsRUFBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDakUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xILE1BQU0sTUFBTSxHQUFHLElBQUEsaUNBQXFCLEVBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELGdCQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRTtRQUN4QyxNQUFNLEtBQUssR0FBRyx3RUFBd0UsQ0FBQztRQUN2RixNQUFNLEtBQUssR0FBRyx3RUFBd0UsQ0FBQztRQUN2RixnQkFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUEsK0NBQW1DLEVBQUMsS0FBSyxDQUFDLEVBQUUsSUFBQSwrQ0FBbUMsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBpbXBvcnRNYWNhcm9vbiB9IGZyb20gJ21hY2Fyb29uJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgYWNjb3VudHMsIHNpZ25lclJvb3RLZXkgfSBmcm9tICcuL2NyZWF0ZVdhdGNoT25seUZpeHR1cmUnO1xuaW1wb3J0IHtcbiAgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lLFxuICBnZXRMaWdodG5pbmdOZXR3b3JrLFxuICBpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayxcbiAgZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmssXG4gIGdldFV0eG9saWJOZXR3b3JrLFxuICBpc0xpZ2h0bmluZ0NvaW5OYW1lLFxuICBjcmVhdGVXYXRjaE9ubHksXG4gIGFkZElQQ2F2ZWF0VG9NYWNhcm9vbixcbiAgZGVyaXZlTGlnaHRuaW5nU2VydmljZVNoYXJlZFNlY3JldCxcbiAgZGVyaXZlTWlkZGxld2FyZVNoYXJlZFNlY3JldCxcbiAgZGVyaXZlVGF0U2hhcmVkU2VjcmV0LFxuICBjb21wdXRlQmlwMzJEZXJpdmF0aW9uSW5kZXhGcm9tU2VlZCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpZ2h0bmluZyc7XG5cbmltcG9ydCAqIGFzIHNka2NvcmUgZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZGVzY3JpYmUoJ2xpZ2h0bmluZyB1dGlscycsIGZ1bmN0aW9uICgpIHtcbiAgW1xuICAgIHsgbmFtZTogJ2xuYnRjJywgbmV0d29ya05hbWU6ICdiaXRjb2luJyB9LFxuICAgIHsgbmFtZTogJ3RsbmJ0YycsIG5ldHdvcmtOYW1lOiAndGVzdG5ldCcgfSxcbiAgXS5mb3JFYWNoKCh7IG5hbWUsIG5ldHdvcmtOYW1lIH0pID0+IHtcbiAgICBkZXNjcmliZShgc3VjY2VzcyAtIGNvaW4gJHtuYW1lfSBhbmQgbmV0d29yayAke25ldHdvcmtOYW1lfWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUgYW5kIGdldExpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUobmV0d29ya05hbWUpKTtcbiAgICAgICAgY29uc3QgbmV0d29yayA9IGdldExpZ2h0bmluZ05ldHdvcmsobmV0d29ya05hbWUpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobmV0d29yaywgdXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZShuZXR3b3JrTmFtZSkpO1xuICAgICAgICBhc3NlcnQoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsodXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV0pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29yayhuYW1lKS5mYW1pbHksICdsbmJ0YycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBnZXRVdHhvbGliTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICAgIGdldFV0eG9saWJOZXR3b3JrKG5hbWUpLFxuICAgICAgICAgIG5ldHdvcmtOYW1lID09PSAnYml0Y29pbicgPyB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4gOiB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgaXNMaWdodG5pbmdDb2luTmFtZWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzTGlnaHRuaW5nQ29pbk5hbWUobmFtZSksIHRydWUpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNMaWdodG5pbmdDb2luTmFtZSgnbHRjJyksIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIG5vbiBsaWdodG5pbmcgbmV0d29yayBuYW1lYCwgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUoJ2xpdGVjb2luJyksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIG5vbiBsaWdodG5pbmcgbmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsodXR4b2xpYi5uZXR3b3Jrc1snbGl0ZWNvaW4nXSksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoYGdldFV0eG9saWJOZXR3b3JrIHNob3VsZCByZXR1cm4gZmFpbCBmb3IgaW52YWxpZCBsaWdodG5pbmcgY29pbmAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIGdldFV0eG9saWJOZXR3b3JrKCdsdGMnKTtcbiAgICB9LCAvbHRjIGlzIG5vdCBhIGxpZ2h0bmluZyBjb2luLyk7XG4gIH0pO1xuXG4gIGl0KGBjcmVhdGVXYXRjaE9ubHlgLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgd2F0Y2hPbmx5ID0gY3JlYXRlV2F0Y2hPbmx5KHNpZ25lclJvb3RLZXksIHV0eG9saWIubmV0d29ya3MudGVzdG5ldCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh3YXRjaE9ubHkuYWNjb3VudHMsIGFjY291bnRzKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB3YXRjaE9ubHkubWFzdGVyX2tleV9maW5nZXJwcmludCxcbiAgICAgIHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChzaWduZXJSb290S2V5LCB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXQpLmZpbmdlcnByaW50LnRvU3RyaW5nKCdoZXgnKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KGBhZGRJUENhdmVhdFRvTWFjYXJvb25gLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgbWFjYXJvb24gPVxuICAgICAgJ0FnRURiRzVrQXZnQkF3b1FNZ1U3ckRpODAyWXFnL3RIbGwyNG5oSUJNQm9XQ2dkaFpHUnlaWE56RWdSeVpXRmtFZ1YzY21sMFpSb1RDZ1JwYm1adkVnUnlaV0ZrRWdWM2NtbDBaUm9YQ2docGJuWnZhV05sY3hJRWNtVmhaQklGZDNKcGRHVWFJUW9JYldGallYSnZiMjRTQ0dkbGJtVnlZWFJsRWdSeVpXRmtFZ1YzY21sMFpSb1dDZ2R0WlhOellXZGxFZ1J5WldGa0VnVjNjbWwwWlJvWENnaHZabVpqYUdGcGJoSUVjbVZoWkJJRmQzSnBkR1VhRmdvSGIyNWphR0ZwYmhJRWNtVmhaQklGZDNKcGRHVWFGQW9GY0dWbGNuTVNCSEpsWVdRU0JYZHlhWFJsR2hnS0JuTnBaMjVsY2hJSVoyVnVaWEpoZEdVU0JISmxZV1FBQUFZZ1pLaVV2RXp4R2QyUUtHVVMrOVI1WldldkcwOVMwNmZNSlVudCtrMVhYWFE9JztcbiAgICBjb25zdCBtYWNhcm9vbk9iaiA9IGltcG9ydE1hY2Fyb29uKG1hY2Fyb29uKS5leHBvcnRKU09OKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1hY2Fyb29uT2JqLmMsIHVuZGVmaW5lZCk7XG4gICAgY29uc3QgbWFjYXJvb25XaXRoQ2F2ZWF0ID0gYWRkSVBDYXZlYXRUb01hY2Fyb29uKG1hY2Fyb29uLCAnMTI3LjAuMC4xJyk7XG4gICAgY29uc3QgbWFjYXJvb25PYmpXaXRoQ2F2ZWF0ID0gaW1wb3J0TWFjYXJvb24obWFjYXJvb25XaXRoQ2F2ZWF0KS5leHBvcnRKU09OKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1hY2Fyb29uT2JqV2l0aENhdmVhdC5jWzBdLmksICdpcGFkZHIgMTI3LjAuMC4xJyk7XG4gIH0pO1xuXG4gIGl0KGBkZXJpdmVMaWdodG5pbmdTZXJ2aWNlU2hhcmVkU2VjcmV0YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHVzZXJBdXRoWHBydiA9XG4gICAgICAneHBydjlzMjFaclFIMTQzSzROUGtWOHJpaVRuRmY3Mk1SeVFEVkhNbW1wZWtHRjF3NVFrUzJNZlRlaTlLWFl2clpWTW9wNHpRNGFybnpTRjdUUnAzQ3k3M0FXYURkQURpWU1DaTVxcFlXMWJVYTVtJztcbiAgICBjb25zdCBsaWdodG5pbmdTZXJ2aWNlUHViS2V5ID0gZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsoJ3RsbmJ0YycpLmxpZ2h0bmluZ1NlcnZpY2VQdWJLZXk7XG5cbiAgICBjb25zdCBleHBlY3RlZFNlY3JldCA9IHNka2NvcmUuZ2V0U2hhcmVkU2VjcmV0KFxuICAgICAgdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KHVzZXJBdXRoWHBydiksXG4gICAgICBCdWZmZXIuZnJvbShsaWdodG5pbmdTZXJ2aWNlUHViS2V5LCAnaGV4JylcbiAgICApO1xuXG4gICAgY29uc3Qgc2VjcmV0ID0gZGVyaXZlTGlnaHRuaW5nU2VydmljZVNoYXJlZFNlY3JldCgndGxuYnRjJywgdXNlckF1dGhYcHJ2KTtcblxuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2VjcmV0LCBleHBlY3RlZFNlY3JldCk7XG4gIH0pO1xuXG4gIGl0KGBkZXJpdmVNaWRkbGV3YXJlU2hhcmVkU2VjcmV0YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHVzZXJBdXRoWHBydiA9XG4gICAgICAneHBydjlzMjFaclFIMTQzSzROUGtWOHJpaVRuRmY3Mk1SeVFEVkhNbW1wZWtHRjF3NVFrUzJNZlRlaTlLWFl2clpWTW9wNHpRNGFybnpTRjdUUnAzQ3k3M0FXYURkQURpWU1DaTVxcFlXMWJVYTVtJztcbiAgICBjb25zdCBtaWRkbGV3YXJlUHViS2V5ID0gZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsoJ3RsbmJ0YycpLm1pZGRsZXdhcmVQdWJLZXk7XG5cbiAgICBjb25zdCBleHBlY3RlZFNlY3JldCA9IHNka2NvcmUuZ2V0U2hhcmVkU2VjcmV0KFxuICAgICAgdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KHVzZXJBdXRoWHBydiksXG4gICAgICBCdWZmZXIuZnJvbShtaWRkbGV3YXJlUHViS2V5LCAnaGV4JylcbiAgICApO1xuXG4gICAgY29uc3Qgc2VjcmV0ID0gZGVyaXZlTWlkZGxld2FyZVNoYXJlZFNlY3JldCgndGxuYnRjJywgdXNlckF1dGhYcHJ2KTtcblxuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2VjcmV0LCBleHBlY3RlZFNlY3JldCk7XG4gIH0pO1xuXG4gIGl0KGBkZXJpdmVUYXRTaGFyZWRTZWNyZXRgLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdXNlclhwcnYgPVxuICAgICAgJ3hwcnY5czIxWnJRSDE0M0s0TlBrVjhyaWlUbkZmNzJNUnlRRFZITW1tcGVrR0YxdzVRa1MyTWZUZWk5S1hZdnJaVk1vcDR6UTRhcm56U0Y3VFJwM0N5NzNBV2FEZEFEaVlNQ2k1cXBZVzFiVWE1bSc7XG4gICAgY29uc3QgdGF0UHViS2V5ID0gZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsoJ3RsbmJ0YycpLnRhdFB1YktleTtcbiAgICBjb25zdCBleHBlY3RlZFNlY3JldCA9IHNka2NvcmUuZ2V0U2hhcmVkU2VjcmV0KHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OCh1c2VyWHBydiksIEJ1ZmZlci5mcm9tKHRhdFB1YktleSwgJ2hleCcpKTtcbiAgICBjb25zdCBzZWNyZXQgPSBkZXJpdmVUYXRTaGFyZWRTZWNyZXQoJ3RsbmJ0YycsIHVzZXJYcHJ2KTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNlY3JldCwgZXhwZWN0ZWRTZWNyZXQpO1xuICB9KTtcblxuICBpdChgY29tcHV0ZUJpcDMyRGVyaXZhdGlvbkluZGV4RnJvbVNlZWRgLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgc2VlZDEgPSAnVGhlIFRpbWVzIDAzL0phbi8yMDA5IENoYW5jZWxsb3Igb24gYnJpbmsgb2Ygc2Vjb25kIGJhaWxvdXQgZm9yIGJhbmtzLic7XG4gICAgY29uc3Qgc2VlZDIgPSAnVGhlIFRpbWVzIDA0L0phbi8yMDA5IENoYW5jZWxsb3Igb24gYnJpbmsgb2Ygc2Vjb25kIGJhaWxvdXQgZm9yIGJhbmtzLic7XG4gICAgYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbChjb21wdXRlQmlwMzJEZXJpdmF0aW9uSW5kZXhGcm9tU2VlZChzZWVkMSksIGNvbXB1dGVCaXAzMkRlcml2YXRpb25JbmRleEZyb21TZWVkKHNlZWQyKSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseWithdrawPsbt.d.ts","sourceRoot":"","sources":["../../../../test/unit/lightning/parseWithdrawPsbt.ts"],"names":[],"mappings":""}
|
|
@@ -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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const src_1 = require("../../../src");
|
|
40
|
+
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
41
|
+
const assert_1 = __importDefault(require("assert"));
|
|
42
|
+
describe('parseWithdrawPsbt', () => {
|
|
43
|
+
const unsignedPsbtHex = '70736274ff01007d02000000015e50b8d96cebdc3273d9a100eb68392d980d5b934b8170c80a23488b595268ca0100000000ffffffff02a086010000000000225120379bc88cc15d3605ed9de1b61ff8d65021b650db1151e751a30885ccfcc7d15affa80a000000000016001480a06f2e6b77e817fd5de6e41ea512c563c26cb800000000000100ea02000000000101a158d806735bb7c54e4c701d4f5821cd5342d48d5e1fcbed1169e6e45aa444be0100000000ffffffff02a086010000000000225120379bc88cc15d3605ed9de1b61ff8d65021b650db1151e751a30885ccfcc7d15a6a310c000000000016001478a5d98c7160484b9b00f1782803c58edfc49b9a024730440220407d9162f52371df246dcfa2943d40fbdcb0d4b6768f7682c65193378b2845a60220101c7bc460c93d2976961ac23400f0f10c145efb989a3addb7f03ebaaa2200950121037e17444c85c8b7da07f12fd53cb2ca142c2b4932d0f898649c4b5be0021da0980000000001030401000000220602e57146e5b4762a7ff374adf4072047b67ef115ad46a34189bdeb6a4f88db9b0818000000005400008000000080000000800100000006000000000022020379abbe44004ff7e527bdee3dd8d95e5cd250053f35ee92258b97aa83dfa93c621800000000540000800000008000000080010000005000000000';
|
|
44
|
+
const network = utxolib.networks.testnet;
|
|
45
|
+
const recipients = [
|
|
46
|
+
{
|
|
47
|
+
amountSat: 100000n,
|
|
48
|
+
address: 'tb1px7du3rxpt5mqtmvauxmpl7xk2qsmv5xmz9g7w5drpzzuelx869dqwape7k',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
const accounts = [
|
|
52
|
+
{
|
|
53
|
+
xpub: 'tpubDCmiWMkTJrZ24t1Z6ECR3HyynCyZ9zGsWqhcLh6H4yFK2CDozSszD1pP2Li4Nx1YYtRcvmNbdb3nD1SzFejYtPFfTocTv2EaAgJCg4zpJpA',
|
|
54
|
+
purpose: 49,
|
|
55
|
+
coin_type: 0,
|
|
56
|
+
account: 0,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
xpub: 'tpubDCFN7bsxR9UTKggdH2pmv5HeHGQNiDrJwa1EZFtP9sH5PF28i37FHpoYSYARQkKZ6Mi98pkp7oypDcxFmE4dQGq8jV8Gv3L6gmWBeRwPxkP',
|
|
60
|
+
purpose: 84,
|
|
61
|
+
coin_type: 0,
|
|
62
|
+
account: 0,
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
it('should parse a valid withdraw PSBT', () => {
|
|
66
|
+
(0, src_1.validatePsbtForWithdraw)(unsignedPsbtHex, network, recipients, accounts);
|
|
67
|
+
});
|
|
68
|
+
it('should throw for invalid PSBT', () => {
|
|
69
|
+
assert_1.default.throws(() => {
|
|
70
|
+
(0, src_1.validatePsbtForWithdraw)('asdasd', network, recipients, accounts);
|
|
71
|
+
}, /ERR_BUFFER_OUT_OF_BOUNDS/);
|
|
72
|
+
});
|
|
73
|
+
it('should throw for invalid recipient address', () => {
|
|
74
|
+
const differentRecipients = [
|
|
75
|
+
{
|
|
76
|
+
...recipients[0],
|
|
77
|
+
address: 'tb1qxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz',
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
assert_1.default.throws(() => {
|
|
81
|
+
(0, src_1.validatePsbtForWithdraw)(unsignedPsbtHex, network, differentRecipients, accounts);
|
|
82
|
+
}, /PSBT output tb1px7du3rxpt5mqtmvauxmpl7xk2qsmv5xmz9g7w5drpzzuelx869dqwape7k with value 100000 does not match any recipient/);
|
|
83
|
+
});
|
|
84
|
+
it('should throw for invalid recipient value', () => {
|
|
85
|
+
const differentRecipients = [
|
|
86
|
+
{
|
|
87
|
+
...recipients[0],
|
|
88
|
+
amountSat: 99999n,
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
assert_1.default.throws(() => {
|
|
92
|
+
(0, src_1.validatePsbtForWithdraw)(unsignedPsbtHex, network, differentRecipients, accounts);
|
|
93
|
+
}, /PSBT output tb1px7du3rxpt5mqtmvauxmpl7xk2qsmv5xmz9g7w5drpzzuelx869dqwape7k with value 100000 does not match any recipient/);
|
|
94
|
+
});
|
|
95
|
+
it('should throw for account not found', () => {
|
|
96
|
+
const incompatibleAccounts = [];
|
|
97
|
+
assert_1.default.throws(() => {
|
|
98
|
+
(0, src_1.validatePsbtForWithdraw)(unsignedPsbtHex, network, recipients, incompatibleAccounts);
|
|
99
|
+
}, /Account not found for purpose/);
|
|
100
|
+
});
|
|
101
|
+
it('should throw for invalid pubkey', () => {
|
|
102
|
+
const incompatibleAccounts = [
|
|
103
|
+
{
|
|
104
|
+
...accounts[1],
|
|
105
|
+
xpub: 'tpubDCmiWMkTJrZ24t1Z6ECR3HyynCyZ9zGsWqhcLh6H4yFK2CDozSszD1pP2Li4Nx1YYtRcvmNbdb3nD1SzFejYtPFfTocTv2EaAgJCg4zpJpA',
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
assert_1.default.throws(() => {
|
|
109
|
+
(0, src_1.validatePsbtForWithdraw)(unsignedPsbtHex, network, recipients, incompatibleAccounts);
|
|
110
|
+
}, /Derived pubkey does not match for address/);
|
|
111
|
+
});
|
|
112
|
+
it('should throw for invalid purpose', () => {
|
|
113
|
+
const incompatibleAccounts = [
|
|
114
|
+
{
|
|
115
|
+
...accounts[1],
|
|
116
|
+
purpose: 1017,
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
const incompatiblePsbt = `70736274ff01007d02000000015e50b8d96cebdc3273d9a100eb68392d980d5b934b8170c80a23488b595268ca0100000000ffffffff02a086010000000000225120379bc88cc15d3605ed9de1b61ff8d65021b650db1151e751a30885ccfcc7d15affa80a000000000016001480a06f2e6b77e817fd5de6e41ea512c563c26cb800000000000100ea02000000000101a158d806735bb7c54e4c701d4f5821cd5342d48d5e1fcbed1169e6e45aa444be0100000000ffffffff02a086010000000000225120379bc88cc15d3605ed9de1b61ff8d65021b650db1151e751a30885ccfcc7d15a6a310c000000000016001478a5d98c7160484b9b00f1782803c58edfc49b9a024730440220407d9162f52371df246dcfa2943d40fbdcb0d4b6768f7682c65193378b2845a60220101c7bc460c93d2976961ac23400f0f10c145efb989a3addb7f03ebaaa2200950121037e17444c85c8b7da07f12fd53cb2ca142c2b4932d0f898649c4b5be0021da0980000000001030401000000220602e57146e5b4762a7ff374adf4072047b67ef115ad46a34189bdeb6a4f88db9b0818000000005400008000000080000000800100000006000000000022020379abbe44004ff7e527bdee3dd8d95e5cd250053f35ee92258b97aa83dfa93c621800000000f90300800000008000000080010000005000000000`;
|
|
120
|
+
assert_1.default.throws(() => {
|
|
121
|
+
(0, src_1.validatePsbtForWithdraw)(incompatiblePsbt, network, recipients, incompatibleAccounts);
|
|
122
|
+
}, /Unsupported purpose/);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQXVEO0FBQ3ZELHlEQUEyQztBQUMzQyxvREFBNEI7QUFFNUIsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxNQUFNLGVBQWUsR0FDbkIsNCtCQUE0K0IsQ0FBQztJQUMvK0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDekMsTUFBTSxVQUFVLEdBQUc7UUFDakI7WUFDRSxTQUFTLEVBQUUsT0FBTztZQUNsQixPQUFPLEVBQUUsZ0VBQWdFO1NBQzFFO0tBQ0YsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHO1FBQ2Y7WUFDRSxJQUFJLEVBQUUsaUhBQWlIO1lBQ3ZILE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsaUhBQWlIO1lBQ3ZILE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQztTQUNYO0tBQ0YsQ0FBQztJQUNGLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7UUFDNUMsSUFBQSw2QkFBdUIsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDdkMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUEsNkJBQXVCLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sbUJBQW1CLEdBQUc7WUFDMUI7Z0JBQ0UsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixPQUFPLEVBQUUseURBQXlEO2FBQ25FO1NBQ0YsQ0FBQztRQUNGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFBLDZCQUF1QixFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkYsQ0FBQyxFQUFFLDJIQUEySCxDQUFDLENBQUM7SUFDbEksQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1FBQ2xELE1BQU0sbUJBQW1CLEdBQUc7WUFDMUI7Z0JBQ0UsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixTQUFTLEVBQUUsTUFBTTthQUNsQjtTQUNGLENBQUM7UUFDRixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSw2QkFBdUIsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLENBQUMsRUFBRSwySEFBMkgsQ0FBQyxDQUFDO0lBQ2xJLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUNoQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSw2QkFBdUIsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxNQUFNLG9CQUFvQixHQUFHO1lBQzNCO2dCQUNFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxJQUFJLEVBQUUsaUhBQWlIO2FBQ3hIO1NBQ0YsQ0FBQztRQUNGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFBLDZCQUF1QixFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDdEYsQ0FBQyxFQUFFLDJDQUEyQyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1FBQzFDLE1BQU0sb0JBQW9CLEdBQUc7WUFDM0I7Z0JBQ0UsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNkLE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRixDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyw0K0JBQTQrQixDQUFDO1FBQ3RnQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSw2QkFBdUIsRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDdkYsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZhbGlkYXRlUHNidEZvcldpdGhkcmF3IH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuZGVzY3JpYmUoJ3BhcnNlV2l0aGRyYXdQc2J0JywgKCkgPT4ge1xuICBjb25zdCB1bnNpZ25lZFBzYnRIZXggPVxuICAgICc3MDczNjI3NGZmMDEwMDdkMDIwMDAwMDAwMTVlNTBiOGQ5NmNlYmRjMzI3M2Q5YTEwMGViNjgzOTJkOTgwZDViOTM0YjgxNzBjODBhMjM0ODhiNTk1MjY4Y2EwMTAwMDAwMDAwZmZmZmZmZmYwMmEwODYwMTAwMDAwMDAwMDAyMjUxMjAzNzliYzg4Y2MxNWQzNjA1ZWQ5ZGUxYjYxZmY4ZDY1MDIxYjY1MGRiMTE1MWU3NTFhMzA4ODVjY2ZjYzdkMTVhZmZhODBhMDAwMDAwMDAwMDE2MDAxNDgwYTA2ZjJlNmI3N2U4MTdmZDVkZTZlNDFlYTUxMmM1NjNjMjZjYjgwMDAwMDAwMDAwMDEwMGVhMDIwMDAwMDAwMDAxMDFhMTU4ZDgwNjczNWJiN2M1NGU0YzcwMWQ0ZjU4MjFjZDUzNDJkNDhkNWUxZmNiZWQxMTY5ZTZlNDVhYTQ0NGJlMDEwMDAwMDAwMGZmZmZmZmZmMDJhMDg2MDEwMDAwMDAwMDAwMjI1MTIwMzc5YmM4OGNjMTVkMzYwNWVkOWRlMWI2MWZmOGQ2NTAyMWI2NTBkYjExNTFlNzUxYTMwODg1Y2NmY2M3ZDE1YTZhMzEwYzAwMDAwMDAwMDAxNjAwMTQ3OGE1ZDk4YzcxNjA0ODRiOWIwMGYxNzgyODAzYzU4ZWRmYzQ5YjlhMDI0NzMwNDQwMjIwNDA3ZDkxNjJmNTIzNzFkZjI0NmRjZmEyOTQzZDQwZmJkY2IwZDRiNjc2OGY3NjgyYzY1MTkzMzc4YjI4NDVhNjAyMjAxMDFjN2JjNDYwYzkzZDI5NzY5NjFhYzIzNDAwZjBmMTBjMTQ1ZWZiOTg5YTNhZGRiN2YwM2ViYWFhMjIwMDk1MDEyMTAzN2UxNzQ0NGM4NWM4YjdkYTA3ZjEyZmQ1M2NiMmNhMTQyYzJiNDkzMmQwZjg5ODY0OWM0YjViZTAwMjFkYTA5ODAwMDAwMDAwMDEwMzA0MDEwMDAwMDAyMjA2MDJlNTcxNDZlNWI0NzYyYTdmZjM3NGFkZjQwNzIwNDdiNjdlZjExNWFkNDZhMzQxODliZGViNmE0Zjg4ZGI5YjA4MTgwMDAwMDAwMDU0MDAwMDgwMDAwMDAwODAwMDAwMDA4MDAxMDAwMDAwMDYwMDAwMDAwMDAwMjIwMjAzNzlhYmJlNDQwMDRmZjdlNTI3YmRlZTNkZDhkOTVlNWNkMjUwMDUzZjM1ZWU5MjI1OGI5N2FhODNkZmE5M2M2MjE4MDAwMDAwMDA1NDAwMDA4MDAwMDAwMDgwMDAwMDAwODAwMTAwMDAwMDUwMDAwMDAwMDAnO1xuICBjb25zdCBuZXR3b3JrID0gdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0O1xuICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgIHtcbiAgICAgIGFtb3VudFNhdDogMTAwMDAwbixcbiAgICAgIGFkZHJlc3M6ICd0YjFweDdkdTNyeHB0NW1xdG12YXV4bXBsN3hrMnFzbXY1eG16OWc3dzVkcnB6enVlbHg4NjlkcXdhcGU3aycsXG4gICAgfSxcbiAgXTtcbiAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAge1xuICAgICAgeHB1YjogJ3RwdWJEQ21pV01rVEpyWjI0dDFaNkVDUjNIeXluQ3laOXpHc1dxaGNMaDZINHlGSzJDRG96U3N6RDFwUDJMaTROeDFZWXRSY3ZtTmJkYjNuRDFTekZlall0UEZmVG9jVHYyRWFBZ0pDZzR6cEpwQScsXG4gICAgICBwdXJwb3NlOiA0OSxcbiAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgIGFjY291bnQ6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB4cHViOiAndHB1YkRDRk43YnN4UjlVVEtnZ2RIMnBtdjVIZUhHUU5pRHJKd2ExRVpGdFA5c0g1UEYyOGkzN0ZIcG9ZU1lBUlFrS1o2TWk5OHBrcDdveXBEY3hGbUU0ZFFHcThqVjhHdjNMNmdtV0JlUndQeGtQJyxcbiAgICAgIHB1cnBvc2U6IDg0LFxuICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgYWNjb3VudDogMCxcbiAgICB9LFxuICBdO1xuICBpdCgnc2hvdWxkIHBhcnNlIGEgdmFsaWQgd2l0aGRyYXcgUFNCVCcsICgpID0+IHtcbiAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyh1bnNpZ25lZFBzYnRIZXgsIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgdGhyb3cgZm9yIGludmFsaWQgUFNCVCcsICgpID0+IHtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KCdhc2Rhc2QnLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgfSwgL0VSUl9CVUZGRVJfT1VUX09GX0JPVU5EUy8pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgaW52YWxpZCByZWNpcGllbnQgYWRkcmVzcycsICgpID0+IHtcbiAgICBjb25zdCBkaWZmZXJlbnRSZWNpcGllbnRzID0gW1xuICAgICAge1xuICAgICAgICAuLi5yZWNpcGllbnRzWzBdLFxuICAgICAgICBhZGRyZXNzOiAndGIxcXh5enh5enh5enh5enh5enh5enh5enh5enh5enh5enh5enh5enh5enh5enh5enh5enh5eicsXG4gICAgICB9LFxuICAgIF07XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyh1bnNpZ25lZFBzYnRIZXgsIG5ldHdvcmssIGRpZmZlcmVudFJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICB9LCAvUFNCVCBvdXRwdXQgdGIxcHg3ZHUzcnhwdDVtcXRtdmF1eG1wbDd4azJxc212NXhtejlnN3c1ZHJwenp1ZWx4ODY5ZHF3YXBlN2sgd2l0aCB2YWx1ZSAxMDAwMDAgZG9lcyBub3QgbWF0Y2ggYW55IHJlY2lwaWVudC8pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgaW52YWxpZCByZWNpcGllbnQgdmFsdWUnLCAoKSA9PiB7XG4gICAgY29uc3QgZGlmZmVyZW50UmVjaXBpZW50cyA9IFtcbiAgICAgIHtcbiAgICAgICAgLi4ucmVjaXBpZW50c1swXSxcbiAgICAgICAgYW1vdW50U2F0OiA5OTk5OW4sXG4gICAgICB9LFxuICAgIF07XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyh1bnNpZ25lZFBzYnRIZXgsIG5ldHdvcmssIGRpZmZlcmVudFJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICB9LCAvUFNCVCBvdXRwdXQgdGIxcHg3ZHUzcnhwdDVtcXRtdmF1eG1wbDd4azJxc212NXhtejlnN3c1ZHJwenp1ZWx4ODY5ZHF3YXBlN2sgd2l0aCB2YWx1ZSAxMDAwMDAgZG9lcyBub3QgbWF0Y2ggYW55IHJlY2lwaWVudC8pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgYWNjb3VudCBub3QgZm91bmQnLCAoKSA9PiB7XG4gICAgY29uc3QgaW5jb21wYXRpYmxlQWNjb3VudHMgPSBbXTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHVuc2lnbmVkUHNidEhleCwgbmV0d29yaywgcmVjaXBpZW50cywgaW5jb21wYXRpYmxlQWNjb3VudHMpO1xuICAgIH0sIC9BY2NvdW50IG5vdCBmb3VuZCBmb3IgcHVycG9zZS8pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgaW52YWxpZCBwdWJrZXknLCAoKSA9PiB7XG4gICAgY29uc3QgaW5jb21wYXRpYmxlQWNjb3VudHMgPSBbXG4gICAgICB7XG4gICAgICAgIC4uLmFjY291bnRzWzFdLFxuICAgICAgICB4cHViOiAndHB1YkRDbWlXTWtUSnJaMjR0MVo2RUNSM0h5eW5DeVo5ekdzV3FoY0xoNkg0eUZLMkNEb3pTc3pEMXBQMkxpNE54MVlZdFJjdm1OYmRiM25EMVN6RmVqWXRQRmZUb2NUdjJFYUFnSkNnNHpwSnBBJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHVuc2lnbmVkUHNidEhleCwgbmV0d29yaywgcmVjaXBpZW50cywgaW5jb21wYXRpYmxlQWNjb3VudHMpO1xuICAgIH0sIC9EZXJpdmVkIHB1YmtleSBkb2VzIG5vdCBtYXRjaCBmb3IgYWRkcmVzcy8pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgaW52YWxpZCBwdXJwb3NlJywgKCkgPT4ge1xuICAgIGNvbnN0IGluY29tcGF0aWJsZUFjY291bnRzID0gW1xuICAgICAge1xuICAgICAgICAuLi5hY2NvdW50c1sxXSxcbiAgICAgICAgcHVycG9zZTogMTAxNyxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBjb25zdCBpbmNvbXBhdGlibGVQc2J0ID0gYDcwNzM2Mjc0ZmYwMTAwN2QwMjAwMDAwMDAxNWU1MGI4ZDk2Y2ViZGMzMjczZDlhMTAwZWI2ODM5MmQ5ODBkNWI5MzRiODE3MGM4MGEyMzQ4OGI1OTUyNjhjYTAxMDAwMDAwMDBmZmZmZmZmZjAyYTA4NjAxMDAwMDAwMDAwMDIyNTEyMDM3OWJjODhjYzE1ZDM2MDVlZDlkZTFiNjFmZjhkNjUwMjFiNjUwZGIxMTUxZTc1MWEzMDg4NWNjZmNjN2QxNWFmZmE4MGEwMDAwMDAwMDAwMTYwMDE0ODBhMDZmMmU2Yjc3ZTgxN2ZkNWRlNmU0MWVhNTEyYzU2M2MyNmNiODAwMDAwMDAwMDAwMTAwZWEwMjAwMDAwMDAwMDEwMWExNThkODA2NzM1YmI3YzU0ZTRjNzAxZDRmNTgyMWNkNTM0MmQ0OGQ1ZTFmY2JlZDExNjllNmU0NWFhNDQ0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmEwODYwMTAwMDAwMDAwMDAyMjUxMjAzNzliYzg4Y2MxNWQzNjA1ZWQ5ZGUxYjYxZmY4ZDY1MDIxYjY1MGRiMTE1MWU3NTFhMzA4ODVjY2ZjYzdkMTVhNmEzMTBjMDAwMDAwMDAwMDE2MDAxNDc4YTVkOThjNzE2MDQ4NGI5YjAwZjE3ODI4MDNjNThlZGZjNDliOWEwMjQ3MzA0NDAyMjA0MDdkOTE2MmY1MjM3MWRmMjQ2ZGNmYTI5NDNkNDBmYmRjYjBkNGI2NzY4Zjc2ODJjNjUxOTMzNzhiMjg0NWE2MDIyMDEwMWM3YmM0NjBjOTNkMjk3Njk2MWFjMjM0MDBmMGYxMGMxNDVlZmI5ODlhM2FkZGI3ZjAzZWJhYWEyMjAwOTUwMTIxMDM3ZTE3NDQ0Yzg1YzhiN2RhMDdmMTJmZDUzY2IyY2ExNDJjMmI0OTMyZDBmODk4NjQ5YzRiNWJlMDAyMWRhMDk4MDAwMDAwMDAwMTAzMDQwMTAwMDAwMDIyMDYwMmU1NzE0NmU1YjQ3NjJhN2ZmMzc0YWRmNDA3MjA0N2I2N2VmMTE1YWQ0NmEzNDE4OWJkZWI2YTRmODhkYjliMDgxODAwMDAwMDAwNTQwMDAwODAwMDAwMDA4MDAwMDAwMDgwMDEwMDAwMDAwNjAwMDAwMDAwMDAyMjAyMDM3OWFiYmU0NDAwNGZmN2U1MjdiZGVlM2RkOGQ5NWU1Y2QyNTAwNTNmMzVlZTkyMjU4Yjk3YWE4M2RmYTkzYzYyMTgwMDAwMDAwMGY5MDMwMDgwMDAwMDAwODAwMDAwMDA4MDAxMDAwMDAwNTAwMDAwMDAwMGA7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhpbmNvbXBhdGlibGVQc2J0LCBuZXR3b3JrLCByZWNpcGllbnRzLCBpbmNvbXBhdGlibGVBY2NvdW50cyk7XG4gICAgfSwgL1Vuc3VwcG9ydGVkIHB1cnBvc2UvKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signableJson.d.ts","sourceRoot":"","sources":["../../../../test/unit/lightning/signableJson.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
const lightning_1 = require("../../../src/lightning");
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
describe('canonicalizeObject', function () {
|
|
9
|
+
it('should return the canonicalized object with sorted keys', function () {
|
|
10
|
+
const input = { b: 1, a: 2 };
|
|
11
|
+
const expected = { a: 2, b: 1 };
|
|
12
|
+
const result = (0, lightning_1.canonicalizeObject)(input);
|
|
13
|
+
assert_1.default.notDeepStrictEqual(JSON.stringify(input), JSON.stringify(expected));
|
|
14
|
+
assert_1.default.deepStrictEqual(JSON.stringify(result), JSON.stringify(expected));
|
|
15
|
+
});
|
|
16
|
+
it('should handle nested objects and sort their keys', function () {
|
|
17
|
+
const input = { b: { d: 4, c: 3 }, a: 2 };
|
|
18
|
+
const expected = { a: 2, b: { c: 3, d: 4 } };
|
|
19
|
+
const result = (0, lightning_1.canonicalizeObject)(input);
|
|
20
|
+
assert_1.default.notDeepStrictEqual(JSON.stringify(input), JSON.stringify(expected));
|
|
21
|
+
assert_1.default.deepStrictEqual(JSON.stringify(result), JSON.stringify(expected));
|
|
22
|
+
});
|
|
23
|
+
it('should handle arrays within objects', function () {
|
|
24
|
+
const input = { b: [3, 2, 1], a: 2 };
|
|
25
|
+
const expected = { a: 2, b: [3, 2, 1] };
|
|
26
|
+
const result = (0, lightning_1.canonicalizeObject)(input);
|
|
27
|
+
assert_1.default.notDeepStrictEqual(JSON.stringify(input), JSON.stringify(expected));
|
|
28
|
+
assert_1.default.deepStrictEqual(JSON.stringify(result), JSON.stringify(expected));
|
|
29
|
+
});
|
|
30
|
+
it('should handle arrays of objects and sort their keys', function () {
|
|
31
|
+
const input = [
|
|
32
|
+
{ b: 2, a: 1 },
|
|
33
|
+
{ d: 4, c: 3 },
|
|
34
|
+
];
|
|
35
|
+
const expected = [
|
|
36
|
+
{ a: 1, b: 2 },
|
|
37
|
+
{ c: 3, d: 4 },
|
|
38
|
+
];
|
|
39
|
+
const result = (0, lightning_1.canonicalizeObject)(input);
|
|
40
|
+
assert_1.default.notDeepStrictEqual(JSON.stringify(input), JSON.stringify(expected));
|
|
41
|
+
assert_1.default.deepStrictEqual(JSON.stringify(result), JSON.stringify(expected));
|
|
42
|
+
});
|
|
43
|
+
it('should return primitive values as is', function () {
|
|
44
|
+
assert_1.default.strictEqual(JSON.stringify((0, lightning_1.canonicalizeObject)(42)), JSON.stringify(42));
|
|
45
|
+
assert_1.default.strictEqual(JSON.stringify((0, lightning_1.canonicalizeObject)('string')), JSON.stringify('string'));
|
|
46
|
+
});
|
|
47
|
+
it('should throw an error for invalid object types', function () {
|
|
48
|
+
assert_1.default.throws(() => (0, lightning_1.canonicalizeObject)(null), /Invalid object type/);
|
|
49
|
+
assert_1.default.throws(() => (0, lightning_1.canonicalizeObject)(undefined), /Invalid object type/);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFibGVKc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpZ2h0bmluZy9zaWduYWJsZUpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBNEQ7QUFDNUQsb0RBQTRCO0FBRTVCLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRTtJQUM3QixFQUFFLENBQUMseURBQXlELEVBQUU7UUFDNUQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUEsOEJBQWtCLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsZ0JBQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMzRSxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtRQUNyRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3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QUUsQ0FBQyxJQUFBLDhCQUFrQixFQUFDLFNBQWtCLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYW5vbmljYWxpemVPYmplY3QgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGlnaHRuaW5nJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuZGVzY3JpYmUoJ2Nhbm9uaWNhbGl6ZU9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNhbm9uaWNhbGl6ZWQgb2JqZWN0IHdpdGggc29ydGVkIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB7IGI6IDEsIGE6IDIgfTtcbiAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogMiwgYjogMSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGNhbm9uaWNhbGl6ZU9iamVjdChpbnB1dCk7XG4gICAgYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbChKU09OLnN0cmluZ2lmeShpbnB1dCksIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChKU09OLnN0cmluZ2lmeShyZXN1bHQpLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBuZXN0ZWQgb2JqZWN0cyBhbmQgc29ydCB0aGVpciBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGlucHV0ID0geyBiOiB7IGQ6IDQsIGM6IDMgfSwgYTogMiB9O1xuICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiAyLCBiOiB7IGM6IDMsIGQ6IDQgfSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGNhbm9uaWNhbGl6ZU9iamVjdChpbnB1dCk7XG4gICAgYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbChKU09OLnN0cmluZ2lmeShpbnB1dCksIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChKU09OLnN0cmluZ2lmeShyZXN1bHQpLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBhcnJheXMgd2l0aGluIG9iamVjdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB7IGI6IFszLCAyLCAxXSwgYTogMiB9O1xuICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiAyLCBiOiBbMywgMiwgMV0gfTtcbiAgICBjb25zdCByZXN1bHQgPSBjYW5vbmljYWxpemVPYmplY3QoaW5wdXQpO1xuICAgIGFzc2VydC5ub3REZWVwU3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkoaW5wdXQpLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkocmVzdWx0KSwgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgYXJyYXlzIG9mIG9iamVjdHMgYW5kIHNvcnQgdGhlaXIga2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnB1dCA9IFtcbiAgICAgIHsgYjogMiwgYTogMSB9LFxuICAgICAgeyBkOiA0LCBjOiAzIH0sXG4gICAgXTtcbiAgICBjb25zdCBleHBlY3RlZCA9IFtcbiAgICAgIHsgYTogMSwgYjogMiB9LFxuICAgICAgeyBjOiAzLCBkOiA0IH0sXG4gICAgXTtcbiAgICBjb25zdCByZXN1bHQgPSBjYW5vbmljYWxpemVPYmplY3QoaW5wdXQpO1xuICAgIGFzc2VydC5ub3REZWVwU3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkoaW5wdXQpLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkocmVzdWx0KSwgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gcHJpbWl0aXZlIHZhbHVlcyBhcyBpcycsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplT2JqZWN0KDQyKSksIEpTT04uc3RyaW5naWZ5KDQyKSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKEpTT04uc3RyaW5naWZ5KGNhbm9uaWNhbGl6ZU9iamVjdCgnc3RyaW5nJykpLCBKU09OLnN0cmluZ2lmeSgnc3RyaW5nJykpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGZvciBpbnZhbGlkIG9iamVjdCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGNhbm9uaWNhbGl6ZU9iamVjdChudWxsIGFzIG5ldmVyKSwgL0ludmFsaWQgb2JqZWN0IHR5cGUvKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGNhbm9uaWNhbGl6ZU9iamVjdCh1bmRlZmluZWQgYXMgbmV2ZXIpLCAvSW52YWxpZCBvYmplY3QgdHlwZS8pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../../test/unit/lightning/signature.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
const assert_1 = __importDefault(require("assert"));
|
|
40
|
+
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
41
|
+
const lightning_1 = require("../../../src/lightning");
|
|
42
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
43
|
+
function getKey(seed) {
|
|
44
|
+
return utxolib.bip32.fromSeed(crypto_1.default.createHash('sha256').update(seed).digest());
|
|
45
|
+
}
|
|
46
|
+
describe('verifySignature', function () {
|
|
47
|
+
const key = getKey('key');
|
|
48
|
+
const keyPub = key.neutered();
|
|
49
|
+
const wrongKey = getKey('wrongKey');
|
|
50
|
+
it('returns true on valid signature', function () {
|
|
51
|
+
const request = {
|
|
52
|
+
invoice: 'some data',
|
|
53
|
+
};
|
|
54
|
+
const signature = (0, lightning_1.createMessageSignature)(request, key.toBase58());
|
|
55
|
+
const result = (0, lightning_1.verifyMessageSignature)(request, signature, keyPub.toBase58());
|
|
56
|
+
(0, assert_1.default)(result);
|
|
57
|
+
});
|
|
58
|
+
it('returns true on different order', function () {
|
|
59
|
+
const request = {
|
|
60
|
+
invoice: 'some data',
|
|
61
|
+
fee: 123,
|
|
62
|
+
};
|
|
63
|
+
const otherRequest = {
|
|
64
|
+
fee: 123,
|
|
65
|
+
invoice: 'some data',
|
|
66
|
+
};
|
|
67
|
+
const signature = (0, lightning_1.createMessageSignature)(request, key.toBase58());
|
|
68
|
+
const result = (0, lightning_1.verifyMessageSignature)(otherRequest, signature, keyPub.toBase58());
|
|
69
|
+
(0, assert_1.default)(result);
|
|
70
|
+
});
|
|
71
|
+
it('returns false on wrong message', function () {
|
|
72
|
+
const request = {
|
|
73
|
+
invoice: 'some data',
|
|
74
|
+
};
|
|
75
|
+
const wrongRequest = {
|
|
76
|
+
invoice: 'some other data',
|
|
77
|
+
};
|
|
78
|
+
const signature = (0, lightning_1.createMessageSignature)(request, key.toBase58());
|
|
79
|
+
const result = (0, lightning_1.verifyMessageSignature)(wrongRequest, signature, keyPub.toBase58());
|
|
80
|
+
(0, assert_1.default)(!result);
|
|
81
|
+
});
|
|
82
|
+
it('returns false on wrong key', function () {
|
|
83
|
+
const request = {
|
|
84
|
+
invoice: 'some data',
|
|
85
|
+
};
|
|
86
|
+
const signature = (0, lightning_1.createMessageSignature)(request, wrongKey.toBase58());
|
|
87
|
+
const result = (0, lightning_1.verifyMessageSignature)(request, signature, keyPub.toBase58());
|
|
88
|
+
(0, assert_1.default)(!result);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpZ2h0bmluZy9zaWduYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIseURBQTJDO0FBRTNDLHNEQUF3RjtBQUN4RixvREFBNEI7QUFPNUIsU0FBUyxNQUFNLENBQUMsSUFBWTtJQUMxQixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFcEMsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0UsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLEdBQUcsRUFBRSxHQUFHO1NBQ1QsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFZO1lBQzVCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsT0FBTyxFQUFFLFdBQVc7U0FDckIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDbkMsTUFBTSxPQUFPLEdBQVk7WUFDdkIsT0FBTyxFQUFFLFdBQVc7U0FDckIsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFZO1lBQzVCLE9BQU8sRUFBRSxpQkFBaUI7U0FDM0IsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFBLGdCQUFNLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtRQUMvQixNQUFNLE9BQU8sR0FBWTtZQUN2QixPQUFPLEVBQUUsV0FBVztTQUNyQixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUEsZ0JBQU0sRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgY3JlYXRlTWVzc2FnZVNpZ25hdHVyZSwgdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZSB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWdodG5pbmcnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG50eXBlIFJlcXVlc3QgPSB7XG4gIGludm9pY2U6IHN0cmluZztcbiAgZmVlPzogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gZ2V0S2V5KHNlZWQ6IHN0cmluZyk6IHV0eG9saWIuQklQMzJJbnRlcmZhY2Uge1xuICByZXR1cm4gdXR4b2xpYi5iaXAzMi5mcm9tU2VlZChjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHNlZWQpLmRpZ2VzdCgpKTtcbn1cblxuZGVzY3JpYmUoJ3ZlcmlmeVNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qga2V5ID0gZ2V0S2V5KCdrZXknKTtcbiAgY29uc3Qga2V5UHViID0ga2V5Lm5ldXRlcmVkKCk7XG4gIGNvbnN0IHdyb25nS2V5ID0gZ2V0S2V5KCd3cm9uZ0tleScpO1xuXG4gIGl0KCdyZXR1cm5zIHRydWUgb24gdmFsaWQgc2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwga2V5LnRvQmFzZTU4KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwgc2lnbmF0dXJlLCBrZXlQdWIudG9CYXNlNTgoKSk7XG4gICAgYXNzZXJ0KHJlc3VsdCk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIHRydWUgb24gZGlmZmVyZW50IG9yZGVyJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICAgIGZlZTogMTIzLFxuICAgIH07XG4gICAgY29uc3Qgb3RoZXJSZXF1ZXN0OiBSZXF1ZXN0ID0ge1xuICAgICAgZmVlOiAxMjMsXG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwga2V5LnRvQmFzZTU4KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeU1lc3NhZ2VTaWduYXR1cmUob3RoZXJSZXF1ZXN0LCBzaWduYXR1cmUsIGtleVB1Yi50b0Jhc2U1OCgpKTtcbiAgICBhc3NlcnQocmVzdWx0KTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2Ugb24gd3JvbmcgbWVzc2FnZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXF1ZXN0ID0ge1xuICAgICAgaW52b2ljZTogJ3NvbWUgZGF0YScsXG4gICAgfTtcbiAgICBjb25zdCB3cm9uZ1JlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBvdGhlciBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwga2V5LnRvQmFzZTU4KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeU1lc3NhZ2VTaWduYXR1cmUod3JvbmdSZXF1ZXN0LCBzaWduYXR1cmUsIGtleVB1Yi50b0Jhc2U1OCgpKTtcbiAgICBhc3NlcnQoIXJlc3VsdCk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIGZhbHNlIG9uIHdyb25nIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXF1ZXN0ID0ge1xuICAgICAgaW52b2ljZTogJ3NvbWUgZGF0YScsXG4gICAgfTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBjcmVhdGVNZXNzYWdlU2lnbmF0dXJlKHJlcXVlc3QsIHdyb25nS2V5LnRvQmFzZTU4KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwgc2lnbmF0dXJlLCBrZXlQdWIudG9CYXNlNTgoKSk7XG4gICAgYXNzZXJ0KCFyZXN1bHQpO1xuICB9KTtcbn0pO1xuIl19
|