@bitgo/sdk-core 27.7.0 → 27.9.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.
Files changed (74) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/src/bitgo/environments.d.ts +1 -0
  3. package/dist/src/bitgo/environments.d.ts.map +1 -1
  4. package/dist/src/bitgo/environments.js +3 -1
  5. package/dist/src/bitgo/index.d.ts +1 -0
  6. package/dist/src/bitgo/index.d.ts.map +1 -1
  7. package/dist/src/bitgo/index.js +2 -1
  8. package/dist/src/bitgo/lightning/custodial/iLightning.d.ts.map +1 -0
  9. package/dist/src/bitgo/lightning/custodial/iLightning.js +110 -0
  10. package/dist/src/bitgo/lightning/custodial/index.d.ts +5 -0
  11. package/dist/src/bitgo/lightning/custodial/index.d.ts.map +1 -0
  12. package/dist/src/bitgo/lightning/custodial/index.js +21 -0
  13. package/dist/src/bitgo/lightning/{lightning.d.ts → custodial/lightning.d.ts} +2 -2
  14. package/dist/src/bitgo/lightning/custodial/lightning.d.ts.map +1 -0
  15. package/dist/src/bitgo/lightning/custodial/lightning.js +111 -0
  16. package/dist/src/bitgo/lightning/custodial/lightningUtils.d.ts +46 -0
  17. package/dist/src/bitgo/lightning/custodial/lightningUtils.d.ts.map +1 -0
  18. package/dist/src/bitgo/lightning/custodial/lightningUtils.js +137 -0
  19. package/dist/src/bitgo/lightning/custodial/lnurlCodec.d.ts.map +1 -0
  20. package/dist/src/bitgo/lightning/custodial/lnurlCodec.js +28 -0
  21. package/dist/src/bitgo/lightning/index.d.ts +2 -3
  22. package/dist/src/bitgo/lightning/index.d.ts.map +1 -1
  23. package/dist/src/bitgo/lightning/index.js +3 -4
  24. package/dist/src/bitgo/lightning/lightningUtils.d.ts +23 -37
  25. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -1
  26. package/dist/src/bitgo/lightning/lightningUtils.js +41 -96
  27. package/dist/src/bitgo/lightning/signableJson.d.ts +17 -0
  28. package/dist/src/bitgo/lightning/signableJson.d.ts.map +1 -0
  29. package/dist/src/bitgo/lightning/signableJson.js +30 -0
  30. package/dist/src/bitgo/lightning/signature.d.ts +22 -0
  31. package/dist/src/bitgo/lightning/signature.d.ts.map +1 -0
  32. package/dist/src/bitgo/lightning/signature.js +60 -0
  33. package/dist/src/bitgo/staking/iStakingWallet.d.ts +6 -0
  34. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  35. package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
  36. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +1 -1
  37. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -1
  38. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +71 -58
  39. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  40. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +9 -2
  41. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +40 -0
  42. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  43. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +92 -8
  44. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +0 -1
  45. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  46. package/dist/src/bitgo/utils/tss/ecdsa/index.js +1 -2
  47. package/dist/src/bitgo/wallet/iWallet.d.ts +1 -1
  48. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  49. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  50. package/dist/src/bitgo/wallet/wallet.d.ts +1 -1
  51. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  52. package/dist/src/bitgo/wallet/wallet.js +3 -3
  53. package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts +2 -0
  54. package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts.map +1 -0
  55. package/dist/test/unit/bitgo/lightning/lightningUtils.js +62 -0
  56. package/dist/test/unit/bitgo/lightning/signableJson.d.ts +2 -0
  57. package/dist/test/unit/bitgo/lightning/signableJson.d.ts.map +1 -0
  58. package/dist/test/unit/bitgo/lightning/signableJson.js +52 -0
  59. package/dist/test/unit/bitgo/lightning/signature.d.ts +2 -0
  60. package/dist/test/unit/bitgo/lightning/signature.d.ts.map +1 -0
  61. package/dist/test/unit/bitgo/lightning/signature.js +81 -0
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +6 -6
  64. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  65. package/dist/src/bitgo/lightning/iLightning.js +0 -110
  66. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  67. package/dist/src/bitgo/lightning/lightning.js +0 -111
  68. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  69. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  70. package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.d.ts +0 -164
  71. package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.d.ts.map +0 -1
  72. package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.js +0 -22
  73. /package/dist/src/bitgo/lightning/{iLightning.d.ts → custodial/iLightning.d.ts} +0 -0
  74. /package/dist/src/bitgo/lightning/{lnurlCodec.d.ts → custodial/lnurlCodec.d.ts} +0 -0
