PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/utxo-lib/dist/src/bitgo

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.privateKeyBufferToECPair = privateKeyBufferToECPair;
exports.privateKeyBufferFromECPair = privateKeyBufferFromECPair;
exports.convertExtendedKeyNetwork = convertExtendedKeyNetwork;
const bs58check = require("bs58check");
const noble_ecc_1 = require("../noble_ecc");
/**
 * Create an ECPair from the raw private key bytes
 * @param {Buffer} buffer - Private key for the ECPair. Must be exactly 32 bytes.
 * @param {Object} [network] - Network for the ECPair. Defaults to bitcoin.
 * @return {ECPair}
 */
function privateKeyBufferToECPair(buffer, network) {
    if (!Buffer.isBuffer(buffer) || buffer.length !== 32) {
        throw new Error('invalid private key buffer');
    }
    return noble_ecc_1.ECPair.fromPrivateKey(buffer);
}
/**
 * Get the private key as a 32 bytes buffer. If it is smaller than 32 bytes, pad it with zeros
 * @param {ECPair} ecPair
 * @return Buffer 32 bytes
 */
function privateKeyBufferFromECPair(ecPair) {
    if (ecPair.constructor.name !== 'ECPair') {
        throw new TypeError(`invalid argument ecpair`);
    }
    const privkey = ecPair.privateKey;
    if (!Buffer.isBuffer(privkey)) {
        throw new Error(`unexpected privkey type`);
    }
    if (privkey.length !== 32) {
        throw new Error(`unexpected privkey length`);
    }
    return privkey;
}
/**
 * Converts an extended key from one network to another by updating its version bytes.
 *
 * Handles both public and private keys, allowing conversion between networks like
 * Bitcoin Mainnet and Testnet.
 *
 * @returns The extended key with the updated network version.
 */
