@bitgo-beta/abstract-lightning 1.0.1-beta.96 → 1.0.1-beta.961

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.
Files changed (89) hide show
  1. package/dist/src/abstractLightningCoin.d.ts +3 -2
  2. package/dist/src/abstractLightningCoin.d.ts.map +1 -1
  3. package/dist/src/abstractLightningCoin.js +7 -2
  4. package/dist/src/codecs/api/backup.d.ts +15 -0
  5. package/dist/src/codecs/api/backup.d.ts.map +1 -0
  6. package/dist/src/codecs/api/backup.js +47 -0
  7. package/dist/src/codecs/api/balance.d.ts +132 -0
  8. package/dist/src/codecs/api/balance.d.ts.map +1 -0
  9. package/dist/src/codecs/api/balance.js +101 -0
  10. package/dist/src/codecs/api/index.d.ts +8 -0
  11. package/dist/src/codecs/api/index.d.ts.map +1 -0
  12. package/dist/src/codecs/api/index.js +24 -0
  13. package/dist/src/codecs/api/invoice.d.ts +66 -0
  14. package/dist/src/codecs/api/invoice.d.ts.map +1 -0
  15. package/dist/src/codecs/api/invoice.js +102 -0
  16. package/dist/src/codecs/api/payment.d.ts +107 -0
  17. package/dist/src/codecs/api/payment.d.ts.map +1 -0
  18. package/dist/src/codecs/api/payment.js +153 -0
  19. package/dist/src/codecs/api/transaction.d.ts +138 -0
  20. package/dist/src/codecs/api/transaction.d.ts.map +1 -0
  21. package/dist/src/codecs/api/transaction.js +122 -0
  22. package/dist/src/codecs/api/wallet.d.ts +99 -0
  23. package/dist/src/codecs/api/wallet.d.ts.map +1 -0
  24. package/dist/src/codecs/api/wallet.js +103 -0
  25. package/dist/src/codecs/api/withdraw.d.ts +92 -0
  26. package/dist/src/codecs/api/withdraw.d.ts.map +1 -0
  27. package/dist/src/codecs/api/withdraw.js +92 -0
  28. package/dist/src/codecs/index.d.ts +3 -0
  29. package/dist/src/codecs/index.d.ts.map +1 -0
  30. package/dist/src/codecs/index.js +19 -0
  31. package/dist/src/codecs/shared.d.ts +7 -0
  32. package/dist/src/codecs/shared.d.ts.map +1 -0
  33. package/dist/src/codecs/shared.js +42 -0
  34. package/dist/src/index.d.ts +3 -0
  35. package/dist/src/index.d.ts.map +1 -1
  36. package/dist/src/index.js +4 -1
  37. package/dist/src/lightning/index.d.ts +5 -0
  38. package/dist/src/lightning/index.d.ts.map +1 -0
  39. package/dist/src/lightning/index.js +21 -0
  40. package/dist/src/lightning/lightningUtils.d.ts +90 -0
  41. package/dist/src/lightning/lightningUtils.d.ts.map +1 -0
  42. package/dist/src/lightning/lightningUtils.js +290 -0
  43. package/dist/src/lightning/parseWithdrawPsbt.d.ts +8 -0
  44. package/dist/src/lightning/parseWithdrawPsbt.d.ts.map +1 -0
  45. package/dist/src/lightning/parseWithdrawPsbt.js +155 -0
  46. package/dist/src/lightning/signableJson.d.ts +17 -0
  47. package/dist/src/lightning/signableJson.d.ts.map +1 -0
  48. package/dist/src/lightning/signableJson.js +29 -0
  49. package/dist/src/lightning/signature.d.ts +22 -0
  50. package/dist/src/lightning/signature.d.ts.map +1 -0
  51. package/dist/src/lightning/signature.js +69 -0
  52. package/dist/src/wallet/custodialLightning.d.ts +7 -0
  53. package/dist/src/wallet/custodialLightning.d.ts.map +1 -0
  54. package/dist/src/wallet/custodialLightning.js +14 -0
  55. package/dist/src/wallet/index.d.ts +5 -0
  56. package/dist/src/wallet/index.d.ts.map +1 -0
  57. package/dist/src/wallet/index.js +21 -0
  58. package/dist/src/wallet/lightning.d.ts +141 -0
  59. package/dist/src/wallet/lightning.d.ts.map +1 -0
  60. package/dist/src/wallet/lightning.js +288 -0
  61. package/dist/src/wallet/selfCustodialLightning.d.ts +32 -0
  62. package/dist/src/wallet/selfCustodialLightning.d.ts.map +1 -0
  63. package/dist/src/wallet/selfCustodialLightning.js +131 -0
  64. package/dist/src/wallet/wallet.d.ts +7 -0
  65. package/dist/src/wallet/wallet.d.ts.map +1 -0
  66. package/dist/src/wallet/wallet.js +22 -0
  67. package/dist/test/unit/lightning/codecs.d.ts +2 -0
  68. package/dist/test/unit/lightning/codecs.d.ts.map +1 -0
  69. package/dist/test/unit/lightning/codecs.js +151 -0
  70. package/dist/test/unit/lightning/createWatchOnlyFixture.d.ts +4 -0
  71. package/dist/test/unit/lightning/createWatchOnlyFixture.d.ts.map +1 -0
  72. package/dist/test/unit/lightning/createWatchOnlyFixture.js +1561 -0
  73. package/dist/test/unit/lightning/lightningUtils.d.ts +2 -0
  74. package/dist/test/unit/lightning/lightningUtils.d.ts.map +1 -0
  75. package/dist/test/unit/lightning/lightningUtils.js +123 -0
  76. package/dist/test/unit/lightning/parseWithdrawPsbt.d.ts +2 -0
  77. package/dist/test/unit/lightning/parseWithdrawPsbt.d.ts.map +1 -0
  78. package/dist/test/unit/lightning/parseWithdrawPsbt.js +125 -0
  79. package/dist/test/unit/lightning/signableJson.d.ts +2 -0
  80. package/dist/test/unit/lightning/signableJson.d.ts.map +1 -0
  81. package/dist/test/unit/lightning/signableJson.js +52 -0
  82. package/dist/test/unit/lightning/signature.d.ts +2 -0
  83. package/dist/test/unit/lightning/signature.d.ts.map +1 -0
  84. package/dist/test/unit/lightning/signature.js +91 -0
  85. package/dist/tsconfig.tsbuildinfo +1 -0
  86. package/package.json +19 -6
  87. package/.eslintignore +0 -5
  88. package/.mocharc.yml +0 -8
  89. package/CHANGELOG.md +0 -76
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lightningUtils.d.ts.map
@@ -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-beta/utxo-lib"));
42
+ const createWatchOnlyFixture_1 = require("./createWatchOnlyFixture");
43
+ const lightning_1 = require("../../../src/lightning");
44
+ const sdkcore = __importStar(require("@bitgo-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHVDQUEwQztBQUMxQyw4REFBZ0Q7QUFFaEQscUVBQW1FO0FBQ25FLHNEQWFnQztBQUVoQyw4REFBZ0Q7QUFFaEQsUUFBUSxDQUFDLGlCQUFpQixFQUFFO0lBQzFCO1FBQ0UsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7UUFDekMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUU7S0FDM0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1FBQ2xDLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxnQkFBZ0IsV0FBVyxFQUFFLEVBQUU7WUFDNUQsRUFBRSxDQUFDLHFEQUFxRCxFQUFFO2dCQUN4RCxJQUFBLGdCQUFNLEVBQUMsSUFBQSx1Q0FBMkIsRUFBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFBLCtCQUFtQixFQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNqRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHlCQUF5QixFQUFFO2dCQUM1QixJQUFBLGdCQUFNLEVBQUMsSUFBQSx1Q0FBMkIsRUFBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxJQUFBLGdCQUFNLEVBQUMsSUFBQSxtQ0FBdUIsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FB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Q1osaUhBQWlILENBQUM7UUFDcEgsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQ0FBMEIsRUFBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDakUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xILE1BQU0sTUFBTSxHQUFHLElBQUEsaUNBQXFCLEVBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELGdCQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRTtRQUN4QyxNQUFNLEtBQUssR0FBRyx3RUFBd0UsQ0FBQztRQUN2RixNQUFNLEtBQUssR0FBRyx3RUFBd0UsQ0FBQztRQUN2RixnQkFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUEsK0NBQW1DLEVBQUMsS0FBSyxDQUFDLEVBQUUsSUFBQSwrQ0FBbUMsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBpbXBvcnRNYWNhcm9vbiB9IGZyb20gJ21hY2Fyb29uJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBhY2NvdW50cywgc2lnbmVyUm9vdEtleSB9IGZyb20gJy4vY3JlYXRlV2F0Y2hPbmx5Rml4dHVyZSc7XG5pbXBvcnQge1xuICBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUsXG4gIGdldExpZ2h0bmluZ05ldHdvcmssXG4gIGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrLFxuICBnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29yayxcbiAgZ2V0VXR4b2xpYk5ldHdvcmssXG4gIGlzTGlnaHRuaW5nQ29pbk5hbWUsXG4gIGNyZWF0ZVdhdGNoT25seSxcbiAgYWRkSVBDYXZlYXRUb01hY2Fyb29uLFxuICBkZXJpdmVMaWdodG5pbmdTZXJ2aWNlU2hhcmVkU2VjcmV0LFxuICBkZXJpdmVNaWRkbGV3YXJlU2hhcmVkU2VjcmV0LFxuICBkZXJpdmVUYXRTaGFyZWRTZWNyZXQsXG4gIGNvbXB1dGVCaXAzMkRlcml2YXRpb25JbmRleEZyb21TZWVkLFxufSBmcm9tICcuLi8uLi8uLi9zcmMvbGlnaHRuaW5nJztcblxuaW1wb3J0ICogYXMgc2RrY29yZSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmRlc2NyaWJlKCdsaWdodG5pbmcgdXRpbHMnLCBmdW5jdGlvbiAoKSB7XG4gIFtcbiAgICB7IG5hbWU6ICdsbmJ0YycsIG5ldHdvcmtOYW1lOiAnYml0Y29pbicgfSxcbiAgICB7IG5hbWU6ICd0bG5idGMnLCBuZXR3b3JrTmFtZTogJ3Rlc3RuZXQnIH0sXG4gIF0uZm9yRWFjaCgoeyBuYW1lLCBuZXR3b3JrTmFtZSB9KSA9PiB7XG4gICAgZGVzY3JpYmUoYHN1Y2Nlc3MgLSBjb2luICR7bmFtZX0gYW5kIG5ldHdvcmsgJHtuZXR3b3JrTmFtZX1gLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdChgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lIGFuZCBnZXRMaWdodG5pbmdOZXR3b3JrYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKG5ldHdvcmtOYW1lKSk7XG4gICAgICAgIGNvbnN0IG5ldHdvcmsgPSBnZXRMaWdodG5pbmdOZXR3b3JrKG5ldHdvcmtOYW1lKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG5ldHdvcmssIHV0eG9saWIubmV0d29ya3NbbmV0d29ya05hbWVdKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUobmV0d29ya05hbWUpKTtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrKHV0eG9saWIubmV0d29ya3NbbmV0d29ya05hbWVdKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsobmFtZSkuZmFtaWx5LCAnbG5idGMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgZ2V0VXR4b2xpYk5ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgICBnZXRVdHhvbGliTmV0d29yayhuYW1lKSxcbiAgICAgICAgICBuZXR3b3JrTmFtZSA9PT0gJ2JpdGNvaW4nID8gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luIDogdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYGlzTGlnaHRuaW5nQ29pbk5hbWVgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0xpZ2h0bmluZ0NvaW5OYW1lKG5hbWUpLCB0cnVlKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzTGlnaHRuaW5nQ29pbk5hbWUoJ2x0YycpLCBmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBub24gbGlnaHRuaW5nIG5ldHdvcmsgbmFtZWAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKCdsaXRlY29pbicpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBub24gbGlnaHRuaW5nIG5ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrKHV0eG9saWIubmV0d29ya3NbJ2xpdGVjb2luJ10pLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KGBnZXRVdHhvbGliTmV0d29yayBzaG91bGQgcmV0dXJuIGZhaWwgZm9yIGludmFsaWQgbGlnaHRuaW5nIGNvaW5gLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICBnZXRVdHhvbGliTmV0d29yaygnbHRjJyk7XG4gICAgfSwgL2x0YyBpcyBub3QgYSBsaWdodG5pbmcgY29pbi8pO1xuICB9KTtcblxuICBpdChgY3JlYXRlV2F0Y2hPbmx5YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhdGNoT25seSA9IGNyZWF0ZVdhdGNoT25seShzaWduZXJSb290S2V5LCB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXQpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwod2F0Y2hPbmx5LmFjY291bnRzLCBhY2NvdW50cyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgd2F0Y2hPbmx5Lm1hc3Rlcl9rZXlfZmluZ2VycHJpbnQsXG4gICAgICB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoc2lnbmVyUm9vdEtleSwgdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0KS5maW5nZXJwcmludC50b1N0cmluZygnaGV4JylcbiAgICApO1xuICB9KTtcblxuICBpdChgYWRkSVBDYXZlYXRUb01hY2Fyb29uYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG1hY2Fyb29uID1cbiAgICAgICdBZ0VEYkc1a0F2Z0JBd29RTWdVN3JEaTgwMllxZy90SGxsMjRuaElCTUJvV0NnZGhaR1J5WlhOekVnUnlaV0ZrRWdWM2NtbDBaUm9UQ2dScGJtWnZFZ1J5WldGa0VnVjNjbWwwWlJvWENnaHBiblp2YVdObGN4SUVjbVZoWkJJRmQzSnBkR1VhSVFvSWJXRmpZWEp2YjI0U0NHZGxibVZ5WVhSbEVnUnlaV0ZrRWdWM2NtbDBaUm9XQ2dkdFpYTnpZV2RsRWdSeVpXRmtFZ1YzY21sMFpSb1hDZ2h2Wm1aamFHRnBiaElFY21WaFpCSUZkM0pwZEdVYUZnb0hiMjVqYUdGcGJoSUVjbVZoWkJJRmQzSnBkR1VhRkFvRmNHVmxjbk1TQkhKbFlXUVNCWGR5YVhSbEdoZ0tCbk5wWjI1bGNoSUlaMlZ1WlhKaGRHVVNCSEpsWVdRQUFBWWdaS2lVdkV6eEdkMlFLR1VTKzlSNVpXZXZHMDlTMDZmTUpVbnQrazFYWFhRPSc7XG4gICAgY29uc3QgbWFjYXJvb25PYmogPSBpbXBvcnRNYWNhcm9vbihtYWNhcm9vbikuZXhwb3J0SlNPTigpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChtYWNhcm9vbk9iai5jLCB1bmRlZmluZWQpO1xuICAgIGNvbnN0IG1hY2Fyb29uV2l0aENhdmVhdCA9IGFkZElQQ2F2ZWF0VG9NYWNhcm9vbihtYWNhcm9vbiwgJzEyNy4wLjAuMScpO1xuICAgIGNvbnN0IG1hY2Fyb29uT2JqV2l0aENhdmVhdCA9IGltcG9ydE1hY2Fyb29uKG1hY2Fyb29uV2l0aENhdmVhdCkuZXhwb3J0SlNPTigpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChtYWNhcm9vbk9ialdpdGhDYXZlYXQuY1swXS5pLCAnaXBhZGRyIDEyNy4wLjAuMScpO1xuICB9KTtcblxuICBpdChgZGVyaXZlTGlnaHRuaW5nU2VydmljZVNoYXJlZFNlY3JldGAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB1c2VyQXV0aFhwcnYgPVxuICAgICAgJ3hwcnY5czIxWnJRSDE0M0s0TlBrVjhyaWlUbkZmNzJNUnlRRFZITW1tcGVrR0YxdzVRa1MyTWZUZWk5S1hZdnJaVk1vcDR6UTRhcm56U0Y3VFJwM0N5NzNBV2FEZEFEaVlNQ2k1cXBZVzFiVWE1bSc7XG4gICAgY29uc3QgbGlnaHRuaW5nU2VydmljZVB1YktleSA9IGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrKCd0bG5idGMnKS5saWdodG5pbmdTZXJ2aWNlUHViS2V5O1xuXG4gICAgY29uc3QgZXhwZWN0ZWRTZWNyZXQgPSBzZGtjb3JlLmdldFNoYXJlZFNlY3JldChcbiAgICAgIHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OCh1c2VyQXV0aFhwcnYpLFxuICAgICAgQnVmZmVyLmZyb20obGlnaHRuaW5nU2VydmljZVB1YktleSwgJ2hleCcpXG4gICAgKTtcblxuICAgIGNvbnN0IHNlY3JldCA9IGRlcml2ZUxpZ2h0bmluZ1NlcnZpY2VTaGFyZWRTZWNyZXQoJ3RsbmJ0YycsIHVzZXJBdXRoWHBydik7XG5cbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNlY3JldCwgZXhwZWN0ZWRTZWNyZXQpO1xuICB9KTtcblxuICBpdChgZGVyaXZlTWlkZGxld2FyZVNoYXJlZFNlY3JldGAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB1c2VyQXV0aFhwcnYgPVxuICAgICAgJ3hwcnY5czIxWnJRSDE0M0s0TlBrVjhyaWlUbkZmNzJNUnlRRFZITW1tcGVrR0YxdzVRa1MyTWZUZWk5S1hZdnJaVk1vcDR6UTRhcm56U0Y3VFJwM0N5NzNBV2FEZEFEaVlNQ2k1cXBZVzFiVWE1bSc7XG4gICAgY29uc3QgbWlkZGxld2FyZVB1YktleSA9IGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrKCd0bG5idGMnKS5taWRkbGV3YXJlUHViS2V5O1xuXG4gICAgY29uc3QgZXhwZWN0ZWRTZWNyZXQgPSBzZGtjb3JlLmdldFNoYXJlZFNlY3JldChcbiAgICAgIHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OCh1c2VyQXV0aFhwcnYpLFxuICAgICAgQnVmZmVyLmZyb20obWlkZGxld2FyZVB1YktleSwgJ2hleCcpXG4gICAgKTtcblxuICAgIGNvbnN0IHNlY3JldCA9IGRlcml2ZU1pZGRsZXdhcmVTaGFyZWRTZWNyZXQoJ3RsbmJ0YycsIHVzZXJBdXRoWHBydik7XG5cbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNlY3JldCwgZXhwZWN0ZWRTZWNyZXQpO1xuICB9KTtcblxuICBpdChgZGVyaXZlVGF0U2hhcmVkU2VjcmV0YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHVzZXJYcHJ2ID1cbiAgICAgICd4cHJ2OXMyMVpyUUgxNDNLNE5Qa1Y4cmlpVG5GZjcyTVJ5UURWSE1tbXBla0dGMXc1UWtTMk1mVGVpOUtYWXZyWlZNb3A0elE0YXJuelNGN1RScDNDeTczQVdhRGRBRGlZTUNpNXFwWVcxYlVhNW0nO1xuICAgIGNvbnN0IHRhdFB1YktleSA9IGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrKCd0bG5idGMnKS50YXRQdWJLZXk7XG4gICAgY29uc3QgZXhwZWN0ZWRTZWNyZXQgPSBzZGtjb3JlLmdldFNoYXJlZFNlY3JldCh1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgodXNlclhwcnYpLCBCdWZmZXIuZnJvbSh0YXRQdWJLZXksICdoZXgnKSk7XG4gICAgY29uc3Qgc2VjcmV0ID0gZGVyaXZlVGF0U2hhcmVkU2VjcmV0KCd0bG5idGMnLCB1c2VyWHBydik7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZWNyZXQsIGV4cGVjdGVkU2VjcmV0KTtcbiAgfSk7XG5cbiAgaXQoYGNvbXB1dGVCaXAzMkRlcml2YXRpb25JbmRleEZyb21TZWVkYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNlZWQxID0gJ1RoZSBUaW1lcyAwMy9KYW4vMjAwOSBDaGFuY2VsbG9yIG9uIGJyaW5rIG9mIHNlY29uZCBiYWlsb3V0IGZvciBiYW5rcy4nO1xuICAgIGNvbnN0IHNlZWQyID0gJ1RoZSBUaW1lcyAwNC9KYW4vMjAwOSBDaGFuY2VsbG9yIG9uIGJyaW5rIG9mIHNlY29uZCBiYWlsb3V0IGZvciBiYW5rcy4nO1xuICAgIGFzc2VydC5ub3REZWVwU3RyaWN0RXF1YWwoY29tcHV0ZUJpcDMyRGVyaXZhdGlvbkluZGV4RnJvbVNlZWQoc2VlZDEpLCBjb21wdXRlQmlwMzJEZXJpdmF0aW9uSW5kZXhGcm9tU2VlZChzZWVkMikpO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parseWithdrawPsbt.d.ts.map
@@ -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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQXVEO0FBQ3ZELDhEQUFnRDtBQUNoRCxvREFBNEI7QUFFNUIsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxNQUFNLGVBQWUsR0FDbkIsNCtCQUE0K0IsQ0FBQztJQUMvK0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDekMsTUFBTSxVQUFVLEdBQUc7UUFDakI7WUFDRSxTQUFTLEVBQUUsT0FBTztZQUNsQixPQUFPLEVBQUUsZ0VBQWdFO1NBQzFFO0tBQ0YsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHO1FBQ2Y7WUFDRSxJQUFJLEVBQUUsaUhBQWlIO1lBQ3ZILE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsaUhBQWlIO1lBQ3ZILE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQztTQUNYO0tBQ0YsQ0FBQztJQUNGLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7UUFDNUMsSUFBQSw2QkFBdUIsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDdkMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUEsNkJBQXVCLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sbUJBQW1CLEdBQUc7WUFDMUI7Z0JBQ0UsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixPQUFPLEVBQUUseURBQXlEO2FBQ25FO1NBQ0YsQ0FBQztRQUNGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFBLDZCQUF1QixFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkYsQ0FBQyxFQUFFLDJIQUEySCxDQUFDLENBQUM7SUFDbEksQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1FBQ2xELE1BQU0sbUJBQW1CLEdBQUc7WUFDMUI7Z0JBQ0UsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixTQUFTLEVBQUUsTUFBTTthQUNsQjtTQUNGLENBQUM7UUFDRixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSw2QkFBdUIsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLENBQUMsRUFBRSwySEFBMkgsQ0FBQyxDQUFDO0lBQ2xJLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUNoQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSw2QkFBdUIsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxNQUFNLG9CQUFvQixHQUFHO1lBQzNCO2dCQUNFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxJQUFJLEVBQUUsaUhBQWlIO2FBQ3hIO1NBQ0YsQ0FBQztRQUNGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFBLDZCQUF1QixFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDdEYsQ0FBQyxFQUFFLDJDQUEyQyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1FBQzFDLE1BQU0sb0JBQW9CLEdBQUc7WUFDM0I7Z0JBQ0UsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNkLE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRixDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyw0K0JBQTQrQixDQUFDO1FBQ3RnQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBQSw2QkFBdUIsRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDdkYsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZhbGlkYXRlUHNidEZvcldpdGhkcmF3IH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5kZXNjcmliZSgncGFyc2VXaXRoZHJhd1BzYnQnLCAoKSA9PiB7XG4gIGNvbnN0IHVuc2lnbmVkUHNidEhleCA9XG4gICAgJzcwNzM2Mjc0ZmYwMTAwN2QwMjAwMDAwMDAxNWU1MGI4ZDk2Y2ViZGMzMjczZDlhMTAwZWI2ODM5MmQ5ODBkNWI5MzRiODE3MGM4MGEyMzQ4OGI1OTUyNjhjYTAxMDAwMDAwMDBmZmZmZmZmZjAyYTA4NjAxMDAwMDAwMDAwMDIyNTEyMDM3OWJjODhjYzE1ZDM2MDVlZDlkZTFiNjFmZjhkNjUwMjFiNjUwZGIxMTUxZTc1MWEzMDg4NWNjZmNjN2QxNWFmZmE4MGEwMDAwMDAwMDAwMTYwMDE0ODBhMDZmMmU2Yjc3ZTgxN2ZkNWRlNmU0MWVhNTEyYzU2M2MyNmNiODAwMDAwMDAwMDAwMTAwZWEwMjAwMDAwMDAwMDEwMWExNThkODA2NzM1YmI3YzU0ZTRjNzAxZDRmNTgyMWNkNTM0MmQ0OGQ1ZTFmY2JlZDExNjllNmU0NWFhNDQ0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmEwODYwMTAwMDAwMDAwMDAyMjUxMjAzNzliYzg4Y2MxNWQzNjA1ZWQ5ZGUxYjYxZmY4ZDY1MDIxYjY1MGRiMTE1MWU3NTFhMzA4ODVjY2ZjYzdkMTVhNmEzMTBjMDAwMDAwMDAwMDE2MDAxNDc4YTVkOThjNzE2MDQ4NGI5YjAwZjE3ODI4MDNjNThlZGZjNDliOWEwMjQ3MzA0NDAyMjA0MDdkOTE2MmY1MjM3MWRmMjQ2ZGNmYTI5NDNkNDBmYmRjYjBkNGI2NzY4Zjc2ODJjNjUxOTMzNzhiMjg0NWE2MDIyMDEwMWM3YmM0NjBjOTNkMjk3Njk2MWFjMjM0MDBmMGYxMGMxNDVlZmI5ODlhM2FkZGI3ZjAzZWJhYWEyMjAwOTUwMTIxMDM3ZTE3NDQ0Yzg1YzhiN2RhMDdmMTJmZDUzY2IyY2ExNDJjMmI0OTMyZDBmODk4NjQ5YzRiNWJlMDAyMWRhMDk4MDAwMDAwMDAwMTAzMDQwMTAwMDAwMDIyMDYwMmU1NzE0NmU1YjQ3NjJhN2ZmMzc0YWRmNDA3MjA0N2I2N2VmMTE1YWQ0NmEzNDE4OWJkZWI2YTRmODhkYjliMDgxODAwMDAwMDAwNTQwMDAwODAwMDAwMDA4MDAwMDAwMDgwMDEwMDAwMDAwNjAwMDAwMDAwMDAyMjAyMDM3OWFiYmU0NDAwNGZmN2U1MjdiZGVlM2RkOGQ5NWU1Y2QyNTAwNTNmMzVlZTkyMjU4Yjk3YWE4M2RmYTkzYzYyMTgwMDAwMDAwMDU0MDAwMDgwMDAwMDAwODAwMDAwMDA4MDAxMDAwMDAwNTAwMDAwMDAwMCc7XG4gIGNvbnN0IG5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXQ7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAge1xuICAgICAgYW1vdW50U2F0OiAxMDAwMDBuLFxuICAgICAgYWRkcmVzczogJ3RiMXB4N2R1M3J4cHQ1bXF0bXZhdXhtcGw3eGsycXNtdjV4bXo5Zzd3NWRycHp6dWVseDg2OWRxd2FwZTdrJyxcbiAgICB9LFxuICBdO1xuICBjb25zdCBhY2NvdW50cyA9IFtcbiAgICB7XG4gICAgICB4cHViOiAndHB1YkRDbWlXTWtUSnJaMjR0MVo2RUNSM0h5eW5DeVo5ekdzV3FoY0xoNkg0eUZLMkNEb3pTc3pEMXBQMkxpNE54MVlZdFJjdm1OYmRiM25EMVN6RmVqWXRQRmZUb2NUdjJFYUFnSkNnNHpwSnBBJyxcbiAgICAgIHB1cnBvc2U6IDQ5LFxuICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgYWNjb3VudDogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHhwdWI6ICd0cHViRENGTjdic3hSOVVUS2dnZEgycG12NUhlSEdRTmlEckp3YTFFWkZ0UDlzSDVQRjI4aTM3Rkhwb1lTWUFSUWtLWjZNaTk4cGtwN295cERjeEZtRTRkUUdxOGpWOEd2M0w2Z21XQmVSd1B4a1AnLFxuICAgICAgcHVycG9zZTogODQsXG4gICAgICBjb2luX3R5cGU6IDAsXG4gICAgICBhY2NvdW50OiAwLFxuICAgIH0sXG4gIF07XG4gIGl0KCdzaG91bGQgcGFyc2UgYSB2YWxpZCB3aXRoZHJhdyBQU0JUJywgKCkgPT4ge1xuICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHVuc2lnbmVkUHNidEhleCwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgaW52YWxpZCBQU0JUJywgKCkgPT4ge1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4ge1xuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcoJ2FzZGFzZCcsIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICB9LCAvRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTLyk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHRocm93IGZvciBpbnZhbGlkIHJlY2lwaWVudCBhZGRyZXNzJywgKCkgPT4ge1xuICAgIGNvbnN0IGRpZmZlcmVudFJlY2lwaWVudHMgPSBbXG4gICAgICB7XG4gICAgICAgIC4uLnJlY2lwaWVudHNbMF0sXG4gICAgICAgIGFkZHJlc3M6ICd0YjFxeHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6JyxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHVuc2lnbmVkUHNidEhleCwgbmV0d29yaywgZGlmZmVyZW50UmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgIH0sIC9QU0JUIG91dHB1dCB0YjFweDdkdTNyeHB0NW1xdG12YXV4bXBsN3hrMnFzbXY1eG16OWc3dzVkcnB6enVlbHg4NjlkcXdhcGU3ayB3aXRoIHZhbHVlIDEwMDAwMCBkb2VzIG5vdCBtYXRjaCBhbnkgcmVjaXBpZW50Lyk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHRocm93IGZvciBpbnZhbGlkIHJlY2lwaWVudCB2YWx1ZScsICgpID0+IHtcbiAgICBjb25zdCBkaWZmZXJlbnRSZWNpcGllbnRzID0gW1xuICAgICAge1xuICAgICAgICAuLi5yZWNpcGllbnRzWzBdLFxuICAgICAgICBhbW91bnRTYXQ6IDk5OTk5bixcbiAgICAgIH0sXG4gICAgXTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHVuc2lnbmVkUHNidEhleCwgbmV0d29yaywgZGlmZmVyZW50UmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgIH0sIC9QU0JUIG91dHB1dCB0YjFweDdkdTNyeHB0NW1xdG12YXV4bXBsN3hrMnFzbXY1eG16OWc3dzVkcnB6enVlbHg4NjlkcXdhcGU3ayB3aXRoIHZhbHVlIDEwMDAwMCBkb2VzIG5vdCBtYXRjaCBhbnkgcmVjaXBpZW50Lyk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHRocm93IGZvciBhY2NvdW50IG5vdCBmb3VuZCcsICgpID0+IHtcbiAgICBjb25zdCBpbmNvbXBhdGlibGVBY2NvdW50cyA9IFtdO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4ge1xuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcodW5zaWduZWRQc2J0SGV4LCBuZXR3b3JrLCByZWNpcGllbnRzLCBpbmNvbXBhdGlibGVBY2NvdW50cyk7XG4gICAgfSwgL0FjY291bnQgbm90IGZvdW5kIGZvciBwdXJwb3NlLyk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHRocm93IGZvciBpbnZhbGlkIHB1YmtleScsICgpID0+IHtcbiAgICBjb25zdCBpbmNvbXBhdGlibGVBY2NvdW50cyA9IFtcbiAgICAgIHtcbiAgICAgICAgLi4uYWNjb3VudHNbMV0sXG4gICAgICAgIHhwdWI6ICd0cHViRENtaVdNa1RKcloyNHQxWjZFQ1IzSHl5bkN5Wjl6R3NXcWhjTGg2SDR5RksyQ0RvelNzekQxcFAyTGk0TngxWVl0UmN2bU5iZGIzbkQxU3pGZWpZdFBGZlRvY1R2MkVhQWdKQ2c0enBKcEEnLFxuICAgICAgfSxcbiAgICBdO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4ge1xuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcodW5zaWduZWRQc2J0SGV4LCBuZXR3b3JrLCByZWNpcGllbnRzLCBpbmNvbXBhdGlibGVBY2NvdW50cyk7XG4gICAgfSwgL0Rlcml2ZWQgcHVia2V5IGRvZXMgbm90IG1hdGNoIGZvciBhZGRyZXNzLyk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHRocm93IGZvciBpbnZhbGlkIHB1cnBvc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgaW5jb21wYXRpYmxlQWNjb3VudHMgPSBbXG4gICAgICB7XG4gICAgICAgIC4uLmFjY291bnRzWzFdLFxuICAgICAgICBwdXJwb3NlOiAxMDE3LFxuICAgICAgfSxcbiAgICBdO1xuICAgIGNvbnN0IGluY29tcGF0aWJsZVBzYnQgPSBgNzA3MzYyNzRmZjAxMDA3ZDAyMDAwMDAwMDE1ZTUwYjhkOTZjZWJkYzMyNzNkOWExMDBlYjY4MzkyZDk4MGQ1YjkzNGI4MTcwYzgwYTIzNDg4YjU5NTI2OGNhMDEwMDAwMDAwMGZmZmZmZmZmMDJhMDg2MDEwMDAwMDAwMDAwMjI1MTIwMzc5YmM4OGNjMTVkMzYwNWVkOWRlMWI2MWZmOGQ2NTAyMWI2NTBkYjExNTFlNzUxYTMwODg1Y2NmY2M3ZDE1YWZmYTgwYTAwMDAwMDAwMDAxNjAwMTQ4MGEwNmYyZTZiNzdlODE3ZmQ1ZGU2ZTQxZWE1MTJjNTYzYzI2Y2I4MDAwMDAwMDAwMDAxMDBlYTAyMDAwMDAwMDAwMTAxYTE1OGQ4MDY3MzViYjdjNTRlNGM3MDFkNGY1ODIxY2Q1MzQyZDQ4ZDVlMWZjYmVkMTE2OWU2ZTQ1YWE0NDRiZTAxMDAwMDAwMDBmZmZmZmZmZjAyYTA4NjAxMDAwMDAwMDAwMDIyNTEyMDM3OWJjODhjYzE1ZDM2MDVlZDlkZTFiNjFmZjhkNjUwMjFiNjUwZGIxMTUxZTc1MWEzMDg4NWNjZmNjN2QxNWE2YTMxMGMwMDAwMDAwMDAwMTYwMDE0NzhhNWQ5OGM3MTYwNDg0YjliMDBmMTc4MjgwM2M1OGVkZmM0OWI5YTAyNDczMDQ0MDIyMDQwN2Q5MTYyZjUyMzcxZGYyNDZkY2ZhMjk0M2Q0MGZiZGNiMGQ0YjY3NjhmNzY4MmM2NTE5MzM3OGIyODQ1YTYwMjIwMTAxYzdiYzQ2MGM5M2QyOTc2OTYxYWMyMzQwMGYwZjEwYzE0NWVmYjk4OWEzYWRkYjdmMDNlYmFhYTIyMDA5NTAxMjEwMzdlMTc0NDRjODVjOGI3ZGEwN2YxMmZkNTNjYjJjYTE0MmMyYjQ5MzJkMGY4OTg2NDljNGI1YmUwMDIxZGEwOTgwMDAwMDAwMDAxMDMwNDAxMDAwMDAwMjIwNjAyZTU3MTQ2ZTViNDc2MmE3ZmYzNzRhZGY0MDcyMDQ3YjY3ZWYxMTVhZDQ2YTM0MTg5YmRlYjZhNGY4OGRiOWIwODE4MDAwMDAwMDA1NDAwMDA4MDAwMDAwMDgwMDAwMDAwODAwMTAwMDAwMDA2MDAwMDAwMDAwMDIyMDIwMzc5YWJiZTQ0MDA0ZmY3ZTUyN2JkZWUzZGQ4ZDk1ZTVjZDI1MDA1M2YzNWVlOTIyNThiOTdhYTgzZGZhOTNjNjIxODAwMDAwMDAwZjkwMzAwODAwMDAwMDA4MDAwMDAwMDgwMDEwMDAwMDA1MDAwMDAwMDAwYDtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KGluY29tcGF0aWJsZVBzYnQsIG5ldHdvcmssIHJlY2lwaWVudHMsIGluY29tcGF0aWJsZUFjY291bnRzKTtcbiAgICB9LCAvVW5zdXBwb3J0ZWQgcHVycG9zZS8pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signableJson.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signature.d.ts.map
@@ -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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpZ2h0bmluZy9zaWduYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsOERBQWdEO0FBRWhELHNEQUF3RjtBQUN4RixvREFBNEI7QUFPNUIsU0FBUyxNQUFNLENBQUMsSUFBWTtJQUMxQixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFcEMsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0UsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLEdBQUcsRUFBRSxHQUFHO1NBQ1QsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFZO1lBQzVCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsT0FBTyxFQUFFLFdBQVc7U0FDckIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDbkMsTUFBTSxPQUFPLEdBQVk7WUFDdkIsT0FBTyxFQUFFLFdBQVc7U0FDckIsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFZO1lBQzVCLE9BQU8sRUFBRSxpQkFBaUI7U0FDM0IsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFBLGdCQUFNLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtRQUMvQixNQUFNLE9BQU8sR0FBWTtZQUN2QixPQUFPLEVBQUUsV0FBVztTQUNyQixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUEsZ0JBQU0sRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBjcmVhdGVNZXNzYWdlU2lnbmF0dXJlLCB2ZXJpZnlNZXNzYWdlU2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpZ2h0bmluZyc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbnR5cGUgUmVxdWVzdCA9IHtcbiAgaW52b2ljZTogc3RyaW5nO1xuICBmZWU/OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBnZXRLZXkoc2VlZDogc3RyaW5nKTogdXR4b2xpYi5CSVAzMkludGVyZmFjZSB7XG4gIHJldHVybiB1dHhvbGliLmJpcDMyLmZyb21TZWVkKGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoc2VlZCkuZGlnZXN0KCkpO1xufVxuXG5kZXNjcmliZSgndmVyaWZ5U2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBrZXkgPSBnZXRLZXkoJ2tleScpO1xuICBjb25zdCBrZXlQdWIgPSBrZXkubmV1dGVyZWQoKTtcbiAgY29uc3Qgd3JvbmdLZXkgPSBnZXRLZXkoJ3dyb25nS2V5Jyk7XG5cbiAgaXQoJ3JldHVybnMgdHJ1ZSBvbiB2YWxpZCBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVxdWVzdCA9IHtcbiAgICAgIGludm9pY2U6ICdzb21lIGRhdGEnLFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBrZXkudG9CYXNlNTgoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBzaWduYXR1cmUsIGtleVB1Yi50b0Jhc2U1OCgpKTtcbiAgICBhc3NlcnQocmVzdWx0KTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgdHJ1ZSBvbiBkaWZmZXJlbnQgb3JkZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVxdWVzdCA9IHtcbiAgICAgIGludm9pY2U6ICdzb21lIGRhdGEnLFxuICAgICAgZmVlOiAxMjMsXG4gICAgfTtcbiAgICBjb25zdCBvdGhlclJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBmZWU6IDEyMyxcbiAgICAgIGludm9pY2U6ICdzb21lIGRhdGEnLFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBrZXkudG9CYXNlNTgoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZShvdGhlclJlcXVlc3QsIHNpZ25hdHVyZSwga2V5UHViLnRvQmFzZTU4KCkpO1xuICAgIGFzc2VydChyZXN1bHQpO1xuICB9KTtcblxuICBpdCgncmV0dXJucyBmYWxzZSBvbiB3cm9uZyBtZXNzYWdlJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHdyb25nUmVxdWVzdDogUmVxdWVzdCA9IHtcbiAgICAgIGludm9pY2U6ICdzb21lIG90aGVyIGRhdGEnLFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBrZXkudG9CYXNlNTgoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZSh3cm9uZ1JlcXVlc3QsIHNpZ25hdHVyZSwga2V5UHViLnRvQmFzZTU4KCkpO1xuICAgIGFzc2VydCghcmVzdWx0KTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2Ugb24gd3Jvbmcga2V5JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwgd3JvbmdLZXkudG9CYXNlNTgoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBzaWduYXR1cmUsIGtleVB1Yi50b0Jhc2U1OCgpKTtcbiAgICBhc3NlcnQoIXJlc3VsdCk7XG4gIH0pO1xufSk7XG4iXX0=