@@ -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/bitgo/lightning/lightningUtils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const assert_1 = __importDefault(require("assert"));
30
+ const utxolib = __importStar(require("@bitgo/utxo-lib"));
31
+ const lightning_1 = require("../../../../src/bitgo/lightning");
32
+ describe('lightning utils', function () {
33
+ [
34
+ { name: 'lnbtc', networkName: 'bitcoin' },
35
+ { name: 'tlnbtc', networkName: 'testnet' },
36
+ ].forEach(({ name, networkName }) => {
37
+ describe(`success - coin ${name} and network ${networkName}`, function () {
38
+ it(`isValidLightningNetworkName and getLightningNetwork`, function () {
39
+ (0, assert_1.default)((0, lightning_1.isValidLightningNetworkName)(networkName));
40
+ const network = (0, lightning_1.getLightningNetwork)(networkName);
41
+ assert_1.default.strictEqual(network, utxolib.networks[networkName]);
42
+ });
43
+ it(`isValidLightningNetwork`, function () {
44
+ (0, assert_1.default)((0, lightning_1.isValidLightningNetworkName)(networkName));
45
+ (0, assert_1.default)((0, lightning_1.isValidLightningNetwork)(utxolib.networks[networkName]));
46
+ });
47
+ it(`getUtxolibNetworkName`, function () {
48
+ assert_1.default.strictEqual((0, lightning_1.getUtxolibNetworkName)(name), networkName);
49
+ });
50
+ });
51
+ });
52
+ it(`isValidLightningNetworkName should return false for non lightning network name`, function () {
53
+ assert_1.default.strictEqual((0, lightning_1.isValidLightningNetworkName)('litecoin'), false);
54
+ });
55
+ it(`isValidLightningNetwork should return false for non lightning network`, function () {
56
+ assert_1.default.strictEqual((0, lightning_1.isValidLightningNetwork)(utxolib.networks['litecoin']), false);
57
+ });
58
+ it(`isValidLightningNetwork should return undefined for non lightning coin`, function () {
59
+ assert_1.default.strictEqual((0, lightning_1.getUtxolibNetworkName)('ltc'), undefined);
60
+ });
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIseURBQTJDO0FBRTNDLCtEQUt5QztBQUV6QyxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUI7UUFDRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtRQUN6QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtLQUMzQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLGdCQUFnQixXQUFXLEVBQUUsRUFBRTtZQUM1RCxFQUFFLENBQUMscURBQXFELEVBQUU7Z0JBQ3hELElBQUEsZ0JBQU0sRUFBQyxJQUFBLHVDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUEsK0JBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pELGdCQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUU7Z0JBQzVCLElBQUEsZ0JBQU0sRUFBQyxJQUFBLHVDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUEsZ0JBQU0sRUFBQyxJQUFBLG1DQUF1QixFQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHVCQUF1QixFQUFFO2dCQUMxQixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGlDQUFxQixFQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRTtRQUNuRixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHVDQUEyQixFQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVFQUF1RSxFQUFFO1FBQzFFLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsbUNBQXVCLEVBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25GLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdFQUF3RSxFQUFFO1FBQzNFLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsaUNBQXFCLEVBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHtcbiAgZ2V0TGlnaHRuaW5nTmV0d29yayxcbiAgZ2V0VXR4b2xpYk5ldHdvcmtOYW1lLFxuICBpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayxcbiAgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nJztcblxuZGVzY3JpYmUoJ2xpZ2h0bmluZyB1dGlscycsIGZ1bmN0aW9uICgpIHtcbiAgW1xuICAgIHsgbmFtZTogJ2xuYnRjJywgbmV0d29ya05hbWU6ICdiaXRjb2luJyB9LFxuICAgIHsgbmFtZTogJ3RsbmJ0YycsIG5ldHdvcmtOYW1lOiAndGVzdG5ldCcgfSxcbiAgXS5mb3JFYWNoKCh7IG5hbWUsIG5ldHdvcmtOYW1lIH0pID0+IHtcbiAgICBkZXNjcmliZShgc3VjY2VzcyAtIGNvaW4gJHtuYW1lfSBhbmQgbmV0d29yayAke25ldHdvcmtOYW1lfWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUgYW5kIGdldExpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUobmV0d29ya05hbWUpKTtcbiAgICAgICAgY29uc3QgbmV0d29yayA9IGdldExpZ2h0bmluZ05ldHdvcmsobmV0d29ya05hbWUpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobmV0d29yaywgdXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZShuZXR3b3JrTmFtZSkpO1xuICAgICAgICBhc3NlcnQoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsodXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV0pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgZ2V0VXR4b2xpYk5ldHdvcmtOYW1lYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0VXR4b2xpYk5ldHdvcmtOYW1lKG5hbWUpLCBuZXR3b3JrTmFtZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBub24gbGlnaHRuaW5nIG5ldHdvcmsgbmFtZWAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKCdsaXRlY29pbicpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBub24gbGlnaHRuaW5nIG5ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrKHV0eG9saWIubmV0d29ya3NbJ2xpdGVjb2luJ10pLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3Igbm9uIGxpZ2h0bmluZyBjb2luYCwgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRVdHhvbGliTmV0d29ya05hbWUoJ2x0YycpLCB1bmRlZmluZWQpO1xuICB9KTtcbn0pO1xuIl19
@@ -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/bitgo/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/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
@@ -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/bitgo/lightning/signature.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const assert_1 = __importDefault(require("assert"));
30
+ const utxolib = __importStar(require("@bitgo/utxo-lib"));
31
+ const lightning_1 = require("../../../../src/bitgo/lightning");
32
+ const crypto_1 = __importDefault(require("crypto"));
33
+ function getKey(seed) {
34
+ return utxolib.bip32.fromSeed(crypto_1.default.createHash('sha256').update(seed).digest());
35
+ }
36
+ describe('verifySignature', function () {
37
+ const key = getKey('key');
38
+ const keyPub = key.neutered();
39
+ const wrongKey = getKey('wrongKey');
40
+ it('returns true on valid signature', function () {
41
+ const request = {
42
+ invoice: 'some data',
43
+ };
44
+ const signature = (0, lightning_1.createMessageSignature)(request, key.toBase58());
45
+ const result = (0, lightning_1.verifyMessageSignature)(request, signature, keyPub.toBase58());
46
+ (0, assert_1.default)(result);
47
+ });
48
+ it('returns true on different order', function () {
49
+ const request = {
50
+ invoice: 'some data',
51
+ fee: 123,
52
+ };
53
+ const otherRequest = {
54
+ fee: 123,
55
+ invoice: 'some data',
56
+ };
57
+ const signature = (0, lightning_1.createMessageSignature)(request, key.toBase58());
58
+ const result = (0, lightning_1.verifyMessageSignature)(otherRequest, signature, keyPub.toBase58());
59
+ (0, assert_1.default)(result);
60
+ });
61
+ it('returns false on wrong message', function () {
62
+ const request = {
63
+ invoice: 'some data',
64
+ };
65
+ const wrongRequest = {
66
+ invoice: 'some other data',
67
+ };
68
+ const signature = (0, lightning_1.createMessageSignature)(request, key.toBase58());
69
+ const result = (0, lightning_1.verifyMessageSignature)(wrongRequest, signature, keyPub.toBase58());
70
+ (0, assert_1.default)(!result);
71
+ });
72
+ it('returns false on wrong key', function () {
73
+ const request = {
74
+ invoice: 'some data',
75
+ };
76
+ const signature = (0, lightning_1.createMessageSignature)(request, wrongKey.toBase58());
77
+ const result = (0, lightning_1.verifyMessageSignature)(request, signature, keyPub.toBase58());
78
+ (0, assert_1.default)(!result);
79
+ });
80
+ });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL2xpZ2h0bmluZy9zaWduYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1Qix5REFBMkM7QUFFM0MsK0RBQWlHO0FBQ2pHLG9EQUE0QjtBQU81QixTQUFTLE1BQU0sQ0FBQyxJQUFZO0lBQzFCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUVELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtJQUMxQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVwQyxFQUFFLENBQUMsaUNBQWlDLEVBQUU7UUFDcEMsTUFBTSxPQUFPLEdBQVk7WUFDdkIsT0FBTyxFQUFFLFdBQVc7U0FDckIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUU7UUFDcEMsTUFBTSxPQUFPLEdBQVk7WUFDdkIsT0FBTyxFQUFFLFdBQVc7WUFDcEIsR0FBRyxFQUFFLEdBQUc7U0FDVCxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQVk7WUFDNUIsR0FBRyxFQUFFLEdBQUc7WUFDUixPQUFPLEVBQUUsV0FBVztTQUNyQixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsQ0FBQztJQUNqQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBWTtZQUN2QixPQUFPLEVBQUUsV0FBVztTQUNyQixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQVk7WUFDNUIsT0FBTyxFQUFFLGlCQUFpQjtTQUMzQixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLElBQUEsZ0JBQU0sRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDRCQUE0QixFQUFFO1FBQy9CLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFzQixFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0UsSUFBQSxnQkFBTSxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQgeyBjcmVhdGVNZXNzYWdlU2lnbmF0dXJlLCB2ZXJpZnlNZXNzYWdlU2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZyc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbnR5cGUgUmVxdWVzdCA9IHtcbiAgaW52b2ljZTogc3RyaW5nO1xuICBmZWU/OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBnZXRLZXkoc2VlZDogc3RyaW5nKTogdXR4b2xpYi5CSVAzMkludGVyZmFjZSB7XG4gIHJldHVybiB1dHhvbGliLmJpcDMyLmZyb21TZWVkKGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoc2VlZCkuZGlnZXN0KCkpO1xufVxuXG5kZXNjcmliZSgndmVyaWZ5U2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBrZXkgPSBnZXRLZXkoJ2tleScpO1xuICBjb25zdCBrZXlQdWIgPSBrZXkubmV1dGVyZWQoKTtcbiAgY29uc3Qgd3JvbmdLZXkgPSBnZXRLZXkoJ3dyb25nS2V5Jyk7XG5cbiAgaXQoJ3JldHVybnMgdHJ1ZSBvbiB2YWxpZCBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVxdWVzdCA9IHtcbiAgICAgIGludm9pY2U6ICdzb21lIGRhdGEnLFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBrZXkudG9CYXNlNTgoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBzaWduYXR1cmUsIGtleVB1Yi50b0Jhc2U1OCgpKTtcbiAgICBhc3NlcnQocmVzdWx0KTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgdHJ1ZSBvbiBkaWZmZXJlbnQgb3JkZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVxdWVzdCA9IHtcbiAgICAgIGludm9pY2U6ICdzb21lIGRhdGEnLFxuICAgICAgZmVlOiAxMjMsXG4gICAgfTtcbiAgICBjb25zdCBvdGhlclJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBmZWU6IDEyMyxcbiAgICAgIGludm9pY2U6ICdzb21lIGRhdGEnLFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBrZXkudG9CYXNlNTgoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZShvdGhlclJlcXVlc3QsIHNpZ25hdHVyZSwga2V5UHViLnRvQmFzZTU4KCkpO1xuICAgIGFzc2VydChyZXN1bHQpO1xuICB9KTtcblxuICBpdCgncmV0dXJucyBmYWxzZSBvbiB3cm9uZyBtZXNzYWdlJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHdyb25nUmVxdWVzdDogUmVxdWVzdCA9IHtcbiAgICAgIGludm9pY2U6ICdzb21lIG90aGVyIGRhdGEnLFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBrZXkudG9CYXNlNTgoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZSh3cm9uZ1JlcXVlc3QsIHNpZ25hdHVyZSwga2V5UHViLnRvQmFzZTU4KCkpO1xuICAgIGFzc2VydCghcmVzdWx0KTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2Ugb24gd3Jvbmcga2V5JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlcXVlc3QgPSB7XG4gICAgICBpbnZvaWNlOiAnc29tZSBkYXRhJyxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUocmVxdWVzdCwgd3JvbmdLZXkudG9CYXNlNTgoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZShyZXF1ZXN0LCBzaWduYXR1cmUsIGtleVB1Yi50b0Jhc2U1OCgpKTtcbiAgICBhc3NlcnQoIXJlc3VsdCk7XG4gIH0pO1xufSk7XG4iXX0=