PHP WebShell

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

Просмотр файла: 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 NearResources = __importStar(require("../resources/near"));
describe('NEAR KeyPair', () => {
    const defaultSeed = { seed: Buffer.alloc(32) };
    const { accounts: { account1, account2, account3, account4, default: defaultAccount }, } = NearResources;
    describe('Keypair creation', () => {
        it('initial state', () => {
            const keyPair = new src_1.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.KeyPair({ prv: account1.secretKey });
            should_1.default.equal(keyPair.getKeys().prv, account1.secretKey);
            should_1.default.equal(keyPair.getKeys().pub, account1.publicKey);
            keyPair = new src_1.KeyPair({ prv: account2.secretKey });
            should_1.default.equal(keyPair.getKeys().prv, account2.secretKey);
            should_1.default.equal(keyPair.getKeys().pub, account2.publicKey);
            keyPair = new src_1.KeyPair({ prv: account3.secretKey });
            should_1.default.equal(keyPair.getAddress(), account3.address);
            should_1.default.equal(keyPair.getKeys().pub, account3.publicKey);
        });
        it('initialization from public key', () => {
            let keyPair = new src_1.KeyPair({ pub: account1.publicKey });
            should_1.default.equal(keyPair.getKeys().pub, account1.publicKey);
            keyPair = new src_1.KeyPair({ pub: account4.publicKey });
            should_1.default.equal(keyPair.getAddress(), account4.address);
        });
    });
    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.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.KeyPair(source), /Non-base58 character/);
        });
        it('should fail to create from an invalid private key', () => {
            const source = {
                prv: '82A34',
            };
            assert_1.default.throws(() => new src_1.KeyPair(source), /Non-base58 character/);
        });
    });
    describe('getAddress', () => {
        it('should get an address', () => {
            let keyPair = new src_1.KeyPair({ prv: account1.secretKey });
            let address = keyPair.getAddress();
            address.should.equal(account1.address);
            keyPair = new src_1.KeyPair({ prv: account2.secretKey });
            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.KeyPair(defaultSeed);
            const { prv, pub } = keyPair.getKeys();
            prv.should.equal(defaultAccount.secretKey);
            pub.should.equal(defaultAccount.publicKey);
            const address = keyPair.getAddress();
            address.should.equal(defaultAccount.address);
        });
        it('should get private and public keys for a random seed', () => {
            const keyPair = new src_1.KeyPair();
            const { prv, pub } = keyPair.getKeys();
            should_1.default.exist(prv);
            should_1.default.exist(pub);
        });
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUM1QixtQ0FBb0M7QUFDcEMsaUVBQW1EO0FBRW5ELFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzVCLE1BQU0sV0FBVyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUUvQyxNQUFNLEVBQ0osUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FDOUUsR0FBRyxhQUFhLENBQUM7SUFFbEIsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUNoQyxFQUFFLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQU8sRUFBRSxDQUFDO1lBQzlCLGdCQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUUs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WUFDckMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNEQUFzRCxFQUFFLEdBQUcsRUFBRTtZQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQU8sRUFBRSxDQUFDO1lBQzlCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgTmVhclJlc291cmNlcyBmcm9tICcuLi9yZXNvdXJjZXMvbmVhcic7XG5cbmRlc2NyaWJlKCdORUFSIEtleVBhaXInLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRTZWVkID0geyBzZWVkOiBCdWZmZXIuYWxsb2MoMzIpIH07XG5cbiAgY29uc3Qge1xuICAgIGFjY291bnRzOiB7IGFjY291bnQxLCBhY2NvdW50MiwgYWNjb3VudDMsIGFjY291bnQ0LCBkZWZhdWx0OiBkZWZhdWx0QWNjb3VudCB9LFxuICB9ID0gTmVhclJlc291cmNlcztcblxuICBkZXNjcmliZSgnS2V5cGFpciBjcmVhdGlvbicsICgpID0+IHtcbiAgICBpdCgnaW5pdGlhbCBzdGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcigpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wcnYpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleVBhaXIuZ2V0S2V5cygpLnBydiEubGVuZ3RoLCA2NCk7XG4gICAgICBzaG91bGQuZXF1YWwoa2V5UGFpci5nZXRLZXlzKCkucHViLmxlbmd0aCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2luaXRpYWxpemF0aW9uIGZyb20gcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgICBsZXQga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBhY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBzaG91bGQuZXF1YWwoa2V5UGFpci5nZXRLZXlzKCkucHJ2LCBhY2NvdW50MS5zZWNyZXRLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleVBhaXIuZ2V0S2V5cygpLnB1YiwgYWNjb3VudDEucHVibGljS2V5KTtcblxuICAgICAga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBhY2NvdW50Mi5zZWNyZXRLZXkgfSk7XG4gICAgICBzaG91bGQuZXF1YWwoa2V5UGFpci5nZXRLZXlzKCkucHJ2LCBhY2NvdW50Mi5zZWNyZXRLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleVBhaXIuZ2V0S2V5cygpLnB1YiwgYWNjb3VudDIucHVibGljS2V5KTtcblxuICAgICAga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBhY2NvdW50My5zZWNyZXRLZXkgfSk7XG4gICAgICBzaG91bGQuZXF1YWwoa2V5UGFpci5nZXRBZGRyZXNzKCksIGFjY291bnQzLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKGtleVBhaXIuZ2V0S2V5cygpLnB1YiwgYWNjb3VudDMucHVibGljS2V5KTtcbiAgICB9KTtcblxuICAgIGl0KCdpbml0aWFsaXphdGlvbiBmcm9tIHB1YmxpYyBrZXknLCAoKSA9PiB7XG4gICAgICBsZXQga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHViOiBhY2NvdW50MS5wdWJsaWNLZXkgfSk7XG4gICAgICBzaG91bGQuZXF1YWwoa2V5UGFpci5nZXRLZXlzKCkucHViLCBhY2NvdW50MS5wdWJsaWNLZXkpO1xuXG4gICAgICBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwdWI6IGFjY291bnQ0LnB1YmxpY0tleSB9KTtcbiAgICAgIHNob3VsZC5lcXVhbChrZXlQYWlyLmdldEFkZHJlc3MoKSwgYWNjb3VudDQuYWRkcmVzcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXlQYWlyIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGNyZWF0ZSBmcm9tIGFuIGludmFsaWQgc2VlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNlZWQgPSB7IHNlZWQ6IEJ1ZmZlci5hbGxvYyg4KSB9OyAvLyAgU2VlZCBzaG91bGQgYmUgNTEyIGJpdHMgKDY0IGJ5dGVzKVxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgS2V5UGFpcihzZWVkKSwgL2JhZCBzZWVkIHNpemUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBjcmVhdGUgZnJvbSBhbiBpbnZhbGlkIHB1YmxpYyBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2UgPSB7XG4gICAgICAgIHB1YjogJzAxRDYzRCcsXG4gICAgICB9O1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgS2V5UGFpcihzb3VyY2UpLCAvTm9uLWJhc2U1OCBjaGFyYWN0ZXIvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBjcmVhdGUgZnJvbSBhbiBpbnZhbGlkIHByaXZhdGUga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0ge1xuICAgICAgICBwcnY6ICc4MkEzNCcsXG4gICAgICB9O1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgS2V5UGFpcihzb3VyY2UpLCAvTm9uLWJhc2U1OCBjaGFyYWN0ZXIvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEFkZHJlc3MnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZXQgYW4gYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGxldCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IGFjY291bnQxLnNlY3JldEtleSB9KTtcbiAgICAgIGxldCBhZGRyZXNzID0ga2V5UGFpci5nZXRBZGRyZXNzKCk7XG4gICAgICBhZGRyZXNzLnNob3VsZC5lcXVhbChhY2NvdW50MS5hZGRyZXNzKTtcblxuICAgICAga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBhY2NvdW50Mi5zZWNyZXRLZXkgfSk7XG4gICAgICBhZGRyZXNzID0ga2V5UGFpci5nZXRBZGRyZXNzKCk7XG4gICAgICBhZGRyZXNzLnNob3VsZC5lcXVhbChhY2NvdW50Mi5hZGRyZXNzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEtleXMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZXQgcHJpdmF0ZSBhbmQgcHVibGljIGtleXMgaW4gdGhlIHByb3RvY29sIGRlZmF1bHQgZm9ybWF0JywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKGRlZmF1bHRTZWVkKTtcbiAgICAgIGNvbnN0IHsgcHJ2LCBwdWIgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgICAgcHJ2IS5zaG91bGQuZXF1YWwoZGVmYXVsdEFjY291bnQuc2VjcmV0S2V5KTtcbiAgICAgIHB1Yi5zaG91bGQuZXF1YWwoZGVmYXVsdEFjY291bnQucHVibGljS2V5KTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBrZXlQYWlyLmdldEFkZHJlc3MoKTtcbiAgICAgIGFkZHJlc3Muc2hvdWxkLmVxdWFsKGRlZmF1bHRBY2NvdW50LmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgcHJpdmF0ZSBhbmQgcHVibGljIGtleXMgZm9yIGEgcmFuZG9tIHNlZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoKTtcbiAgICAgIGNvbnN0IHsgcHJ2LCBwdWIgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgICAgc2hvdWxkLmV4aXN0KHBydik7XG4gICAgICBzaG91bGQuZXhpc3QocHViKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==

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


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