function convertExtendedKeyNetwork(extendedKey, fromNetwork, targetNetwork) {
    if (fromNetwork === targetNetwork) {
        return extendedKey;
    }
    const decodedData = bs58check.decode(extendedKey);
    const hdNode = noble_ecc_1.bip32.fromBase58(extendedKey, fromNetwork);
    const targetVersionBytes = hdNode.isNeutered() ? targetNetwork.bip32.public : targetNetwork.bip32.private;
    const versionBuffer = Buffer.alloc(4);
    versionBuffer.writeUInt32BE(targetVersionBytes, 0);
    versionBuffer.copy(decodedData, 0, 0, 4);
    return bs58check.encode(decodedData);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5dXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9rZXl1dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBV0EsNERBTUM7QUFPRCxnRUFjQztBQVVELDhEQVdDO0FBMURELHVDQUF1QztBQUV2Qyw0Q0FBNkM7QUFFN0M7Ozs7O0dBS0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxNQUFjLEVBQUUsT0FBaUI7SUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE9BQU8sa0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxNQUF1QjtJQUNoRSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxTQUFTLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxXQUFtQixFQUFFLFdBQW9CLEVBQUUsYUFBc0I7SUFDekcsSUFBSSxXQUFXLEtBQUssYUFBYSxFQUFFLENBQUM7UUFDbEMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsaUJBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDMUcsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxhQUFhLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFQ1BhaXJJbnRlcmZhY2UgfSBmcm9tICdlY3BhaXInO1xuaW1wb3J0ICogYXMgYnM1OGNoZWNrIGZyb20gJ2JzNThjaGVjayc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgYmlwMzIsIEVDUGFpciB9IGZyb20gJy4uL25vYmxlX2VjYyc7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVDUGFpciBmcm9tIHRoZSByYXcgcHJpdmF0ZSBrZXkgYnl0ZXNcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgLSBQcml2YXRlIGtleSBmb3IgdGhlIEVDUGFpci4gTXVzdCBiZSBleGFjdGx5IDMyIGJ5dGVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtuZXR3b3JrXSAtIE5ldHdvcmsgZm9yIHRoZSBFQ1BhaXIuIERlZmF1bHRzIHRvIGJpdGNvaW4uXG4gKiBAcmV0dXJuIHtFQ1BhaXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcml2YXRlS2V5QnVmZmVyVG9FQ1BhaXIoYnVmZmVyOiBCdWZmZXIsIG5ldHdvcms/OiBOZXR3b3JrKTogRUNQYWlySW50ZXJmYWNlIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSB8fCBidWZmZXIubGVuZ3RoICE9PSAzMikge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwcml2YXRlIGtleSBidWZmZXInKTtcbiAgfVxuXG4gIHJldHVybiBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoYnVmZmVyKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByaXZhdGUga2V5IGFzIGEgMzIgYnl0ZXMgYnVmZmVyLiBJZiBpdCBpcyBzbWFsbGVyIHRoYW4gMzIgYnl0ZXMsIHBhZCBpdCB3aXRoIHplcm9zXG4gKiBAcGFyYW0ge0VDUGFpcn0gZWNQYWlyXG4gKiBAcmV0dXJuIEJ1ZmZlciAzMiBieXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpdmF0ZUtleUJ1ZmZlckZyb21FQ1BhaXIoZWNQYWlyOiBFQ1BhaXJJbnRlcmZhY2UpOiBCdWZmZXIge1xuICBpZiAoZWNQYWlyLmNvbnN0cnVjdG9yLm5hbWUgIT09ICdFQ1BhaXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBhcmd1bWVudCBlY3BhaXJgKTtcbiAgfVxuXG4gIGNvbnN0IHByaXZrZXkgPSBlY1BhaXIucHJpdmF0ZUtleTtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdmtleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgcHJpdmtleSB0eXBlYCk7XG4gIH1cbiAgaWYgKHByaXZrZXkubGVuZ3RoICE9PSAzMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBwcml2a2V5IGxlbmd0aGApO1xuICB9XG5cbiAgcmV0dXJuIHByaXZrZXk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gZXh0ZW5kZWQga2V5IGZyb20gb25lIG5ldHdvcmsgdG8gYW5vdGhlciBieSB1cGRhdGluZyBpdHMgdmVyc2lvbiBieXRlcy5cbiAqXG4gKiBIYW5kbGVzIGJvdGggcHVibGljIGFuZCBwcml2YXRlIGtleXMsIGFsbG93aW5nIGNvbnZlcnNpb24gYmV0d2VlbiBuZXR3b3JrcyBsaWtlXG4gKiBCaXRjb2luIE1haW5uZXQgYW5kIFRlc3RuZXQuXG4gKlxuICogQHJldHVybnMgVGhlIGV4dGVuZGVkIGtleSB3aXRoIHRoZSB1cGRhdGVkIG5ldHdvcmsgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRFeHRlbmRlZEtleU5ldHdvcmsoZXh0ZW5kZWRLZXk6IHN0cmluZywgZnJvbU5ldHdvcms6IE5ldHdvcmssIHRhcmdldE5ldHdvcms6IE5ldHdvcmspOiBzdHJpbmcge1xuICBpZiAoZnJvbU5ldHdvcmsgPT09IHRhcmdldE5ldHdvcmspIHtcbiAgICByZXR1cm4gZXh0ZW5kZWRLZXk7XG4gIH1cbiAgY29uc3QgZGVjb2RlZERhdGEgPSBiczU4Y2hlY2suZGVjb2RlKGV4dGVuZGVkS2V5KTtcbiAgY29uc3QgaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChleHRlbmRlZEtleSwgZnJvbU5ldHdvcmspO1xuICBjb25zdCB0YXJnZXRWZXJzaW9uQnl0ZXMgPSBoZE5vZGUuaXNOZXV0ZXJlZCgpID8gdGFyZ2V0TmV0d29yay5iaXAzMi5wdWJsaWMgOiB0YXJnZXROZXR3b3JrLmJpcDMyLnByaXZhdGU7XG4gIGNvbnN0IHZlcnNpb25CdWZmZXIgPSBCdWZmZXIuYWxsb2MoNCk7XG4gIHZlcnNpb25CdWZmZXIud3JpdGVVSW50MzJCRSh0YXJnZXRWZXJzaW9uQnl0ZXMsIDApO1xuICB2ZXJzaW9uQnVmZmVyLmNvcHkoZGVjb2RlZERhdGEsIDAsIDAsIDQpO1xuICByZXR1cm4gYnM1OGNoZWNrLmVuY29kZShkZWNvZGVkRGF0YSk7XG59XG4iXX0=

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


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