PHP WebShell

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

Просмотр файла: utils.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;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.createStellarKeypairFromPub = createStellarKeypairFromPub;
exports.createStellarKeypairFromPrv = createStellarKeypairFromPrv;
exports.isValidStellarPub = isValidStellarPub;
exports.isValidStellarPublicKey = isValidStellarPublicKey;
exports.isValidPublicKey = isValidPublicKey;
exports.isValidRootPublicKey = isValidRootPublicKey;
exports.isValidStellarPrv = isValidStellarPrv;
exports.isValidStellarPrivateKey = isValidStellarPrivateKey;
exports.isValidPrivateKey = isValidPrivateKey;
exports.isValidRootPrivateKey = isValidRootPrivateKey;
exports.encodePublicKey = encodePublicKey;
exports.encodePrivateKey = encodePrivateKey;
exports.decodePublicKey = decodePublicKey;
exports.decodePrivateKey = decodePrivateKey;
const sdk_core_1 = require("@bitgo/sdk-core");
const stellar = __importStar(require("stellar-sdk"));
/**
 * Creates a Stellar keypair from a public key.
 * Public key can be either a raw root public key (hex string) or a Stellar public key (prefixed with 'G')
 * @param pub Either hex root public key or Stellar public key
 * @returns Stellar keypair from the provided pub
 */
function createStellarKeypairFromPub(pub) {
    if (pub.startsWith('G')) {
        if (!isValidStellarPublicKey(pub)) {
            throw new Error('Invalid Stellar public key');
        }
        return stellar.Keypair.fromPublicKey(pub);
    }
    const encodedPub = encodePublicKey(Buffer.from(pub, 'hex'));
    if (!isValidStellarPublicKey(encodedPub)) {
        throw new Error('Invalid root public key');
    }
    return stellar.Keypair.fromPublicKey(encodedPub);
}
/**
 * Creates a Stellar keypair from a private key.
 * Private key can be either a raw root private key (hex string) or a Stellar private key (prefixed with 'S').
 * @param secret Either hex root private key or Stellar private key
 * @returns Stellar keypair from the provided prv
 */
function createStellarKeypairFromPrv(prv) {
    if (prv.startsWith('S')) {
        if (!isValidStellarPrivateKey(prv)) {
            throw new Error('Invalid Stellar private key');
        }
        return stellar.Keypair.fromSecret(prv);
    }
    const encodedPrv = encodePrivateKey(Buffer.from(prv.slice(0, 64), 'hex'));
    if (!isValidStellarPrivateKey(encodedPrv)) {
        throw new Error('Invalid root private key');
    }
    return stellar.Keypair.fromSecret(encodedPrv);
}
/**
 * @deprecated Use isValidStellarPublicKey instead
 *
 * Validates a Stellar public key
 * Stellar public keys are prefixed with 'G'
 * @param pub A Stellar public key to validate
 * @returns Whether the input is a valid Stellar public key
 */
function isValidStellarPub(pub) {
    return stellar.StrKey.isValidEd25519PublicKey(pub);
}
/**
 * Validates a Stellar public key
 * Stellar public keys are prefixed with 'G'
 * @param pub A Stellar public key to validate
 * @returns Whether the input is a valid Stellar public key
 */
function isValidStellarPublicKey(pub) {
    return stellar.StrKey.isValidEd25519PublicKey(pub);
}
/**
 * @deprecated Use isValidRootPublicKey instead
 *
 * Validates a ed25519 root public key
 * @param pub A hexadecimal public key to validate
 * @returns Whether the input is a valid public key
 */
function isValidPublicKey(pub) {
    return (0, sdk_core_1.isValidEd25519PublicKey)(pub);
}
/**
 * Validates a ed25519 root public key
 * @param pub A hexadecimal public key to validate
 * @returns Whether the input is a valid public key
 */
function isValidRootPublicKey(pub) {
    return (0, sdk_core_1.isValidEd25519PublicKey)(pub);
}
/**
 * @deprecated Use isValidStellarPrivateKey instead
 *
 * Validates a Stellar private key
 * Stellar private keys are prefixed with 'S'
 * @param seed A Stellar private key to validate
 * @returns Whether the input is a valid Stellar private key
 */
