@bitgo/sdk-core 28.24.0 → 29.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +10 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +15 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +2 -0
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/environments.js +4 -4
- package/dist/src/bitgo/index.d.ts +0 -1
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +1 -2
- package/dist/src/bitgo/wallet/iWallet.d.ts +0 -2
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +0 -5
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +1 -12
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -8
- package/dist/src/bitgo/lightning/codecs.d.ts +0 -320
- package/dist/src/bitgo/lightning/codecs.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/codecs.js +0 -211
- package/dist/src/bitgo/lightning/index.d.ts +0 -6
- package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/index.js +0 -22
- package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -59
- package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lightningUtils.js +0 -224
- package/dist/src/bitgo/lightning/lightningWallet.d.ts +0 -18
- package/dist/src/bitgo/lightning/lightningWallet.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lightningWallet.js +0 -65
- package/dist/src/bitgo/lightning/signableJson.d.ts +0 -17
- package/dist/src/bitgo/lightning/signableJson.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/signableJson.js +0 -29
- package/dist/src/bitgo/lightning/signature.d.ts +0 -22
- package/dist/src/bitgo/lightning/signature.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/signature.js +0 -69
- package/dist/src/bitgo/wallet/lightning.d.ts +0 -20
- package/dist/src/bitgo/wallet/lightning.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/lightning.js +0 -16
- package/dist/test/unit/bitgo/lightning/codecs.d.ts +0 -2
- package/dist/test/unit/bitgo/lightning/codecs.d.ts.map +0 -1
- package/dist/test/unit/bitgo/lightning/codecs.js +0 -147
- package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.d.ts +0 -4
- package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.d.ts.map +0 -1
- package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.js +0 -1562
- package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts +0 -2
- package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts.map +0 -1
- package/dist/test/unit/bitgo/lightning/lightningUtils.js +0 -104
- package/dist/test/unit/bitgo/lightning/signableJson.d.ts +0 -2
- package/dist/test/unit/bitgo/lightning/signableJson.d.ts.map +0 -1
- package/dist/test/unit/bitgo/lightning/signableJson.js +0 -52
- package/dist/test/unit/bitgo/lightning/signature.d.ts +0 -2
- package/dist/test/unit/bitgo/lightning/signature.d.ts.map +0 -1
- package/dist/test/unit/bitgo/lightning/signature.js +0 -91
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lightningUtils.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/lightning/lightningUtils.ts"],"names":[],"mappings":""}
|
|
@@ -1,104 +0,0 @@
|
|
|
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 lightningUtils_1 = require("./../../../../src/bitgo/lightning/lightningUtils");
|
|
44
|
-
const src_1 = require("../../../../src");
|
|
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, lightningUtils_1.isValidLightningNetworkName)(networkName));
|
|
53
|
-
const network = (0, lightningUtils_1.getLightningNetwork)(networkName);
|
|
54
|
-
assert_1.default.strictEqual(network, utxolib.networks[networkName]);
|
|
55
|
-
});
|
|
56
|
-
it(`isValidLightningNetwork`, function () {
|
|
57
|
-
(0, assert_1.default)((0, lightningUtils_1.isValidLightningNetworkName)(networkName));
|
|
58
|
-
(0, assert_1.default)((0, lightningUtils_1.isValidLightningNetwork)(utxolib.networks[networkName]));
|
|
59
|
-
});
|
|
60
|
-
it(`getStaticsLightningNetwork`, function () {
|
|
61
|
-
assert_1.default.strictEqual((0, lightningUtils_1.getStaticsLightningNetwork)(name).family, 'lnbtc');
|
|
62
|
-
});
|
|
63
|
-
it(`getUtxolibNetwork`, function () {
|
|
64
|
-
assert_1.default.strictEqual((0, lightningUtils_1.getUtxolibNetwork)(name), networkName === 'bitcoin' ? utxolib.networks.bitcoin : utxolib.networks.testnet);
|
|
65
|
-
});
|
|
66
|
-
it(`isLightningCoinName`, function () {
|
|
67
|
-
assert_1.default.strictEqual((0, lightningUtils_1.isLightningCoinName)(name), true);
|
|
68
|
-
assert_1.default.strictEqual((0, lightningUtils_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, lightningUtils_1.isValidLightningNetworkName)('litecoin'), false);
|
|
74
|
-
});
|
|
75
|
-
it(`isValidLightningNetwork should return false for non lightning network`, function () {
|
|
76
|
-
assert_1.default.strictEqual((0, lightningUtils_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, lightningUtils_1.getUtxolibNetwork)('ltc');
|
|
81
|
-
}, /ltc is not a lightning coin/);
|
|
82
|
-
});
|
|
83
|
-
it(`createWatchOnly`, function () {
|
|
84
|
-
const watchOnly = (0, lightningUtils_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, lightningUtils_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, lightningUtils_1.getStaticsLightningNetwork)('tlnbtc').lightningServicePubKey;
|
|
99
|
-
const expectedSecret = (0, src_1.getSharedSecret)(utxolib.bip32.fromBase58(userAuthXprv), Buffer.from(lightningServicePubKey, 'hex'));
|
|
100
|
-
const secret = (0, lightningUtils_1.deriveLightningServiceSharedSecret)('tlnbtc', userAuthXprv);
|
|
101
|
-
assert_1.default.deepStrictEqual(secret, expectedSecret);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHVDQUEwQztBQUMxQyx5REFBMkM7QUFFM0MscUVBQW1FO0FBQ25FLHFGQVUwRDtBQUUxRCx5Q0FBa0Q7QUFFbEQsUUFBUSxDQUFDLGlCQUFpQixFQUFFO0lBQzFCO1FBQ0UsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7UUFDekMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7S0FDM0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1FBQ2xDLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxnQkFBZ0IsV0FBVyxFQUFFLEVBQUU7WUFDNUQsRUFBRSxDQUFDLHFEQUFxRCxFQUFFO2dCQUN4RCxJQUFBLGdCQUFNLEVBQUMsSUFBQSw0Q0FBMkIsRUFBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFBLG9DQUFtQixFQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNqRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHlCQUF5QixFQUFFO2dCQUM1QixJQUFBLGdCQUFNLEVBQUMsSUFBQSw0Q0FBMkIsRUFBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxJQUFBLGdCQUFNLEVBQUMsSUFBQSx3Q0FBdUIsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFD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QUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRTtRQUN2QyxNQUFNLFlBQVksR0FDaEIsaUhBQWlILENBQUM7UUFDcEgsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLDJDQUEwQixFQUFDLFFBQVEsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO1FBRTNGLE1BQU0sY0FBYyxHQUFHLElBQUEscUJBQWUsRUFDcEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQzNDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxJQUFBLG1EQUFrQyxFQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUxRSxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGltcG9ydE1hY2Fyb29uIH0gZnJvbSAnbWFjYXJvb24nO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQgeyBhY2NvdW50cywgc2lnbmVyUm9vdEtleSB9IGZyb20gJy4vY3JlYXRlV2F0Y2hPbmx5Rml4dHVyZSc7XG5pbXBvcnQge1xuICBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUsXG4gIGdldExpZ2h0bmluZ05ldHdvcmssXG4gIGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrLFxuICBnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29yayxcbiAgZ2V0VXR4b2xpYk5ldHdvcmssXG4gIGlzTGlnaHRuaW5nQ29pbk5hbWUsXG4gIGNyZWF0ZVdhdGNoT25seSxcbiAgYWRkSVBDYXZlYXRUb01hY2Fyb29uLFxuICBkZXJpdmVMaWdodG5pbmdTZXJ2aWNlU2hhcmVkU2VjcmV0LFxufSBmcm9tICcuLy4uLy4uLy4uLy4uL3NyYy9iaXRnby9saWdodG5pbmcvbGlnaHRuaW5nVXRpbHMnO1xuXG5pbXBvcnQgeyBnZXRTaGFyZWRTZWNyZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnbGlnaHRuaW5nIHV0aWxzJywgZnVuY3Rpb24gKCkge1xuICBbXG4gICAgeyBuYW1lOiAnbG5idGMnLCBuZXR3b3JrTmFtZTogJ2JpdGNvaW4nIH0sXG4gICAgeyBuYW1lOiAndGxuYnRjJywgbmV0d29ya05hbWU6ICd0ZXN0bmV0JyB9LFxuICBdLmZvckVhY2goKHsgbmFtZSwgbmV0d29ya05hbWUgfSkgPT4ge1xuICAgIGRlc2NyaWJlKGBzdWNjZXNzIC0gY29pbiAke25hbWV9IGFuZCBuZXR3b3JrICR7bmV0d29ya05hbWV9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSBhbmQgZ2V0TGlnaHRuaW5nTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZShuZXR3b3JrTmFtZSkpO1xuICAgICAgICBjb25zdCBuZXR3b3JrID0gZ2V0TGlnaHRuaW5nTmV0d29yayhuZXR3b3JrTmFtZSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChuZXR3b3JrLCB1dHhvbGliLm5ldHdvcmtzW25ldHdvcmtOYW1lXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKG5ldHdvcmtOYW1lKSk7XG4gICAgICAgIGFzc2VydChpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayh1dHhvbGliLm5ldHdvcmtzW25ldHdvcmtOYW1lXSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrKG5hbWUpLmZhbWlseSwgJ2xuYnRjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYGdldFV0eG9saWJOZXR3b3JrYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICAgICAgZ2V0VXR4b2xpYk5ldHdvcmsobmFtZSksXG4gICAgICAgICAgbmV0d29ya05hbWUgPT09ICdiaXRjb2luJyA/IHV0eG9saWIubmV0d29ya3MuYml0Y29pbiA6IHV0eG9saWIubmV0d29ya3MudGVzdG5ldFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBpc0xpZ2h0bmluZ0NvaW5OYW1lYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNMaWdodG5pbmdDb2luTmFtZShuYW1lKSwgdHJ1ZSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0xpZ2h0bmluZ0NvaW5OYW1lKCdsdGMnKSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUgc2hvdWxkIHJldHVybiBmYWxzZSBmb3Igbm9uIGxpZ2h0bmluZyBuZXR3b3JrIG5hbWVgLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSgnbGl0ZWNvaW4nKSwgZmFsc2UpO1xuICB9KTtcblxuICBpdChgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsgc2hvdWxkIHJldHVybiBmYWxzZSBmb3Igbm9uIGxpZ2h0bmluZyBuZXR3b3JrYCwgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayh1dHhvbGliLm5ldHdvcmtzWydsaXRlY29pbiddKSwgZmFsc2UpO1xuICB9KTtcblxuICBpdChgZ2V0VXR4b2xpYk5ldHdvcmsgc2hvdWxkIHJldHVybiBmYWlsIGZvciBpbnZhbGlkIGxpZ2h0bmluZyBjb2luYCwgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4ge1xuICAgICAgZ2V0VXR4b2xpYk5ldHdvcmsoJ2x0YycpO1xuICAgIH0sIC9sdGMgaXMgbm90IGEgbGlnaHRuaW5nIGNvaW4vKTtcbiAgfSk7XG5cbiAgaXQoYGNyZWF0ZVdhdGNoT25seWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3YXRjaE9ubHkgPSBjcmVhdGVXYXRjaE9ubHkoc2lnbmVyUm9vdEtleSwgdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0KTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHdhdGNoT25seS5hY2NvdW50cywgYWNjb3VudHMpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIHdhdGNoT25seS5tYXN0ZXJfa2V5X2ZpbmdlcnByaW50LFxuICAgICAgdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KHNpZ25lclJvb3RLZXksIHV0eG9saWIubmV0d29ya3MudGVzdG5ldCkuZmluZ2VycHJpbnQudG9TdHJpbmcoJ2hleCcpXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoYGFkZElQQ2F2ZWF0VG9NYWNhcm9vbmAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBtYWNhcm9vbiA9XG4gICAgICAnQWdFRGJHNWtBdmdCQXdvUU1nVTdyRGk4MDJZcWcvdEhsbDI0bmhJQk1Cb1dDZ2RoWkdSeVpYTnpFZ1J5WldGa0VnVjNjbWwwWlJvVENnUnBibVp2RWdSeVpXRmtFZ1YzY21sMFpSb1hDZ2hwYm5admFXTmxjeElFY21WaFpCSUZkM0pwZEdVYUlRb0liV0ZqWVhKdmIyNFNDR2RsYm1WeVlYUmxFZ1J5WldGa0VnVjNjbWwwWlJvV0NnZHRaWE56WVdkbEVnUnlaV0ZrRWdWM2NtbDBaUm9YQ2dodlptWmphR0ZwYmhJRWNtVmhaQklGZDNKcGRHVWFGZ29IYjI1amFHRnBiaElFY21WaFpCSUZkM0pwZEdVYUZBb0ZjR1ZsY25NU0JISmxZV1FTQlhkeWFYUmxHaGdLQm5OcFoyNWxjaElJWjJWdVpYSmhkR1VTQkhKbFlXUUFBQVlnWktpVXZFenhHZDJRS0dVUys5UjVaV2V2RzA5UzA2Zk1KVW50K2sxWFhYUT0nO1xuICAgIGNvbnN0IG1hY2Fyb29uT2JqID0gaW1wb3J0TWFjYXJvb24obWFjYXJvb24pLmV4cG9ydEpTT04oKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwobWFjYXJvb25PYmouYywgdW5kZWZpbmVkKTtcbiAgICBjb25zdCBtYWNhcm9vbldpdGhDYXZlYXQgPSBhZGRJUENhdmVhdFRvTWFjYXJvb24obWFjYXJvb24sICcxMjcuMC4wLjEnKTtcbiAgICBjb25zdCBtYWNhcm9vbk9ialdpdGhDYXZlYXQgPSBpbXBvcnRNYWNhcm9vbihtYWNhcm9vbldpdGhDYXZlYXQpLmV4cG9ydEpTT04oKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwobWFjYXJvb25PYmpXaXRoQ2F2ZWF0LmNbMF0uaSwgJ2lwYWRkciAxMjcuMC4wLjEnKTtcbiAgfSk7XG5cbiAgaXQoYGRlcml2ZUxpZ2h0bmluZ1NlcnZpY2VTaGFyZWRTZWNyZXRgLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdXNlckF1dGhYcHJ2ID1cbiAgICAgICd4cHJ2OXMyMVpyUUgxNDNLNE5Qa1Y4cmlpVG5GZjcyTVJ5UURWSE1tbXBla0dGMXc1UWtTMk1mVGVpOUtYWXZyWlZNb3A0elE0YXJuelNGN1RScDNDeTczQVdhRGRBRGlZTUNpNXFwWVcxYlVhNW0nO1xuICAgIGNvbnN0IGxpZ2h0bmluZ1NlcnZpY2VQdWJLZXkgPSBnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29yaygndGxuYnRjJykubGlnaHRuaW5nU2VydmljZVB1YktleTtcblxuICAgIGNvbnN0IGV4cGVjdGVkU2VjcmV0ID0gZ2V0U2hhcmVkU2VjcmV0KFxuICAgICAgdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KHVzZXJBdXRoWHBydiksXG4gICAgICBCdWZmZXIuZnJvbShsaWdodG5pbmdTZXJ2aWNlUHViS2V5LCAnaGV4JylcbiAgICApO1xuXG4gICAgY29uc3Qgc2VjcmV0ID0gZGVyaXZlTGlnaHRuaW5nU2VydmljZVNoYXJlZFNlY3JldCgndGxuYnRjJywgdXNlckF1dGhYcHJ2KTtcblxuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2VjcmV0LCBleHBlY3RlZFNlY3JldCk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signableJson.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/lightning/signableJson.ts"],"names":[],"mappings":""}
|
|
@@ -1,52 +0,0 @@
|
|
|
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/bitgo/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFibGVKc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL2xpZ2h0bmluZy9zaWduYWJsZUpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrREFBcUU7QUFDckUsb0RBQTRCO0FBRTVCLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRTtJQUM3QixFQUFFLENBQUMseURBQXlELEVBQUU7UUFDNUQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUEsOEJBQWtCLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsZ0JBQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMzRSxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtRQUNyRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUs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QyxHQUFHLEVBQUUsQ0FBQyxJQUFBLDhCQUFrQixFQUFDLFNBQWtCLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYW5vbmljYWxpemVPYmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuZGVzY3JpYmUoJ2Nhbm9uaWNhbGl6ZU9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNhbm9uaWNhbGl6ZWQgb2JqZWN0IHdpdGggc29ydGVkIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB7IGI6IDEsIGE6IDIgfTtcbiAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogMiwgYjogMSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGNhbm9uaWNhbGl6ZU9iamVjdChpbnB1dCk7XG4gICAgYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbChKU09OLnN0cmluZ2lmeShpbnB1dCksIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChKU09OLnN0cmluZ2lmeShyZXN1bHQpLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBuZXN0ZWQgb2JqZWN0cyBhbmQgc29ydCB0aGVpciBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGlucHV0ID0geyBiOiB7IGQ6IDQsIGM6IDMgfSwgYTogMiB9O1xuICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiAyLCBiOiB7IGM6IDMsIGQ6IDQgfSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGNhbm9uaWNhbGl6ZU9iamVjdChpbnB1dCk7XG4gICAgYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbChKU09OLnN0cmluZ2lmeShpbnB1dCksIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChKU09OLnN0cmluZ2lmeShyZXN1bHQpLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBhcnJheXMgd2l0aGluIG9iamVjdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB7IGI6IFszLCAyLCAxXSwgYTogMiB9O1xuICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiAyLCBiOiBbMywgMiwgMV0gfTtcbiAgICBjb25zdCByZXN1bHQgPSBjYW5vbmljYWxpemVPYmplY3QoaW5wdXQpO1xuICAgIGFzc2VydC5ub3REZWVwU3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkoaW5wdXQpLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkocmVzdWx0KSwgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgYXJyYXlzIG9mIG9iamVjdHMgYW5kIHNvcnQgdGhlaXIga2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnB1dCA9IFtcbiAgICAgIHsgYjogMiwgYTogMSB9LFxuICAgICAgeyBkOiA0LCBjOiAzIH0sXG4gICAgXTtcbiAgICBjb25zdCBleHBlY3RlZCA9IFtcbiAgICAgIHsgYTogMSwgYjogMiB9LFxuICAgICAgeyBjOiAzLCBkOiA0IH0sXG4gICAgXTtcbiAgICBjb25zdCByZXN1bHQgPSBjYW5vbmljYWxpemVPYmplY3QoaW5wdXQpO1xuICAgIGFzc2VydC5ub3REZWVwU3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkoaW5wdXQpLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkocmVzdWx0KSwgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gcHJpbWl0aXZlIHZhbHVlcyBhcyBpcycsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplT2JqZWN0KDQyKSksIEpTT04uc3RyaW5naWZ5KDQyKSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKEpTT04uc3RyaW5naWZ5KGNhbm9uaWNhbGl6ZU9iamVjdCgnc3RyaW5nJykpLCBKU09OLnN0cmluZ2lmeSgnc3RyaW5nJykpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGZvciBpbnZhbGlkIG9iamVjdCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGNhbm9uaWNhbGl6ZU9iamVjdChudWxsIGFzIG5ldmVyKSwgL0ludmFsaWQgb2JqZWN0IHR5cGUvKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGNhbm9uaWNhbGl6ZU9iamVjdCh1bmRlZmluZWQgYXMgbmV2ZXIpLCAvSW52YWxpZCBvYmplY3QgdHlwZS8pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/lightning/signature.ts"],"names":[],"mappings":""}
|
|
@@ -1,91 +0,0 @@
|
|
|
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/bitgo/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL2xpZ2h0bmluZy9zaWduYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIseURBQTJDO0FBRTNDLCtEQUFpRztBQUNqRyxvREFBNEI7QUFPNUIsU0FBUyxNQUFNLENBQUMsSUFBWTtJQUMxQixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFcEMsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0UsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLEdBQUcsRUFBRSxHQUFHO1NBQ1QsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFZO1lBQzVCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsT0FBTyxFQUFFLFdBQVc7U0FDckIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDbkMsTUFBTSxPQUFPLEdBQVk7WUFDdkIsT0FBTyxFQUFFLFdBQVc7U0FDckIsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFZO1lBQzVCLE9BQU8sRUFBRSxpQkFBaUI7U0FDM0IsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFBLGdCQUFNLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtRQUMvQixNQUFNLE9BQU8sR0FBWTtZQUN2QixPQUFPLEVBQUUsV0FBVztTQUNyQixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUEsZ0JBQU0sRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgY3JlYXRlTWVzc2FnZVNpZ25hdHVyZSwgdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby9saWdodG5pbmcnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG50eXBlIFJlcXVlc3QgPSB7XG4gIGludm9pY2U6IHN0cmluZztcbiAgZmVlPzogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gZ2V0S2V5KHNlZWQ6IHN0cmluZyk6IHV0eG9saWIuQklQMzJJbnRlcmZhY2Uge1xuICByZXR1cm4gdXR4b2xpYi5iaXAzMi5mcm9tU2VlZChjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHNlZWQpLmRpZ2VzdCgpKTtcbn1cblxuZGVzY3JpYmUoJ3ZlcmlmeVNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qga2V5ID0gZ2V0S2V5KCdrZXknKTtcbiAgY29uc3Qga2V5UHViID0ga2V5Lm5ldXRlcmVkKCk7XG4gIGNvbnN0IHdyb25nS2V5ID0gZ2V0S2V5KCd3cm9uZ0tleScpO1xuXG4gIGl0KCdyZXR1cm5zIHRydWUgb24gdmFsaWQgc2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwga2V5LnRvQmFzZTU4KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwgc2lnbmF0dXJlLCBrZXlQdWIudG9CYXNlNTgoKSk7XG4gICAgYXNzZXJ0KHJlc3VsdCk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIHRydWUgb24gZGlmZmVyZW50IG9yZGVyJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICAgIGZlZTogMTIzLFxuICAgIH07XG4gICAgY29uc3Qgb3RoZXJSZXF1ZXN0OiBSZXF1ZXN0ID0ge1xuICAgICAgZmVlOiAxMjMsXG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwga2V5LnRvQmFzZTU4KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeU1lc3NhZ2VTaWduYXR1cmUob3RoZXJSZXF1ZXN0LCBzaWduYXR1cmUsIGtleVB1Yi50b0Jhc2U1OCgpKTtcbiAgICBhc3NlcnQocmVzdWx0KTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2Ugb24gd3JvbmcgbWVzc2FnZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXF1ZXN0ID0ge1xuICAgICAgaW52b2ljZTogJ3NvbWUgZGF0YScsXG4gICAgfTtcbiAgICBjb25zdCB3cm9uZ1JlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBvdGhlciBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwga2V5LnRvQmFzZTU4KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeU1lc3NhZ2VTaWduYXR1cmUod3JvbmdSZXF1ZXN0LCBzaWduYXR1cmUsIGtleVB1Yi50b0Jhc2U1OCgpKTtcbiAgICBhc3NlcnQoIXJlc3VsdCk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIGZhbHNlIG9uIHdyb25nIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXF1ZXN0ID0ge1xuICAgICAgaW52b2ljZTogJ3NvbWUgZGF0YScsXG4gICAgfTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBjcmVhdGVNZXNzYWdlU2lnbmF0dXJlKHJlcXVlc3QsIHdyb25nS2V5LnRvQmFzZTU4KCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZlcmlmeU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwgc2lnbmF0dXJlLCBrZXlQdWIudG9CYXNlNTgoKSk7XG4gICAgYXNzZXJ0KCFyZXN1bHQpO1xuICB9KTtcbn0pO1xuIl19
|