@bitgo/sdk-coin-xlm 3.7.0 → 3.7.2

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.
@@ -0,0 +1,4 @@
1
+ export declare const xlmBackupKey: {
2
+ key: string;
3
+ };
4
+ //# sourceMappingURL=xlmBackupKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlmBackupKey.d.ts","sourceRoot":"","sources":["../../../../test/unit/fixtures/xlmBackupKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;CAMxB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.xlmBackupKey = void 0;
4
+ exports.xlmBackupKey = {
5
+ key: '{"iv":"ATohCffn4u2fisPjXX1/Xw==","v":1,"iter":10000,"ks":256,"ts":64,"mode"' +
6
+ ':"ccm","adata":"","cipher":"aes","salt":"YLSCOF0iF0k=","ct":"sHLapZdO8aPXL7' +
7
+ 'oB2ngVxEAoUb7zSOW+vhaAa44rIdYWtn/lxot4jEPmvZuO8iyk/pugFJllOQzRXZiyG/uwDw=="' +
8
+ '}',
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxtQmFja3VwS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2ZpeHR1cmVzL3hsbUJhY2t1cEtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFlBQVksR0FBRztJQUMxQixHQUFHLEVBQ0QsNkVBQTZFO1FBQzdFLDZFQUE2RTtRQUM3RSw2RUFBNkU7UUFDN0UsR0FBRztDQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgeGxtQmFja3VwS2V5ID0ge1xuICBrZXk6XG4gICAgJ3tcIml2XCI6XCJBVG9oQ2ZmbjR1MmZpc1BqWFgxL1h3PT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiJyArXG4gICAgJzpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIllMU0NPRjBpRjBrPVwiLFwiY3RcIjpcInNITGFwWmRPOGFQWEw3JyArXG4gICAgJ29CMm5nVnhFQW9VYjd6U09XK3ZoYUFhNDRySWRZV3RuL2x4b3Q0akVQbXZadU84aXlrL3B1Z0ZKbGxPUXpSWFppeUcvdXdEdz09XCInICtcbiAgICAnfScsXG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../test/unit/keyPair.ts"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
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 should = __importStar(require("should"));
40
+ const stellar = __importStar(require("stellar-sdk"));
41
+ const src_1 = require("../../src");
42
+ const crypto_1 = require("crypto");
43
+ const assert_1 = __importDefault(require("assert"));
44
+ describe('Stellar Key Pair', () => {
45
+ describe('should create a valid keypair', () => {
46
+ const sampleKeys = {
47
+ pub: '37c6be1c677873e42a90f3d0ed3b0e4f3ba8591f285769d8c922f7024ae0c009',
48
+ prv: 'c034ca796a145e79acfac9bc9d97e4d3aaa42bfbe648b46bb1f3da794d7765fb',
49
+ };
50
+ it('from empty value', () => {
51
+ const keyPair = new src_1.KeyPair();
52
+ should.exists(keyPair.getKeys().prv);
53
+ should.exists(keyPair.getKeys().pub);
54
+ const kp = keyPair.getKeys();
55
+ kp.pub.startsWith('G').should.equal(true);
56
+ kp.prv?.startsWith('S').should.equal(true);
57
+ });
58
+ it('from a seed', () => {
59
+ const seed = (0, crypto_1.randomBytes)(32);
60
+ const keyPair = new src_1.KeyPair({ seed });
61
+ should.exists(keyPair.getKeys().prv);
62
+ should.exists(keyPair.getKeys().pub);
63
+ keyPair.getKeys(true).prv.should.equal(seed.toString('hex'));
64
+ keyPair.getKeys().prv.should.equal(stellar.StrKey.encodeEd25519SecretSeed(seed));
65
+ });
66
+ it('from a prv', () => {
67
+ const keyPair = new src_1.KeyPair({ prv: sampleKeys.prv });
68
+ should.exists(keyPair.getKeys().prv);
69
+ should.exists(keyPair.getKeys().pub);
70
+ keyPair.getKeys(true).pub.should.equal(sampleKeys.pub);
71
+ keyPair.getKeys(true).prv.should.equal(sampleKeys.prv);
72
+ keyPair.getKeys().pub.should.equal(stellar.StrKey.encodeEd25519PublicKey(Buffer.from(sampleKeys.pub, 'hex')));
73
+ keyPair.getKeys().prv.should.equal(stellar.StrKey.encodeEd25519SecretSeed(Buffer.from(sampleKeys.prv, 'hex')));
74
+ });
75
+ it('from a pub', () => {
76
+ const keyPair = new src_1.KeyPair({ pub: sampleKeys.pub });
77
+ keyPair.getKeys(true).pub.should.equal(sampleKeys.pub);
78
+ keyPair.getKeys().pub.should.equal(stellar.StrKey.encodeEd25519PublicKey(Buffer.from(sampleKeys.pub, 'hex')));
79
+ });
80
+ });
81
+ describe('should fail to create keypair', () => {
82
+ it('from an invalid public key', () => {
83
+ const source = { pub: 'invalid123' };
84
+ assert_1.default.throws(() => new src_1.KeyPair(source), (err) => err.message === 'Invalid public key: invalid123');
85
+ });
86
+ it('from an invalid private key', () => {
87
+ const source = { prv: 'invalid123' };
88
+ assert_1.default.throws(() => new src_1.KeyPair(source), (err) => err.message === 'Invalid private key: invalid123');
89
+ });
90
+ it('from an invalid seed', () => {
91
+ const source = { seed: (0, crypto_1.randomBytes)(31) };
92
+ should.throws(() => new src_1.KeyPair(source), 'bad seed size');
93
+ });
94
+ });
95
+ });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLHFEQUF1QztBQUN2QyxtQ0FBb0M7QUFDcEMsbUNBQXFDO0FBQ3JDLG9EQUE0QjtBQUU1QixRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO0lBQ2hDLFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDN0MsTUFBTSxVQUFVLEdBQUc7WUFDakIsR0FBRyxFQUFFLGtFQUFrRTtZQUN2RSxHQUFHLEVBQUUsa0VBQWtFO1NBQ3hFLENBQUM7UUFFRixFQUFFLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksYUFBTyxFQUFFLENBQUM7WUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFckMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQVcsRUFBQyxFQUFFLENB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QyxJQUFJLGFBQU8sQ0FBQyxNQUFNLENBQUMsRUFDekIsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQUssZ0NBQWdDLENBQy9ELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDckMsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFLENBQUMsSUFBSSxhQUFPLENBQUMsTUFBTSxDQUFDLEVBQ3pCLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLGlDQUFpQyxDQUNoRSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1lBQzlCLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUEsb0JBQVcsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxhQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyBzdGVsbGFyIGZyb20gJ3N0ZWxsYXItc2RrJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5kZXNjcmliZSgnU3RlbGxhciBLZXkgUGFpcicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3Nob3VsZCBjcmVhdGUgYSB2YWxpZCBrZXlwYWlyJywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbXBsZUtleXMgPSB7XG4gICAgICBwdWI6ICczN2M2YmUxYzY3Nzg3M2U0MmE5MGYzZDBlZDNiMGU0ZjNiYTg1OTFmMjg1NzY5ZDhjOTIyZjcwMjRhZTBjMDA5JyxcbiAgICAgIHBydjogJ2MwMzRjYTc5NmExNDVlNzlhY2ZhYzliYzlkOTdlNGQzYWFhNDJiZmJlNjQ4YjQ2YmIxZjNkYTc5NGQ3NzY1ZmInLFxuICAgIH07XG5cbiAgICBpdCgnZnJvbSBlbXB0eSB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcigpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wcnYpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuXG4gICAgICBjb25zdCBrcCA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgICAga3AucHViLnN0YXJ0c1dpdGgoJ0cnKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBrcC5wcnY/LnN0YXJ0c1dpdGgoJ1MnKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZnJvbSBhIHNlZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzZWVkID0gcmFuZG9tQnl0ZXMoMzIpO1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgc2VlZCB9KTtcblxuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wcnYpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuXG4gICAgICBrZXlQYWlyLmdldEtleXModHJ1ZSkucHJ2IS5zaG91bGQuZXF1YWwoc2VlZC50b1N0cmluZygnaGV4JykpO1xuICAgICAga2V5UGFpci5nZXRLZXlzKCkucHJ2IS5zaG91bGQuZXF1YWwoc3RlbGxhci5TdHJLZXkuZW5jb2RlRWQyNTUxOVNlY3JldFNlZWQoc2VlZCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Zyb20gYSBwcnYnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IHNhbXBsZUtleXMucHJ2IH0pO1xuXG4gICAgICBzaG91bGQuZXhpc3RzKGtleVBhaXIuZ2V0S2V5cygpLnBydik7XG4gICAgICBzaG91bGQuZXhpc3RzKGtleVBhaXIuZ2V0S2V5cygpLnB1Yik7XG5cbiAgICAgIGtleVBhaXIuZ2V0S2V5cyh0cnVlKS5wdWIuc2hvdWxkLmVxdWFsKHNhbXBsZUtleXMucHViKTtcbiAgICAgIGtleVBhaXIuZ2V0S2V5cyh0cnVlKS5wcnYhLnNob3VsZC5lcXVhbChzYW1wbGVLZXlzLnBydik7XG5cbiAgICAgIGtleVBhaXIuZ2V0S2V5cygpLnB1Yi5zaG91bGQuZXF1YWwoc3RlbGxhci5TdHJLZXkuZW5jb2RlRWQyNTUxOVB1YmxpY0tleShCdWZmZXIuZnJvbShzYW1wbGVLZXlzLnB1YiwgJ2hleCcpKSk7XG4gICAgICBrZXlQYWlyLmdldEtleXMoKS5wcnYhLnNob3VsZC5lcXVhbChzdGVsbGFyLlN0cktleS5lbmNvZGVFZDI1NTE5U2VjcmV0U2VlZChCdWZmZXIuZnJvbShzYW1wbGVLZXlzLnBydiwgJ2hleCcpKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZnJvbSBhIHB1YicsICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHB1Yjogc2FtcGxlS2V5cy5wdWIgfSk7XG4gICAgICBrZXlQYWlyLmdldEtleXModHJ1ZSkucHViLnNob3VsZC5lcXVhbChzYW1wbGVLZXlzLnB1Yik7XG4gICAgICBrZXlQYWlyLmdldEtleXMoKS5wdWIuc2hvdWxkLmVxdWFsKHN0ZWxsYXIuU3RyS2V5LmVuY29kZUVkMjU1MTlQdWJsaWNLZXkoQnVmZmVyLmZyb20oc2FtcGxlS2V5cy5wdWIsICdoZXgnKSkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGZhaWwgdG8gY3JlYXRlIGtleXBhaXInLCAoKSA9PiB7XG4gICAgaXQoJ2Zyb20gYW4gaW52YWxpZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0geyBwdWI6ICdpbnZhbGlkMTIzJyB9O1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gbmV3IEtleVBhaXIoc291cmNlKSxcbiAgICAgICAgKGVycjogYW55KSA9PiBlcnIubWVzc2FnZSA9PT0gJ0ludmFsaWQgcHVibGljIGtleTogaW52YWxpZDEyMydcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnZnJvbSBhbiBpbnZhbGlkIHByaXZhdGUga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0geyBwcnY6ICdpbnZhbGlkMTIzJyB9O1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gbmV3IEtleVBhaXIoc291cmNlKSxcbiAgICAgICAgKGVycjogYW55KSA9PiBlcnIubWVzc2FnZSA9PT0gJ0ludmFsaWQgcHJpdmF0ZSBrZXk6IGludmFsaWQxMjMnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Zyb20gYW4gaW52YWxpZCBzZWVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0geyBzZWVkOiByYW5kb21CeXRlcygzMSkgfTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gbmV3IEtleVBhaXIoc291cmNlKSwgJ2JhZCBzZWVkIHNpemUnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,165 @@
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 Utils = __importStar(require("../../src/lib/utils"));
41
+ describe('Stellar Utils', () => {
42
+ const userKeychain = {
43
+ pub: 'GA34NPQ4M54HHZBKSDZ5B3J3BZHTXKCZD4UFO2OYZERPOASK4DAATSIB',
44
+ prv: 'SDADJSTZNIKF46NM7LE3ZHMX4TJ2VJBL7PTERNDLWHZ5U6KNO5S7XFJD',
45
+ };
46
+ const backupKeychain = {
47
+ pub: 'GC3D3ZNNK7GHLMSWJA54DQO6QJUJJF7K6J5JGCEW45ZT6QMKZ6PMUHUM',
48
+ prv: 'SA22TDBINLZMGYUDVXGUP2JMYIQ3DTJE53PNQUVCDK73XRS6TDVYU7WW',
49
+ };
50
+ // This key pair is the decoded version of the userKeychain above
51
+ const rootKeychain = {
52
+ pub: '37c6be1c677873e42a90f3d0ed3b0e4f3ba8591f285769d8c922f7024ae0c009',
53
+ prv: 'c034ca796a145e79acfac9bc9d97e4d3aaa42bfbe648b46bb1f3da794d7765fb37c6be1c677873e42a90f3d0ed3b0e4f3ba8591f285769d8c922f7024ae0c009',
54
+ };
55
+ // This key pair is the decoded version of the backupKeychain above
56
+ const backupRootKeychain = {
57
+ pub: 'b63de5ad57cc75b256483bc1c1de82689497eaf27a930896e7733f418acf9eca',
58
+ prv: '35a98c286af2c36283adcd47e92cc221b1cd24eeded852a21abfbbc65e98eb8ab63de5ad57cc75b256483bc1c1de82689497eaf27a930896e7733f418acf9eca',
59
+ };
60
+ describe('key validation', () => {
61
+ it('should validate a Stellar public key', () => {
62
+ Utils.isValidStellarPublicKey(userKeychain.pub).should.equal(true);
63
+ Utils.isValidStellarPublicKey(backupKeychain.pub).should.equal(true);
64
+ });
65
+ it('should validate a Stellar private key', () => {
66
+ Utils.isValidStellarPrivateKey(userKeychain.prv).should.equal(true);
67
+ Utils.isValidStellarPrivateKey(backupKeychain.prv).should.equal(true);
68
+ });
69
+ it('should validate a raw public key', () => {
70
+ Utils.isValidRootPublicKey(rootKeychain.pub).should.equal(true);
71
+ Utils.isValidRootPublicKey(backupRootKeychain.pub).should.equal(true);
72
+ });
73
+ it('should validate a raw private key', () => {
74
+ Utils.isValidRootPrivateKey(rootKeychain.prv).should.equal(true);
75
+ Utils.isValidRootPrivateKey(backupRootKeychain.prv).should.equal(true);
76
+ });
77
+ it('should fail to validate an invalid Stellar public key', () => {
78
+ Utils.isValidStellarPublicKey(rootKeychain.pub).should.equal(false);
79
+ Utils.isValidStellarPublicKey(backupRootKeychain.pub).should.equal(false);
80
+ });
81
+ it('should fail to validate an invalid Stellar private key', () => {
82
+ Utils.isValidStellarPrivateKey(rootKeychain.prv).should.equal(false);
83
+ Utils.isValidStellarPrivateKey(backupRootKeychain.prv).should.equal(false);
84
+ });
85
+ it('should fail to validate an invalid raw public key', () => {
86
+ Utils.isValidRootPublicKey(userKeychain.pub).should.equal(false);
87
+ Utils.isValidRootPublicKey(backupKeychain.pub).should.equal(false);
88
+ });
89
+ it('should fail to validate an invalid raw private key', () => {
90
+ Utils.isValidRootPrivateKey(userKeychain.prv).should.equal(false);
91
+ Utils.isValidRootPrivateKey(backupKeychain.prv).should.equal(false);
92
+ });
93
+ });
94
+ describe('encode and decode keys', () => {
95
+ it('should encode a raw public key to a Stellar public key', () => {
96
+ const pub = Buffer.from(rootKeychain.pub, 'hex');
97
+ Utils.encodePublicKey(pub).should.equal(userKeychain.pub);
98
+ const backupPub = Buffer.from(backupRootKeychain.pub, 'hex');
99
+ Utils.encodePublicKey(backupPub).should.equal(backupKeychain.pub);
100
+ });
101
+ it('should encode a raw private key to a Stellar private key', () => {
102
+ const prv = Buffer.from(rootKeychain.prv.slice(0, 64), 'hex');
103
+ Utils.encodePrivateKey(prv).should.equal(userKeychain.prv);
104
+ const backupPrv = Buffer.from(backupRootKeychain.prv.slice(0, 64), 'hex');
105
+ Utils.encodePrivateKey(backupPrv).should.equal(backupKeychain.prv);
106
+ });
107
+ it('should decode a Stellar public key to a raw public key', () => {
108
+ const decodedPub = Utils.decodePublicKey(userKeychain.pub).toString('hex');
109
+ const decodedBackupPub = Utils.decodePublicKey(backupKeychain.pub).toString('hex');
110
+ decodedPub.should.equal(rootKeychain.pub);
111
+ decodedBackupPub.should.equal(backupRootKeychain.pub);
112
+ });
113
+ it('should decode a Stellar private key to a raw private key', () => {
114
+ const decodedPrv = Utils.decodePrivateKey(userKeychain.prv).toString('hex');
115
+ const decodedBackupPrv = Utils.decodePrivateKey(backupKeychain.prv).toString('hex');
116
+ decodedPrv.should.equal(rootKeychain.prv.slice(0, 64));
117
+ decodedBackupPrv.should.equal(backupRootKeychain.prv.slice(0, 64));
118
+ });
119
+ });
120
+ describe('create Stellar keypairs', () => {
121
+ it('should create a Stellar keypair given a Stellar public key', () => {
122
+ const keypair = Utils.createStellarKeypairFromPub(userKeychain.pub);
123
+ const backupKeypair = Utils.createStellarKeypairFromPub(backupKeychain.pub);
124
+ keypair.publicKey().should.equal(userKeychain.pub);
125
+ backupKeypair.publicKey().should.equal(backupKeychain.pub);
126
+ });
127
+ it('should create a Stellar keypair given a raw public key', () => {
128
+ const keypair = Utils.createStellarKeypairFromPub(rootKeychain.pub);
129
+ const backupKeypair = Utils.createStellarKeypairFromPub(backupRootKeychain.pub);
130
+ keypair.publicKey().should.equal(userKeychain.pub);
131
+ backupKeypair.publicKey().should.equal(backupKeychain.pub);
132
+ });
133
+ it('should create a Stellar keypair given a Stellar private key', () => {
134
+ const keypair = Utils.createStellarKeypairFromPrv(userKeychain.prv);
135
+ const backupKeypair = Utils.createStellarKeypairFromPrv(backupKeychain.prv);
136
+ keypair.publicKey().should.equal(userKeychain.pub);
137
+ backupKeypair.publicKey().should.equal(backupKeychain.pub);
138
+ keypair.secret().should.equal(userKeychain.prv);
139
+ backupKeypair.secret().should.equal(backupKeychain.prv);
140
+ });
141
+ it('should create a Stellar keypair given a raw private key', () => {
142
+ const keypair = Utils.createStellarKeypairFromPrv(rootKeychain.prv);
143
+ const backupKeypair = Utils.createStellarKeypairFromPrv(backupRootKeychain.prv);
144
+ keypair.publicKey().should.equal(userKeychain.pub);
145
+ backupKeypair.publicKey().should.equal(backupKeychain.pub);
146
+ keypair.secret().should.equal(userKeychain.prv);
147
+ backupKeypair.secret().should.equal(backupKeychain.prv);
148
+ });
149
+ it('should fail to create a Stellar keypair given an invalid public key', () => {
150
+ // non G-prefixed, so this should fail with invalid root key
151
+ assert_1.default.throws(() => Utils.createStellarKeypairFromPub('invalid'), /Error: Invalid root public key/);
152
+ });
153
+ it('should fail to create a Stellar keypair given an invalid G-prefixed public key', () => {
154
+ assert_1.default.throws(() => Utils.createStellarKeypairFromPub('GINVALID'), /Error: Invalid Stellar public key/);
155
+ });
156
+ it('should fail to create a Stellar keypair given an invalid private key', () => {
157
+ // non S-prefixed, so this should fail with invalid root key
158
+ assert_1.default.throws(() => Utils.createStellarKeypairFromPrv('invalid'), /Error: Invalid root private key/);
159
+ });
160
+ it('should fail to create a Stellar keypair given an invalid S-prefixed private key', () => {
161
+ assert_1.default.throws(() => Utils.createStellarKeypairFromPrv('SINVALID'), /Error: Invalid Stellar private key/);
162
+ });
163
+ });
164
+ });
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsMkRBQTZDO0FBRTdDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzdCLE1BQU0sWUFBWSxHQUFHO1FBQ25CLEdBQUcsRUFBRSwwREFBMEQ7UUFDL0QsR0FBRyxFQUFFLDBEQUEwRDtLQUNoRSxDQUFDO0lBQ0YsTUFBTSxjQUFjLEdBQUc7UUFDckIsR0FBRyxFQUFFLDBEQUEwRDtRQUMvRCxHQUFHLEVBQUUsMERBQTBEO0tBQ2hFLENBQUM7SUFDRixpRUFBaUU7SUFDakUsTUFBTSxZQUFZLEdBQUc7UUFDbkIsR0FBRyxFQUFFLGtFQUFrRTtRQUN2RSxHQUFHLEVBQUUsa0lBQWtJO0tBQ3hJLENBQUM7SUFDRixtRUFBbUU7SUFDbkUsTUFBTSxrQkFBa0IsR0FBRztRQUN6QixHQUFHLEVBQUUsa0VBQWtFO1FBQ3ZFLEdBQUcsRUFBRSxrSUFBa0k7S0FDeEksQ0FBQztJQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtZQUM5QyxLQUFLLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkUsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtZQUMvQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLEdBQUcs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NUQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUZBQWlGLEVBQUUsR0FBRyxFQUFFO1lBQ3pGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5kZXNjcmliZSgnU3RlbGxhciBVdGlscycsICgpID0+IHtcbiAgY29uc3QgdXNlcktleWNoYWluID0ge1xuICAgIHB1YjogJ0dBMzROUFE0TTU0SEhaQktTRFo1QjNKM0JaSFRYS0NaRDRVRk8yT1laRVJQT0FTSzREQUFUU0lCJyxcbiAgICBwcnY6ICdTREFESlNUWk5JS0Y0Nk5NN0xFM1pITVg0VEoyVkpCTDdQVEVSTkRMV0haNVU2S05PNVM3WEZKRCcsXG4gIH07XG4gIGNvbnN0IGJhY2t1cEtleWNoYWluID0ge1xuICAgIHB1YjogJ0dDM0QzWk5OSzdHSExNU1dKQTU0RFFPNlFKVUpKRjdLNko1SkdDRVc0NVpUNlFNS1o2UE1VSFVNJyxcbiAgICBwcnY6ICdTQTIyVERCSU5MWk1HWVVEVlhHVVAySk1ZSVEzRFRKRTUzUE5RVVZDREs3M1hSUzZURFZZVTdXVycsXG4gIH07XG4gIC8vIFRoaXMga2V5IHBhaXIgaXMgdGhlIGRlY29kZWQgdmVyc2lvbiBvZiB0aGUgdXNlcktleWNoYWluIGFib3ZlXG4gIGNvbnN0IHJvb3RLZXljaGFpbiA9IHtcbiAgICBwdWI6ICczN2M2YmUxYzY3Nzg3M2U0MmE5MGYzZDBlZDNiMGU0ZjNiYTg1OTFmMjg1NzY5ZDhjOTIyZjcwMjRhZTBjMDA5JyxcbiAgICBwcnY6ICdjMDM0Y2E3OTZhMTQ1ZTc5YWNmYWM5YmM5ZDk3ZTRkM2FhYTQyYmZiZTY0OGI0NmJiMWYzZGE3OTRkNzc2NWZiMzdjNmJlMWM2Nzc4NzNlNDJhOTBmM2QwZWQzYjBlNGYzYmE4NTkxZjI4NTc2OWQ4YzkyMmY3MDI0YWUwYzAwOScsXG4gIH07XG4gIC8vIFRoaXMga2V5IHBhaXIgaXMgdGhlIGRlY29kZWQgdmVyc2lvbiBvZiB0aGUgYmFja3VwS2V5Y2hhaW4gYWJvdmVcbiAgY29uc3QgYmFja3VwUm9vdEtleWNoYWluID0ge1xuICAgIHB1YjogJ2I2M2RlNWFkNTdjYzc1YjI1NjQ4M2JjMWMxZGU4MjY4OTQ5N2VhZjI3YTkzMDg5NmU3NzMzZjQxOGFjZjllY2EnLFxuICAgIHBydjogJzM1YTk4YzI4NmFmMmMzNjI4M2FkY2Q0N2U5MmNjMjIxYjFjZDI0ZWVkZWQ4NTJhMjFhYmZiYmM2NWU5OGViOGFiNjNkZTVhZDU3Y2M3NWIyNTY0ODNiYzFjMWRlODI2ODk0OTdlYWYyN2E5MzA4OTZlNzczM2Y0MThhY2Y5ZWNhJyxcbiAgfTtcblxuICBkZXNjcmliZSgna2V5IHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIFN0ZWxsYXIgcHVibGljIGtleScsICgpID0+IHtcbiAgICAgIFV0aWxzLmlzVmFsaWRTdGVsbGFyUHVibGljS2V5KHVzZXJLZXljaGFpbi5wdWIpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIFV0aWxzLmlzVmFsaWRTdGVsbGFyUHVibGljS2V5KGJhY2t1cEtleWNoYWluLnB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIFN0ZWxsYXIgcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgICBVdGlscy5pc1ZhbGlkU3RlbGxhclByaXZhdGVLZXkodXNlcktleWNoYWluLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgVXRpbHMuaXNWYWxpZFN0ZWxsYXJQcml2YXRlS2V5KGJhY2t1cEtleWNoYWluLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIHJhdyBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgVXRpbHMuaXNWYWxpZFJvb3RQdWJsaWNLZXkocm9vdEtleWNoYWluLnB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgVXRpbHMuaXNWYWxpZFJvb3RQdWJsaWNLZXkoYmFja3VwUm9vdEtleWNoYWluLnB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIHJhdyBwcml2YXRlIGtleScsICgpID0+IHtcbiAgICAgIFV0aWxzLmlzVmFsaWRSb290UHJpdmF0ZUtleShyb290S2V5Y2hhaW4ucHJ2KS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBVdGlscy5pc1ZhbGlkUm9vdFByaXZhdGVLZXkoYmFja3VwUm9vdEtleWNoYWluLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZhbGlkYXRlIGFuIGludmFsaWQgU3RlbGxhciBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgVXRpbHMuaXNWYWxpZFN0ZWxsYXJQdWJsaWNLZXkocm9vdEtleWNoYWluLnB1Yikuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICAgIFV0aWxzLmlzVmFsaWRTdGVsbGFyUHVibGljS2V5KGJhY2t1cFJvb3RLZXljaGFpbi5wdWIpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgYW4gaW52YWxpZCBTdGVsbGFyIHByaXZhdGUga2V5JywgKCkgPT4ge1xuICAgICAgVXRpbHMuaXNWYWxpZFN0ZWxsYXJQcml2YXRlS2V5KHJvb3RLZXljaGFpbi5wcnYpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgICBVdGlscy5pc1ZhbGlkU3RlbGxhclByaXZhdGVLZXkoYmFja3VwUm9vdEtleWNoYWluLnBydikuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSBhbiBpbnZhbGlkIHJhdyBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgVXRpbHMuaXNWYWxpZFJvb3RQdWJsaWNLZXkodXNlcktleWNoYWluLnB1Yikuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICAgIFV0aWxzLmlzVmFsaWRSb290UHVibGljS2V5KGJhY2t1cEtleWNoYWluLnB1Yikuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSBhbiBpbnZhbGlkIHJhdyBwcml2YXRlIGtleScsICgpID0+IHtcbiAgICAgIFV0aWxzLmlzVmFsaWRSb290UHJpdmF0ZUtleSh1c2VyS2V5Y2hhaW4ucHJ2KS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgICAgVXRpbHMuaXNWYWxpZFJvb3RQcml2YXRlS2V5KGJhY2t1cEtleWNoYWluLnBydikuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2VuY29kZSBhbmQgZGVjb2RlIGtleXMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBlbmNvZGUgYSByYXcgcHVibGljIGtleSB0byBhIFN0ZWxsYXIgcHVibGljIGtleScsICgpID0+IHtcbiAgICAgIGNvbnN0IHB1YiA9IEJ1ZmZlci5mcm9tKHJvb3RLZXljaGFpbi5wdWIsICdoZXgnKTtcbiAgICAgIFV0aWxzLmVuY29kZVB1YmxpY0tleShwdWIpLnNob3VsZC5lcXVhbCh1c2VyS2V5Y2hhaW4ucHViKTtcblxuICAgICAgY29uc3QgYmFja3VwUHViID0gQnVmZmVyLmZyb20oYmFja3VwUm9vdEtleWNoYWluLnB1YiwgJ2hleCcpO1xuICAgICAgVXRpbHMuZW5jb2RlUHVibGljS2V5KGJhY2t1cFB1Yikuc2hvdWxkLmVxdWFsKGJhY2t1cEtleWNoYWluLnB1Yik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGVuY29kZSBhIHJhdyBwcml2YXRlIGtleSB0byBhIFN0ZWxsYXIgcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcnYgPSBCdWZmZXIuZnJvbShyb290S2V5Y2hhaW4ucHJ2LnNsaWNlKDAsIDY0KSwgJ2hleCcpO1xuICAgICAgVXRpbHMuZW5jb2RlUHJpdmF0ZUtleShwcnYpLnNob3VsZC5lcXVhbCh1c2VyS2V5Y2hhaW4ucHJ2KTtcblxuICAgICAgY29uc3QgYmFja3VwUHJ2ID0gQnVmZmVyLmZyb20oYmFja3VwUm9vdEtleWNoYWluLnBydi5zbGljZSgwLCA2NCksICdoZXgnKTtcbiAgICAgIFV0aWxzLmVuY29kZVByaXZhdGVLZXkoYmFja3VwUHJ2KS5zaG91bGQuZXF1YWwoYmFja3VwS2V5Y2hhaW4ucHJ2KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVjb2RlIGEgU3RlbGxhciBwdWJsaWMga2V5IHRvIGEgcmF3IHB1YmxpYyBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBkZWNvZGVkUHViID0gVXRpbHMuZGVjb2RlUHVibGljS2V5KHVzZXJLZXljaGFpbi5wdWIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IGRlY29kZWRCYWNrdXBQdWIgPSBVdGlscy5kZWNvZGVQdWJsaWNLZXkoYmFja3VwS2V5Y2hhaW4ucHViKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgIGRlY29kZWRQdWIuc2hvdWxkLmVxdWFsKHJvb3RLZXljaGFpbi5wdWIpO1xuICAgICAgZGVjb2RlZEJhY2t1cFB1Yi5zaG91bGQuZXF1YWwoYmFja3VwUm9vdEtleWNoYWluLnB1Yik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlY29kZSBhIFN0ZWxsYXIgcHJpdmF0ZSBrZXkgdG8gYSByYXcgcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBkZWNvZGVkUHJ2ID0gVXRpbHMuZGVjb2RlUHJpdmF0ZUtleSh1c2VyS2V5Y2hhaW4ucHJ2KS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBkZWNvZGVkQmFja3VwUHJ2ID0gVXRpbHMuZGVjb2RlUHJpdmF0ZUtleShiYWNrdXBLZXljaGFpbi5wcnYpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgZGVjb2RlZFBydi5zaG91bGQuZXF1YWwocm9vdEtleWNoYWluLnBydi5zbGljZSgwLCA2NCkpO1xuICAgICAgZGVjb2RlZEJhY2t1cFBydi5zaG91bGQuZXF1YWwoYmFja3VwUm9vdEtleWNoYWluLnBydi5zbGljZSgwLCA2NCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY3JlYXRlIFN0ZWxsYXIga2V5cGFpcnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBTdGVsbGFyIGtleXBhaXIgZ2l2ZW4gYSBTdGVsbGFyIHB1YmxpYyBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlwYWlyID0gVXRpbHMuY3JlYXRlU3RlbGxhcktleXBhaXJGcm9tUHViKHVzZXJLZXljaGFpbi5wdWIpO1xuICAgICAgY29uc3QgYmFja3VwS2V5cGFpciA9IFV0aWxzLmNyZWF0ZVN0ZWxsYXJLZXlwYWlyRnJvbVB1YihiYWNrdXBLZXljaGFpbi5wdWIpO1xuXG4gICAgICBrZXlwYWlyLnB1YmxpY0tleSgpLnNob3VsZC5lcXVhbCh1c2VyS2V5Y2hhaW4ucHViKTtcbiAgICAgIGJhY2t1cEtleXBhaXIucHVibGljS2V5KCkuc2hvdWxkLmVxdWFsKGJhY2t1cEtleWNoYWluLnB1Yik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIFN0ZWxsYXIga2V5cGFpciBnaXZlbiBhIHJhdyBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5cGFpciA9IFV0aWxzLmNyZWF0ZVN0ZWxsYXJLZXlwYWlyRnJvbVB1Yihyb290S2V5Y2hhaW4ucHViKTtcbiAgICAgIGNvbnN0IGJhY2t1cEtleXBhaXIgPSBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QdWIoYmFja3VwUm9vdEtleWNoYWluLnB1Yik7XG5cbiAgICAgIGtleXBhaXIucHVibGljS2V5KCkuc2hvdWxkLmVxdWFsKHVzZXJLZXljaGFpbi5wdWIpO1xuICAgICAgYmFja3VwS2V5cGFpci5wdWJsaWNLZXkoKS5zaG91bGQuZXF1YWwoYmFja3VwS2V5Y2hhaW4ucHViKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgU3RlbGxhciBrZXlwYWlyIGdpdmVuIGEgU3RlbGxhciBwcml2YXRlIGtleScsICgpID0+IHtcbiAgICAgIGNvbnN0IGtleXBhaXIgPSBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QcnYodXNlcktleWNoYWluLnBydik7XG4gICAgICBjb25zdCBiYWNrdXBLZXlwYWlyID0gVXRpbHMuY3JlYXRlU3RlbGxhcktleXBhaXJGcm9tUHJ2KGJhY2t1cEtleWNoYWluLnBydik7XG5cbiAgICAgIGtleXBhaXIucHVibGljS2V5KCkuc2hvdWxkLmVxdWFsKHVzZXJLZXljaGFpbi5wdWIpO1xuICAgICAgYmFja3VwS2V5cGFpci5wdWJsaWNLZXkoKS5zaG91bGQuZXF1YWwoYmFja3VwS2V5Y2hhaW4ucHViKTtcbiAgICAgIGtleXBhaXIuc2VjcmV0KCkuc2hvdWxkLmVxdWFsKHVzZXJLZXljaGFpbi5wcnYpO1xuICAgICAgYmFja3VwS2V5cGFpci5zZWNyZXQoKS5zaG91bGQuZXF1YWwoYmFja3VwS2V5Y2hhaW4ucHJ2KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgU3RlbGxhciBrZXlwYWlyIGdpdmVuIGEgcmF3IHByaXZhdGUga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5cGFpciA9IFV0aWxzLmNyZWF0ZVN0ZWxsYXJLZXlwYWlyRnJvbVBydihyb290S2V5Y2hhaW4ucHJ2KTtcbiAgICAgIGNvbnN0IGJhY2t1cEtleXBhaXIgPSBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QcnYoYmFja3VwUm9vdEtleWNoYWluLnBydik7XG5cbiAgICAgIGtleXBhaXIucHVibGljS2V5KCkuc2hvdWxkLmVxdWFsKHVzZXJLZXljaGFpbi5wdWIpO1xuICAgICAgYmFja3VwS2V5cGFpci5wdWJsaWNLZXkoKS5zaG91bGQuZXF1YWwoYmFja3VwS2V5Y2hhaW4ucHViKTtcbiAgICAgIGtleXBhaXIuc2VjcmV0KCkuc2hvdWxkLmVxdWFsKHVzZXJLZXljaGFpbi5wcnYpO1xuICAgICAgYmFja3VwS2V5cGFpci5zZWNyZXQoKS5zaG91bGQuZXF1YWwoYmFja3VwS2V5Y2hhaW4ucHJ2KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBjcmVhdGUgYSBTdGVsbGFyIGtleXBhaXIgZ2l2ZW4gYW4gaW52YWxpZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgLy8gbm9uIEctcHJlZml4ZWQsIHNvIHRoaXMgc2hvdWxkIGZhaWwgd2l0aCBpbnZhbGlkIHJvb3Qga2V5XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IFV0aWxzLmNyZWF0ZVN0ZWxsYXJLZXlwYWlyRnJvbVB1YignaW52YWxpZCcpLCAvRXJyb3I6IEludmFsaWQgcm9vdCBwdWJsaWMga2V5Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gY3JlYXRlIGEgU3RlbGxhciBrZXlwYWlyIGdpdmVuIGFuIGludmFsaWQgRy1wcmVmaXhlZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QdWIoJ0dJTlZBTElEJyksIC9FcnJvcjogSW52YWxpZCBTdGVsbGFyIHB1YmxpYyBrZXkvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBjcmVhdGUgYSBTdGVsbGFyIGtleXBhaXIgZ2l2ZW4gYW4gaW52YWxpZCBwcml2YXRlIGtleScsICgpID0+IHtcbiAgICAgIC8vIG5vbiBTLXByZWZpeGVkLCBzbyB0aGlzIHNob3VsZCBmYWlsIHdpdGggaW52YWxpZCByb290IGtleVxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QcnYoJ2ludmFsaWQnKSwgL0Vycm9yOiBJbnZhbGlkIHJvb3QgcHJpdmF0ZSBrZXkvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBjcmVhdGUgYSBTdGVsbGFyIGtleXBhaXIgZ2l2ZW4gYW4gaW52YWxpZCBTLXByZWZpeGVkIHByaXZhdGUga2V5JywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QcnYoJ1NJTlZBTElEJyksIC9FcnJvcjogSW52YWxpZCBTdGVsbGFyIHByaXZhdGUga2V5Lyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=xlm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlm.d.ts","sourceRoot":"","sources":["../../../test/unit/xlm.ts"],"names":[],"mappings":""}