PHP WebShell

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

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * @prettier
 */
require("should");
const utxo_lib_1 = require("@bitgo/utxo-lib");
const sdk_core_1 = require("@bitgo/sdk-core");
const sdk_test_1 = require("@bitgo/sdk-test");
const { HDNode, hdPath } = sdk_core_1.bitcoin;
describe('bip32util', function () {
    const seed = (0, sdk_test_1.getSeed)('bip32test');
    const testKeyBip32Master = utxo_lib_1.bip32.fromSeed(seed);
    const testKeyBip32Child = testKeyBip32Master.derivePath('m/0');
    const testKeyHDPathMaster = HDNode.fromSeedBuffer(seed);
    const testKeyHDPathChild = testKeyHDPathMaster.derivePath('m/0');
    /**
     * Asserts that all inputs convert to the same reference path.
     * Asserts that
     *    refBIP32.derivePath(refPath) === refHDPath.derive(fromLegacyPath(p))
     *
     * @param inputs - array of paths that are equivalent. The first element is the reference path.
     * @param refBIP32 - bip32 node
     * @param refHDPath - `hdPath()` helper node
     */
    function runTest(inputs, refBIP32, refHDPath) {
        if (!refHDPath) {
            throw new Error(`invalid state`);
        }
        if (inputs.length === 0) {
            throw new Error(`invalid argument`);
        }
        const refPath = inputs[0];
        inputs.forEach((p) => {
            (0, sdk_core_1.sanitizeLegacyPath)(p).should.eql(refPath, `sanitizeLegacyPath(${p})=${(0, sdk_core_1.sanitizeLegacyPath)(p)}, refPath=${refPath}`);
            refBIP32
                .derivePath(refPath)
                .toBase58() //
                .should.eql(refHDPath.derive(p).toBase58());
            refBIP32
                .derivePath(refPath)
                .publicKey.toString('hex')
                .should.eql(refHDPath.deriveKey(p).getPublicKeyBuffer().toString('hex'));
        });
    }
    function runTestDerivePublic(inputs) {
        runTest(inputs, testKeyBip32Master.neutered(), hdPath(testKeyHDPathMaster.neutered()));
        runTest(inputs, testKeyBip32Child.neutered(), hdPath(testKeyHDPathChild.neutered()));
    }
    function runTestDerivePrivate(inputs) {
        runTest(inputs, testKeyBip32Master, hdPath(testKeyHDPathMaster));
        runTest(inputs, testKeyBip32Child, hdPath(testKeyHDPathChild));
    }
    it('sanitizeLegacyPath', function () {
        // public derivation is much too tolerant of invalid segments
        runTestDerivePublic(['0', '/0', '////m/0', '0m', 'lol', 'm/0', 'm/m', 'm/lol', '0x10']);
        runTestDerivePublic(['0/0', '/0/0', '0////0', '0/m', '/0/m', '0/0m']);
        runTestDerivePublic(['0/0/0', '/0//0//0', 'm/m/m/m', '/0/0m/0m']);
        runTestDerivePublic(['1', '1lol']);
        // private derivation follows a somewhat different codepath that doesn't attempt to cast
        // every path component to base10
        runTestDerivePrivate(["0'", "m/0'", "//m//0'"]);
        runTestDerivePrivate(["1'", "m/1'", "//m//1'"]);
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJwYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2JpcDMycGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztHQUVHO0FBQ0gsa0JBQWdCO0FBQ2hCLDhDQUF3RDtBQUN4RCw4Q0FBOEQ7QUFDOUQsOENBQTBDO0FBQzFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsa0JBQU8sQ0FBQztBQUduQyxRQUFRLENBQUMsV0FBVyxFQUFFO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUEsa0JBQU8sRUFBQyxXQUFXLENBQUMsQ0FBQztJQUVsQyxNQUFNLGtCQUFrQixHQUFHLGdCQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRS9ELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqRTs7Ozs7Ozs7T0FRRztJQUNILFNBQVMsT0FBTyxDQUFDLE1BQWdCLEVBQUUsUUFBd0IsRUFBRSxTQUFvQjtRQUMvRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25CLElBQUEsNkJBQWtCLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDOUIsT0FBTyxFQUNQLHNCQUFzQixDQUFDLEtBQUssSUFBQSw2QkFBa0IsRUFBQyxDQUFDLENBQUMsYUFBYSxPQUFPLEVBQUUsQ0FDeEUsQ0FBQztZQUNGLFFBQVE7aUJBQ0wsVUFBVSxDQUFDLE9BQU8sQ0FBQztpQkFDbkIsUUFBUSxFQUFFLENBQUMsRUFBRTtpQkFDYixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUU5QyxRQUFRO2lCQUNMLFVBQVUsQ0FBQyxPQUFPLENBQUM7aUJBQ25CLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLG1CQUFtQixDQUFDLE1BQWdCO1FBQzNDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RixPQUFPLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELFNBQVMsb0JBQW9CLENBQUMsTUFBZ0I7UUFDNUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsRUFBRSxDQUFDLG9CQUFvQixFQUFFO1FBQ3ZCLDZEQUE2RDtRQUM3RCxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4RixtQkFBbUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RSxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVuQyx3RkFBd0Y7UUFDeEYsaUNBQWlDO1FBQ2pDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2hELG9CQUFvQixDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBiaXAzMiwgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgc2FuaXRpemVMZWdhY3lQYXRoLCBiaXRjb2luIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGdldFNlZWQgfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuY29uc3QgeyBIRE5vZGUsIGhkUGF0aCB9ID0gYml0Y29pbjtcbnR5cGUgRGVyaXZhYmxlID0gYml0Y29pbi5EZXJpdmFibGU7XG5cbmRlc2NyaWJlKCdiaXAzMnV0aWwnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlZWQgPSBnZXRTZWVkKCdiaXAzMnRlc3QnKTtcblxuICBjb25zdCB0ZXN0S2V5QmlwMzJNYXN0ZXIgPSBiaXAzMi5mcm9tU2VlZChzZWVkKTtcbiAgY29uc3QgdGVzdEtleUJpcDMyQ2hpbGQgPSB0ZXN0S2V5QmlwMzJNYXN0ZXIuZGVyaXZlUGF0aCgnbS8wJyk7XG5cbiAgY29uc3QgdGVzdEtleUhEUGF0aE1hc3RlciA9IEhETm9kZS5mcm9tU2VlZEJ1ZmZlcihzZWVkKTtcbiAgY29uc3QgdGVzdEtleUhEUGF0aENoaWxkID0gdGVzdEtleUhEUGF0aE1hc3Rlci5kZXJpdmVQYXRoKCdtLzAnKTtcblxuICAvKipcbiAgICogQXNzZXJ0cyB0aGF0IGFsbCBpbnB1dHMgY29udmVydCB0byB0aGUgc2FtZSByZWZlcmVuY2UgcGF0aC5cbiAgICogQXNzZXJ0cyB0aGF0XG4gICAqICAgIHJlZkJJUDMyLmRlcml2ZVBhdGgocmVmUGF0aCkgPT09IHJlZkhEUGF0aC5kZXJpdmUoZnJvbUxlZ2FjeVBhdGgocCkpXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dHMgLSBhcnJheSBvZiBwYXRocyB0aGF0IGFyZSBlcXVpdmFsZW50LiBUaGUgZmlyc3QgZWxlbWVudCBpcyB0aGUgcmVmZXJlbmNlIHBhdGguXG4gICAqIEBwYXJhbSByZWZCSVAzMiAtIGJpcDMyIG5vZGVcbiAgICogQHBhcmFtIHJlZkhEUGF0aCAtIGBoZFBhdGgoKWAgaGVscGVyIG5vZGVcbiAgICovXG4gIGZ1bmN0aW9uIHJ1blRlc3QoaW5wdXRzOiBzdHJpbmdbXSwgcmVmQklQMzI6IEJJUDMySW50ZXJmYWNlLCByZWZIRFBhdGg6IERlcml2YWJsZSkge1xuICAgIGlmICghcmVmSERQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc3RhdGVgKTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFyZ3VtZW50YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVmUGF0aCA9IGlucHV0c1swXTtcblxuICAgIGlucHV0cy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICBzYW5pdGl6ZUxlZ2FjeVBhdGgocCkuc2hvdWxkLmVxbChcbiAgICAgICAgcmVmUGF0aCxcbiAgICAgICAgYHNhbml0aXplTGVnYWN5UGF0aCgke3B9KT0ke3Nhbml0aXplTGVnYWN5UGF0aChwKX0sIHJlZlBhdGg9JHtyZWZQYXRofWBcbiAgICAgICk7XG4gICAgICByZWZCSVAzMlxuICAgICAgICAuZGVyaXZlUGF0aChyZWZQYXRoKVxuICAgICAgICAudG9CYXNlNTgoKSAvL1xuICAgICAgICAuc2hvdWxkLmVxbChyZWZIRFBhdGguZGVyaXZlKHApLnRvQmFzZTU4KCkpO1xuXG4gICAgICByZWZCSVAzMlxuICAgICAgICAuZGVyaXZlUGF0aChyZWZQYXRoKVxuICAgICAgICAucHVibGljS2V5LnRvU3RyaW5nKCdoZXgnKVxuICAgICAgICAuc2hvdWxkLmVxbChyZWZIRFBhdGguZGVyaXZlS2V5KHApLmdldFB1YmxpY0tleUJ1ZmZlcigpLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBydW5UZXN0RGVyaXZlUHVibGljKGlucHV0czogc3RyaW5nW10pIHtcbiAgICBydW5UZXN0KGlucHV0cywgdGVzdEtleUJpcDMyTWFzdGVyLm5ldXRlcmVkKCksIGhkUGF0aCh0ZXN0S2V5SERQYXRoTWFzdGVyLm5ldXRlcmVkKCkpKTtcbiAgICBydW5UZXN0KGlucHV0cywgdGVzdEtleUJpcDMyQ2hpbGQubmV1dGVyZWQoKSwgaGRQYXRoKHRlc3RLZXlIRFBhdGhDaGlsZC5uZXV0ZXJlZCgpKSk7XG4gIH1cblxuICBmdW5jdGlvbiBydW5UZXN0RGVyaXZlUHJpdmF0ZShpbnB1dHM6IHN0cmluZ1tdKSB7XG4gICAgcnVuVGVzdChpbnB1dHMsIHRlc3RLZXlCaXAzMk1hc3RlciwgaGRQYXRoKHRlc3RLZXlIRFBhdGhNYXN0ZXIpKTtcbiAgICBydW5UZXN0KGlucHV0cywgdGVzdEtleUJpcDMyQ2hpbGQsIGhkUGF0aCh0ZXN0S2V5SERQYXRoQ2hpbGQpKTtcbiAgfVxuXG4gIGl0KCdzYW5pdGl6ZUxlZ2FjeVBhdGgnLCBmdW5jdGlvbiAoKSB7XG4gICAgLy8gcHVibGljIGRlcml2YXRpb24gaXMgbXVjaCB0b28gdG9sZXJhbnQgb2YgaW52YWxpZCBzZWdtZW50c1xuICAgIHJ1blRlc3REZXJpdmVQdWJsaWMoWycwJywgJy8wJywgJy8vLy9tLzAnLCAnMG0nLCAnbG9sJywgJ20vMCcsICdtL20nLCAnbS9sb2wnLCAnMHgxMCddKTtcbiAgICBydW5UZXN0RGVyaXZlUHVibGljKFsnMC8wJywgJy8wLzAnLCAnMC8vLy8wJywgJzAvbScsICcvMC9tJywgJzAvMG0nXSk7XG4gICAgcnVuVGVzdERlcml2ZVB1YmxpYyhbJzAvMC8wJywgJy8wLy8wLy8wJywgJ20vbS9tL20nLCAnLzAvMG0vMG0nXSk7XG4gICAgcnVuVGVzdERlcml2ZVB1YmxpYyhbJzEnLCAnMWxvbCddKTtcblxuICAgIC8vIHByaXZhdGUgZGVyaXZhdGlvbiBmb2xsb3dzIGEgc29tZXdoYXQgZGlmZmVyZW50IGNvZGVwYXRoIHRoYXQgZG9lc24ndCBhdHRlbXB0IHRvIGNhc3RcbiAgICAvLyBldmVyeSBwYXRoIGNvbXBvbmVudCB0byBiYXNlMTBcbiAgICBydW5UZXN0RGVyaXZlUHJpdmF0ZShbXCIwJ1wiLCBcIm0vMCdcIiwgXCIvL20vLzAnXCJdKTtcbiAgICBydW5UZXN0RGVyaXZlUHJpdmF0ZShbXCIxJ1wiLCBcIm0vMSdcIiwgXCIvL20vLzEnXCJdKTtcbiAgfSk7XG59KTtcbiJdfQ==

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


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