PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-core/dist/src/bitgo/trading/network

Просмотр файла: encrypt-rsa-browser.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports._encryptBrowserRsa = _encryptBrowserRsa;
const crypto_1 = __importDefault(require("crypto"));
const utils_1 = require("./utils");
/**
 * Import a public RSA key and encrypt a plaintext
 * @param {string} publicKey PEM-formatted public RSA key
 * @param {string} text The text to encrypt
 * @returns {string} The encrypted text
 */
async function _encryptBrowserRsa(publicKey, text) {
    const pub = await importPublicKey(publicKey);
    const encrypted = await encryptRSA(pub, new TextEncoder().encode(text));
    return btoa((0, utils_1.ab2str)(encrypted));
}
/**
 * Import a public RSA key from a PEM string
 * @param {string} spkiPem
 * @returns {CryptoKey}
 */
async function importPublicKey(spkiPem) {
    // Pull from window.crypto when running in the browser.
    // This is due to libraries like crypto-browserify overriding "crypto" while not supporting various crypto functions.
    let cryptoJS = crypto_1.default;
    if (typeof window !== 'undefined') {
        cryptoJS = window.crypto;
    }
    return await cryptoJS.subtle.importKey('spki', getSpkiDer(spkiPem), {
        name: 'RSA-OAEP',
        hash: 'SHA-256',
    }, true, ['encrypt']);
}
/**
 * Encrypt a plaintext using RSA-OAEP
 * @param {CryptoKey} key The public key to use for encryption
 * @param {ArrayBuffer} plaintext The plaintext to encrypt
 * @returns {ArrayBuffer} The encrypted text
 */
async function encryptRSA(key, plaintext) {
    // Pull from window.crypto when running in the browser.
    // This is due to libraries like crypto-browserify overriding "crypto" while not supporting various crypto functions.
    let cryptoJS = crypto_1.default;
    if (typeof window !== 'undefined') {
        cryptoJS = window.crypto;
    }
    const encrypted = await cryptoJS.subtle.encrypt({
        name: 'RSA-OAEP',
    }, key, plaintext);
    return encrypted;
}
/**
 * Convert a PEM-formatted SPKI key to a DER-formatted ArrayBuffer
 * @param {string} spkiPem PEM-formatted SPKI key
 * @returns {ArrayBuffer} DER-formatted public key
 */
