PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-algo/dist/test/unit/lib

Просмотр файла: keyPair.js

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const should_1 = __importDefault(require("should"));
const src_1 = require("../../../src");
const AlgoResources = __importStar(require("../../fixtures/resources"));
describe('Algo KeyPair', () => {
    const defaultSeed = { seed: Buffer.alloc(32) };
    const { accounts: { account1, account2, account3, default: defaultAccount }, } = AlgoResources;
    describe('Keypair creation', () => {
        it('initial state', () => {
            const keyPair = new src_1.AlgoLib.KeyPair();
            should_1.default.exists(keyPair.getKeys().prv);
            should_1.default.exists(keyPair.getKeys().pub);
            should_1.default.equal(keyPair.getKeys().prv.length, 64);
            should_1.default.equal(keyPair.getKeys().pub.length, 64);
        });
        it('initialization from private key', () => {
            let keyPair = new src_1.AlgoLib.KeyPair({ prv: account1.secretKey.toString('hex') });
            should_1.default.equal(keyPair.getKeys().prv, account1.secretKey.toString('hex'));
            should_1.default.equal(keyPair.getKeys().pub, account1.pubKey.toString('hex'));
            keyPair = new src_1.AlgoLib.KeyPair({ prv: account2.secretKey.toString('hex') });
            should_1.default.equal(keyPair.getKeys().prv, account2.secretKey.toString('hex'));
            should_1.default.equal(keyPair.getKeys().pub, account2.pubKey.toString('hex'));
        });
        it('initialization from public key', () => {
            const keyPair = new src_1.AlgoLib.KeyPair({ pub: account3.pubKey.toString('hex') });
            should_1.default.equal(keyPair.getKeys().pub, account3.pubKey.toString('hex'));
        });
    });
    describe('KeyPair validation', () => {
        it('should fail to create from an invalid seed', () => {
            const seed = { seed: Buffer.alloc(8) }; //  Seed should be 512 bits (64 bytes)
            assert_1.default.throws(() => new src_1.AlgoLib.KeyPair(seed), /bad seed size/);
        });
        it('should fail to create from an invalid public key', () => {
            const source = {
                pub: '01D63D',
            };
            assert_1.default.throws(() => new src_1.AlgoLib.KeyPair(source), /address seems to be malformed/);
        });
        it('should fail to create from an invalid private key', () => {
            const source = {
                prv: '82A34',
            };
            assert_1.default.throws(() => new src_1.AlgoLib.KeyPair(source), /Invalid base32 characters/);
        });
    });
    describe('getAddress', () => {
        it('should get an address', () => {
            let keyPair = new src_1.AlgoLib.KeyPair(defaultSeed);
            let address = keyPair.getAddress();
            address.should.equal(defaultAccount.address);
            keyPair = new src_1.AlgoLib.KeyPair({ prv: account2.secretKey.toString('hex') });
            address = keyPair.getAddress();
            address.should.equal(account2.address);
        });
    });
    describe('getKeys', () => {
        it('should get private and public keys in the protocol default format', () => {
            const keyPair = new src_1.AlgoLib.KeyPair(defaultSeed);
            const { prv, pub } = keyPair.getKeys();
            prv.should.equal(defaultAccount.secretKey.toString('hex'));
            pub.should.equal(defaultAccount.pubKey.toString('hex'));
        });
        it('should get private and public keys for a random seed', () => {
            const keyPair = new src_1.AlgoLib.KeyPair();
            const { prv, pub } = keyPair.getKeys();
            should_1.default.exist(prv);
            should_1.default.exist(pub);
        });
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsc0NBQStDO0FBQy9DLHdFQUEwRDtBQUUxRCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixNQUFNLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFL0MsTUFBTSxFQUNKLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FDcEUsR0FBRyxhQUFhLENBQUM7SUFFbEIsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUNoQyxFQUFFLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGlDQUFp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TyxFQUFFLENBQUM7WUFDbkMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgQWxnb0xpYiBhcyBBbGdvIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIEFsZ29SZXNvdXJjZXMgZnJvbSAnLi4vLi4vZml4dHVyZXMvcmVzb3VyY2VzJztcblxuZGVzY3JpYmUoJ0FsZ28gS2V5UGFpcicsICgpID0+IHtcbiAgY29uc3QgZGVmYXVsdFNlZWQgPSB7IHNlZWQ6IEJ1ZmZlci5hbGxvYygzMikgfTtcblxuICBjb25zdCB7XG4gICAgYWNjb3VudHM6IHsgYWNjb3VudDEsIGFjY291bnQyLCBhY2NvdW50MywgZGVmYXVsdDogZGVmYXVsdEFjY291bnQgfSxcbiAgfSA9IEFsZ29SZXNvdXJjZXM7XG5cbiAgZGVzY3JpYmUoJ0tleXBhaXIgY3JlYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2luaXRpYWwgc3RhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEFsZ28uS2V5UGFpcigpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wcnYpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleVBhaXIuZ2V0S2V5cygpLnBydiEubGVuZ3RoLCA2NCk7XG4gICAgICBzaG91bGQuZXF1YWwoa2V5UGFpci5nZXRLZXlzKCkucHViLmxlbmd0aCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2luaXRpYWxpemF0aW9uIGZyb20gcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgICBsZXQga2V5UGFpciA9IG5ldyBBbGdvLktleVBhaXIoeyBwcnY6IGFjY291bnQxLnNlY3JldEtleS50b1N0cmluZygnaGV4JykgfSk7XG4gICAgICBzaG91bGQuZXF1YWwoa2V5UGFpci5nZXRLZXlzKCkucHJ2LCBhY2NvdW50MS5zZWNyZXRLZXkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICAgIHNob3VsZC5lcXVhbChrZXlQYWlyLmdldEtleXMoKS5wdWIsIGFjY291bnQxLnB1YktleS50b1N0cmluZygnaGV4JykpO1xuXG4gICAgICBrZXlQYWlyID0gbmV3IEFsZ28uS2V5UGFpcih7IHBydjogYWNjb3VudDIuc2VjcmV0S2V5LnRvU3RyaW5nKCdoZXgnKSB9KTtcbiAgICAgIHNob3VsZC5lcXVhbChrZXlQYWlyLmdldEtleXMoKS5wcnYsIGFjY291bnQyLnNlY3JldEtleS50b1N0cmluZygnaGV4JykpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleVBhaXIuZ2V0S2V5cygpLnB1YiwgYWNjb3VudDIucHViS2V5LnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaW5pdGlhbGl6YXRpb24gZnJvbSBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBBbGdvLktleVBhaXIoeyBwdWI6IGFjY291bnQzLnB1YktleS50b1N0cmluZygnaGV4JykgfSk7XG4gICAgICBzaG91bGQuZXF1YWwoa2V5UGFpci5nZXRLZXlzKCkucHViLCBhY2NvdW50My5wdWJLZXkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0tleVBhaXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gY3JlYXRlIGZyb20gYW4gaW52YWxpZCBzZWVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VlZCA9IHsgc2VlZDogQnVmZmVyLmFsbG9jKDgpIH07IC8vICBTZWVkIHNob3VsZCBiZSA1MTIgYml0cyAoNjQgYnl0ZXMpXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBBbGdvLktleVBhaXIoc2VlZCksIC9iYWQgc2VlZCBzaXplLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gY3JlYXRlIGZyb20gYW4gaW52YWxpZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0ge1xuICAgICAgICBwdWI6ICcwMUQ2M0QnLFxuICAgICAgfTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IEFsZ28uS2V5UGFpcihzb3VyY2UpLCAvYWRkcmVzcyBzZWVtcyB0byBiZSBtYWxmb3JtZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBjcmVhdGUgZnJvbSBhbiBpbnZhbGlkIHByaXZhdGUga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0ge1xuICAgICAgICBwcnY6ICc4MkEzNCcsXG4gICAgICB9O1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgQWxnby5LZXlQYWlyKHNvdXJjZSksIC9JbnZhbGlkIGJhc2UzMiBjaGFyYWN0ZXJzLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRBZGRyZXNzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZ2V0IGFuIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBsZXQga2V5UGFpciA9IG5ldyBBbGdvLktleVBhaXIoZGVmYXVsdFNlZWQpO1xuICAgICAgbGV0IGFkZHJlc3MgPSBrZXlQYWlyLmdldEFkZHJlc3MoKTtcbiAgICAgIGFkZHJlc3Muc2hvdWxkLmVxdWFsKGRlZmF1bHRBY2NvdW50LmFkZHJlc3MpO1xuXG4gICAgICBrZXlQYWlyID0gbmV3IEFsZ28uS2V5UGFpcih7IHBydjogYWNjb3VudDIuc2VjcmV0S2V5LnRvU3RyaW5nKCdoZXgnKSB9KTtcbiAgICAgIGFkZHJlc3MgPSBrZXlQYWlyLmdldEFkZHJlc3MoKTtcbiAgICAgIGFkZHJlc3Muc2hvdWxkLmVxdWFsKGFjY291bnQyLmFkZHJlc3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0S2V5cycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdldCBwcml2YXRlIGFuZCBwdWJsaWMga2V5cyBpbiB0aGUgcHJvdG9jb2wgZGVmYXVsdCBmb3JtYXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEFsZ28uS2V5UGFpcihkZWZhdWx0U2VlZCk7XG4gICAgICBjb25zdCB7IHBydiwgcHViIH0gPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICAgIHBydiEuc2hvdWxkLmVxdWFsKGRlZmF1bHRBY2NvdW50LnNlY3JldEtleS50b1N0cmluZygnaGV4JykpO1xuICAgICAgcHViLnNob3VsZC5lcXVhbChkZWZhdWx0QWNjb3VudC5wdWJLZXkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHByaXZhdGUgYW5kIHB1YmxpYyBrZXlzIGZvciBhIHJhbmRvbSBzZWVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBBbGdvLktleVBhaXIoKTtcbiAgICAgIGNvbnN0IHsgcHJ2LCBwdWIgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgICAgc2hvdWxkLmV4aXN0KHBydik7XG4gICAgICBzaG91bGQuZXhpc3QocHViKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==

Выполнить команду


Для локальной разработки. Не используйте в интернете!