function isValidStellarPrv(seed) {
    return stellar.StrKey.isValidEd25519SecretSeed(seed);
}
/**
 * Validates a Stellar private key
 * Stellar private keys are prefixed with 'S'
 * @param seed A Stellar private key to validate
 * @returns Whether the input is a valid Stellar private key
 */
function isValidStellarPrivateKey(seed) {
    return stellar.StrKey.isValidEd25519SecretSeed(seed);
}
/**
 * @deprecated Use isValidRootPrivateKey instead
 *
 * Validates a ed25519 root private key
 * @param prv A hexadecimal private key to validate
 * @returns Whether the input is a valid private key
 */
function isValidPrivateKey(prv) {
    return (0, sdk_core_1.isValidEd25519SecretKey)(prv);
}
/**
 * Validates a ed25519 root private key
 * @param prv A hexadecimal private key to validate
 * @returns Whether the input is a valid private key
 */
function isValidRootPrivateKey(prv) {
    return (0, sdk_core_1.isValidEd25519SecretKey)(prv);
}
/**
 * Encodes a raw public key to a G-prefixed Stellar public key
 * @param pub Raw public key
 * @returns Encoded Stellar public key
 */
function encodePublicKey(pub) {
    return stellar.StrKey.encodeEd25519PublicKey(pub);
}
/**
 * Encodes a raw private key to a S-prefixed Stellar private key
 * @param prv Raw private key
 * @returns Encoded Stellar private key
 */
function encodePrivateKey(prv) {
    return stellar.StrKey.encodeEd25519SecretSeed(prv);
}
/**
 * Decodes a Stellar public key to a raw public key
 * @param pub Encoded Stellar G-prefixed public key
 * @returns Raw hexadecimal public key
 */
function decodePublicKey(pub) {
    return stellar.StrKey.decodeEd25519PublicKey(pub);
}
/**
 * Decodes a Stellar private key to a raw private key
 * @param prv Encoded Stellar S-prefixed private key
 * @returns Raw hexadecimal private key
 */