function getSpkiDer(spkiPem) {
    spkiPem = spkiPem.replace(/-----[^-]+-----/g, '').replace(/\s+/g, '');
    const binaryDerString = atob(spkiPem);
    return (0, utils_1.str2ab)(binaryDerString);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC1yc2EtYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby90cmFkaW5nL25ldHdvcmsvZW5jcnlwdC1yc2EtYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVNBLGdEQUlDO0FBYkQsb0RBQTRCO0FBQzVCLG1DQUF5QztBQUV6Qzs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLElBQVk7SUFDdEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEUsT0FBTyxJQUFJLENBQUMsSUFBQSxjQUFNLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILEtBQUssVUFBVSxlQUFlLENBQUMsT0FBZTtJQUM1Qyx1REFBdUQ7SUFDdkQscUhBQXFIO0lBQ3JILElBQUksUUFBUSxHQUFRLGdCQUFNLENBQUM7SUFDM0IsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUNwQyxNQUFNLEVBQ04sVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUNuQjtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSxTQUFTO0tBQ2hCLEVBQ0QsSUFBSSxFQUNKLENBQUMsU0FBUyxDQUFDLENBQ1osQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILEtBQUssVUFBVSxVQUFVLENBQUMsR0FBYyxFQUFFLFNBQXNCO0lBQzlELHVEQUF1RDtJQUN2RCxxSEFBcUg7SUFDckgsSUFBSSxRQUFRLEdBQVEsZ0JBQU0sQ0FBQztJQUMzQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUM3QztRQUNFLElBQUksRUFBRSxVQUFVO0tBQ2pCLEVBQ0QsR0FBRyxFQUNILFNBQVMsQ0FDVixDQUFDO0lBQ0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxPQUFlO0lBQ2pDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sSUFBQSxjQUFNLEVBQUMsZUFBZSxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGFiMnN0ciwgc3RyMmFiIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogSW1wb3J0IGEgcHVibGljIFJTQSBrZXkgYW5kIGVuY3J5cHQgYSBwbGFpbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNLZXkgUEVNLWZvcm1hdHRlZCBwdWJsaWMgUlNBIGtleVxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGhlIHRleHQgdG8gZW5jcnlwdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGVuY3J5cHRlZCB0ZXh0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBfZW5jcnlwdEJyb3dzZXJSc2EocHVibGljS2V5OiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHB1YiA9IGF3YWl0IGltcG9ydFB1YmxpY0tleShwdWJsaWNLZXkpO1xuICBjb25zdCBlbmNyeXB0ZWQgPSBhd2FpdCBlbmNyeXB0UlNBKHB1YiwgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHRleHQpKTtcbiAgcmV0dXJuIGJ0b2EoYWIyc3RyKGVuY3J5cHRlZCkpO1xufVxuXG4vKipcbiAqIEltcG9ydCBhIHB1YmxpYyBSU0Ega2V5IGZyb20gYSBQRU0gc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gc3BraVBlbVxuICogQHJldHVybnMge0NyeXB0b0tleX1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW1wb3J0UHVibGljS2V5KHNwa2lQZW06IHN0cmluZykge1xuICAvLyBQdWxsIGZyb20gd2luZG93LmNyeXB0byB3aGVuIHJ1bm5pbmcgaW4gdGhlIGJyb3dzZXIuXG4gIC8vIFRoaXMgaXMgZHVlIHRvIGxpYnJhcmllcyBsaWtlIGNyeXB0by1icm93c2VyaWZ5IG92ZXJyaWRpbmcgXCJjcnlwdG9cIiB3aGlsZSBub3Qgc3VwcG9ydGluZyB2YXJpb3VzIGNyeXB0byBmdW5jdGlvbnMuXG4gIGxldCBjcnlwdG9KUzogYW55ID0gY3J5cHRvO1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjcnlwdG9KUyA9IHdpbmRvdy5jcnlwdG87XG4gIH1cblxuICByZXR1cm4gYXdhaXQgY3J5cHRvSlMuc3VidGxlLmltcG9ydEtleShcbiAgICAnc3BraScsXG4gICAgZ2V0U3BraURlcihzcGtpUGVtKSxcbiAgICB7XG4gICAgICBuYW1lOiAnUlNBLU9BRVAnLFxuICAgICAgaGFzaDogJ1NIQS0yNTYnLFxuICAgIH0sXG4gICAgdHJ1ZSxcbiAgICBbJ2VuY3J5cHQnXVxuICApO1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBwbGFpbnRleHQgdXNpbmcgUlNBLU9BRVBcbiAqIEBwYXJhbSB7Q3J5cHRvS2V5fSBrZXkgVGhlIHB1YmxpYyBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW9uXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBwbGFpbnRleHQgVGhlIHBsYWludGV4dCB0byBlbmNyeXB0XG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFRoZSBlbmNyeXB0ZWQgdGV4dFxuICovXG5hc3luYyBmdW5jdGlvbiBlbmNyeXB0UlNBKGtleTogQ3J5cHRvS2V5LCBwbGFpbnRleHQ6IEFycmF5QnVmZmVyKSB7XG4gIC8vIFB1bGwgZnJvbSB3aW5kb3cuY3J5cHRvIHdoZW4gcnVubmluZyBpbiB0aGUgYnJvd3Nlci5cbiAgLy8gVGhpcyBpcyBkdWUgdG8gbGlicmFyaWVzIGxpa2UgY3J5cHRvLWJyb3dzZXJpZnkgb3ZlcnJpZGluZyBcImNyeXB0b1wiIHdoaWxlIG5vdCBzdXBwb3J0aW5nIHZhcmlvdXMgY3J5cHRvIGZ1bmN0aW9ucy5cbiAgbGV0IGNyeXB0b0pTOiBhbnkgPSBjcnlwdG87XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNyeXB0b0pTID0gd2luZG93LmNyeXB0bztcbiAgfVxuXG4gIGNvbnN0IGVuY3J5cHRlZCA9IGF3YWl0IGNyeXB0b0pTLnN1YnRsZS5lbmNyeXB0KFxuICAgIHtcbiAgICAgIG5hbWU6ICdSU0EtT0FFUCcsXG4gICAgfSxcbiAgICBrZXksXG4gICAgcGxhaW50ZXh0XG4gICk7XG4gIHJldHVybiBlbmNyeXB0ZWQ7XG59XG5cbi8qKlxuICogQ29udmVydCBhIFBFTS1mb3JtYXR0ZWQgU1BLSSBrZXkgdG8gYSBERVItZm9ybWF0dGVkIEFycmF5QnVmZmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gc3BraVBlbSBQRU0tZm9ybWF0dGVkIFNQS0kga2V5XG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IERFUi1mb3JtYXR0ZWQgcHVibGljIGtleVxuICovXG5mdW5jdGlvbiBnZXRTcGtpRGVyKHNwa2lQZW06IHN0cmluZykge1xuICBzcGtpUGVtID0gc3BraVBlbS5yZXBsYWNlKC8tLS0tLVteLV0rLS0tLS0vZywgJycpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICBjb25zdCBiaW5hcnlEZXJTdHJpbmcgPSBhdG9iKHNwa2lQZW0pO1xuICByZXR1cm4gc3RyMmFiKGJpbmFyeURlclN0cmluZyk7XG59XG4iXX0=

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


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