function decodePrivateKey(prv) {
    return stellar.StrKey.decodeEd25519SecretSeed(prv);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU0Esa0VBYUM7QUFRRCxrRUFhQztBQVVELDhDQUVDO0FBUUQsMERBRUM7QUFTRCw0Q0FFQztBQU9ELG9EQUVDO0FBVUQsOENBRUM7QUFRRCw0REFFQztBQVNELDhDQUVDO0FBT0Qsc0RBRUM7QUFPRCwwQ0FFQztBQU9ELDRDQUVDO0FBT0QsMENBRUM7QUFPRCw0Q0FFQztBQW5LRCw4Q0FBbUY7QUFDbkYscURBQXVDO0FBRXZDOzs7OztHQUtHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsR0FBVztJQUNyRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQiwyQkFBMkIsQ0FBQyxHQUFXO0lBQ3JELElBQUksR0FBRyxDQUFDLFVB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eSwgaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFN0ZWxsYXIga2V5cGFpciBmcm9tIGEgcHVibGljIGtleS5cbiAqIFB1YmxpYyBrZXkgY2FuIGJlIGVpdGhlciBhIHJhdyByb290IHB1YmxpYyBrZXkgKGhleCBzdHJpbmcpIG9yIGEgU3RlbGxhciBwdWJsaWMga2V5IChwcmVmaXhlZCB3aXRoICdHJylcbiAqIEBwYXJhbSBwdWIgRWl0aGVyIGhleCByb290IHB1YmxpYyBrZXkgb3IgU3RlbGxhciBwdWJsaWMga2V5XG4gKiBAcmV0dXJucyBTdGVsbGFyIGtleXBhaXIgZnJvbSB0aGUgcHJvdmlkZWQgcHViXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QdWIocHViOiBzdHJpbmcpOiBzdGVsbGFyLktleXBhaXIge1xuICBpZiAocHViLnN0YXJ0c1dpdGgoJ0cnKSkge1xuICAgIGlmICghaXNWYWxpZFN0ZWxsYXJQdWJsaWNLZXkocHViKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFN0ZWxsYXIgcHVibGljIGtleScpO1xuICAgIH1cbiAgICByZXR1cm4gc3RlbGxhci5LZXlwYWlyLmZyb21QdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIGNvbnN0IGVuY29kZWRQdWIgPSBlbmNvZGVQdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICBpZiAoIWlzVmFsaWRTdGVsbGFyUHVibGljS2V5KGVuY29kZWRQdWIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJvb3QgcHVibGljIGtleScpO1xuICB9XG4gIHJldHVybiBzdGVsbGFyLktleXBhaXIuZnJvbVB1YmxpY0tleShlbmNvZGVkUHViKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU3RlbGxhciBrZXlwYWlyIGZyb20gYSBwcml2YXRlIGtleS5cbiAqIFByaXZhdGUga2V5IGNhbiBiZSBlaXRoZXIgYSByYXcgcm9vdCBwcml2YXRlIGtleSAoaGV4IHN0cmluZykgb3IgYSBTdGVsbGFyIHByaXZhdGUga2V5IChwcmVmaXhlZCB3aXRoICdTJykuXG4gKiBAcGFyYW0gc2VjcmV0IEVpdGhlciBoZXggcm9vdCBwcml2YXRlIGtleSBvciBTdGVsbGFyIHByaXZhdGUga2V5XG4gKiBAcmV0dXJucyBTdGVsbGFyIGtleXBhaXIgZnJvbSB0aGUgcHJvdmlkZWQgcHJ2XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QcnYocHJ2OiBzdHJpbmcpOiBzdGVsbGFyLktleXBhaXIge1xuICBpZiAocHJ2LnN0YXJ0c1dpdGgoJ1MnKSkge1xuICAgIGlmICghaXNWYWxpZFN0ZWxsYXJQcml2YXRlS2V5KHBydikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBTdGVsbGFyIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIHJldHVybiBzdGVsbGFyLktleXBhaXIuZnJvbVNlY3JldChwcnYpO1xuICB9XG5cbiAgY29uc3QgZW5jb2RlZFBydiA9IGVuY29kZVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LnNsaWNlKDAsIDY0KSwgJ2hleCcpKTtcbiAgaWYgKCFpc1ZhbGlkU3RlbGxhclByaXZhdGVLZXkoZW5jb2RlZFBydikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcm9vdCBwcml2YXRlIGtleScpO1xuICB9XG4gIHJldHVybiBzdGVsbGFyLktleXBhaXIuZnJvbVNlY3JldChlbmNvZGVkUHJ2KTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgaXNWYWxpZFN0ZWxsYXJQdWJsaWNLZXkgaW5zdGVhZFxuICpcbiAqIFZhbGlkYXRlcyBhIFN0ZWxsYXIgcHVibGljIGtleVxuICogU3RlbGxhciBwdWJsaWMga2V5cyBhcmUgcHJlZml4ZWQgd2l0aCAnRydcbiAqIEBwYXJhbSBwdWIgQSBTdGVsbGFyIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgU3RlbGxhciBwdWJsaWMga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3RlbGxhclB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RlbGxhci5TdHJLZXkuaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkocHViKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBTdGVsbGFyIHB1YmxpYyBrZXlcbiAqIFN0ZWxsYXIgcHVibGljIGtleXMgYXJlIHByZWZpeGVkIHdpdGggJ0cnXG4gKiBAcGFyYW0gcHViIEEgU3RlbGxhciBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIFN0ZWxsYXIgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFN0ZWxsYXJQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1Yik7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGlzVmFsaWRSb290UHVibGljS2V5IGluc3RlYWRcbiAqXG4gKiBWYWxpZGF0ZXMgYSBlZDI1NTE5IHJvb3QgcHVibGljIGtleVxuICogQHBhcmFtIHB1YiBBIGhleGFkZWNpbWFsIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkocHViKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBlZDI1NTE5IHJvb3QgcHVibGljIGtleVxuICogQHBhcmFtIHB1YiBBIGhleGFkZWNpbWFsIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFJvb3RQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1Yik7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGlzVmFsaWRTdGVsbGFyUHJpdmF0ZUtleSBpbnN0ZWFkXG4gKlxuICogVmFsaWRhdGVzIGEgU3RlbGxhciBwcml2YXRlIGtleVxuICogU3RlbGxhciBwcml2YXRlIGtleXMgYXJlIHByZWZpeGVkIHdpdGggJ1MnXG4gKiBAcGFyYW0gc2VlZCBBIFN0ZWxsYXIgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgU3RlbGxhciBwcml2YXRlIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFN0ZWxsYXJQcnYoc2VlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVNlY3JldFNlZWQoc2VlZCk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgU3RlbGxhciBwcml2YXRlIGtleVxuICogU3RlbGxhciBwcml2YXRlIGtleXMgYXJlIHByZWZpeGVkIHdpdGggJ1MnXG4gKiBAcGFyYW0gc2VlZCBBIFN0ZWxsYXIgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgU3RlbGxhciBwcml2YXRlIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFN0ZWxsYXJQcml2YXRlS2V5KHNlZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RlbGxhci5TdHJLZXkuaXNWYWxpZEVkMjU1MTlTZWNyZXRTZWVkKHNlZWQpO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBpc1ZhbGlkUm9vdFByaXZhdGVLZXkgaW5zdGVhZFxuICpcbiAqIFZhbGlkYXRlcyBhIGVkMjU1MTkgcm9vdCBwcml2YXRlIGtleVxuICogQHBhcmFtIHBydiBBIGhleGFkZWNpbWFsIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkocHJ2KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBlZDI1NTE5IHJvb3QgcHJpdmF0ZSBrZXlcbiAqIEBwYXJhbSBwcnYgQSBoZXhhZGVjaW1hbCBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwcml2YXRlIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFJvb3RQcml2YXRlS2V5KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleShwcnYpO1xufVxuXG4vKipcbiAqIEVuY29kZXMgYSByYXcgcHVibGljIGtleSB0byBhIEctcHJlZml4ZWQgU3RlbGxhciBwdWJsaWMga2V5XG4gKiBAcGFyYW0gcHViIFJhdyBwdWJsaWMga2V5XG4gKiBAcmV0dXJucyBFbmNvZGVkIFN0ZWxsYXIgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlUHVibGljS2V5KHB1YjogQnVmZmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmVuY29kZUVkMjU1MTlQdWJsaWNLZXkocHViKTtcbn1cblxuLyoqXG4gKiBFbmNvZGVzIGEgcmF3IHByaXZhdGUga2V5IHRvIGEgUy1wcmVmaXhlZCBTdGVsbGFyIHByaXZhdGUga2V5XG4gKiBAcGFyYW0gcHJ2IFJhdyBwcml2YXRlIGtleVxuICogQHJldHVybnMgRW5jb2RlZCBTdGVsbGFyIHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVQcml2YXRlS2V5KHBydjogQnVmZmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmVuY29kZUVkMjU1MTlTZWNyZXRTZWVkKHBydik7XG59XG5cbi8qKlxuICogRGVjb2RlcyBhIFN0ZWxsYXIgcHVibGljIGtleSB0byBhIHJhdyBwdWJsaWMga2V5XG4gKiBAcGFyYW0gcHViIEVuY29kZWQgU3RlbGxhciBHLXByZWZpeGVkIHB1YmxpYyBrZXlcbiAqIEByZXR1cm5zIFJhdyBoZXhhZGVjaW1hbCBwdWJsaWMga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBCdWZmZXIge1xuICByZXR1cm4gc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVB1YmxpY0tleShwdWIpO1xufVxuXG4vKipcbiAqIERlY29kZXMgYSBTdGVsbGFyIHByaXZhdGUga2V5IHRvIGEgcmF3IHByaXZhdGUga2V5XG4gKiBAcGFyYW0gcHJ2IEVuY29kZWQgU3RlbGxhciBTLXByZWZpeGVkIHByaXZhdGUga2V5XG4gKiBAcmV0dXJucyBSYXcgaGV4YWRlY2ltYWwgcHJpdmF0ZSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiBCdWZmZXIge1xuICByZXR1cm4gc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVNlY3JldFNlZWQocHJ2KTtcbn1cbiJdfQ==

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


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