PHP WebShell

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

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

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.encryptRsaWithAesGcm = encryptRsaWithAesGcm;
exports.encryptBrowserRsaWithAesGcm = encryptBrowserRsaWithAesGcm;
const crypto_1 = __importDefault(require("crypto"));
const encrypt_aes_gcm_1 = require("./encrypt-aes-gcm");
const encrypt_rsa_1 = require("./encrypt-rsa");
const encrypt_rsa_browser_1 = require("./encrypt-rsa-browser");
/**
 * Provided an X.509/ OpenSSL PEM public key, and a string of text to encrypt,
 * This function will
 * 1. Generate a random 256-bit key
 * 2. Encrypt the text using AES-GCM with the generated key
 * 3. Encrypt the generated key using RSA-OAEP with the provided public key
 * 4. Return the encrypted key and the encrypted text in the format `${encryptedKey}\n${encryptedText}`
 *
 * @param {string} publicKey - RSA Public Key
 * @param {string} text - text to encrypt
 * @returns {string} The encrypted text
 *
 * @example
 * const publicKey = '-----BEGIN PUBLIC KEY-----\n.....\n-----END PUBLIC KEY-----';
 * const text = 'This text contains sensitive information';
 * const encrypted = await encryptRsaWithAesGcm(publicKey, text);
 */
async function encryptRsaWithAesGcm(publicKey, text) {
    const gcmKey = crypto_1.default.randomBytes(32).toString('base64');
    const encrypted = await (0, encrypt_aes_gcm_1._encryptAesGcm)(gcmKey, text);
    const encryptedRsa = await (0, encrypt_rsa_1._encryptRsa)(publicKey, Buffer.from(gcmKey).toString('base64'));
    return `${encryptedRsa}\n${encrypted}`;
}
/**
 * Provided an X.509/ OpenSSL PEM public key, and a string of text to encrypt,
 * This function will
 * 1. Generate a random 256-bit key
 * 2. Encrypt the text using AES-GCM with the generated key
 * 3. Encrypt the generated key using RSA-OAEP with the provided public key
 * 4. Return the encrypted key and the encrypted text in the format `${encryptedKey}\n${encryptedText}`
 *
 * @param {string} publicKey - RSA Public Key
 * @param {string} text - text to encrypt
 * @returns {string} The encrypted text
 *
 * @example
 * const publicKey = '-----BEGIN PUBLIC KEY-----\n.....\n-----END PUBLIC KEY-----';
 * const text = 'This text contains sensitive information';
 * const encrypted = await encryptBrowserRsaWithAesGcm(publicKey, text);
 */
async function encryptBrowserRsaWithAesGcm(publicKey, text) {
    const gcmKey = crypto_1.default.randomBytes(32).toString('base64');
    const encrypted = await (0, encrypt_aes_gcm_1._encryptAesGcm)(gcmKey, text);
    const encryptedRsa = await (0, encrypt_rsa_browser_1._encryptBrowserRsa)(publicKey, Buffer.from(gcmKey).toString('base64'));
    return `${encryptedRsa}\n${encrypted}`;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby90cmFkaW5nL25ldHdvcmsvZW5jcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXNCQSxvREFPQztBQW1CRCxrRUFPQztBQXZERCxvREFBNEI7QUFDNUIsdURBQW1EO0FBQ25ELCtDQUE0QztBQUM1QywrREFBMkQ7QUFFM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSSxLQUFLLFVBQVUsb0JBQW9CLENBQUMsU0FBaUIsRUFBRSxJQUFZO0lBQ3hFLE1BQU0sTUFBTSxHQUFHLGdCQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV6RCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsZ0NBQWMsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLHlCQUFXLEVBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFMUYsT0FBTyxHQUFHLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSSxLQUFLLFVBQVUsMkJBQTJCLENBQUMsU0FBaUIsRUFBRSxJQUFZO0lBQy9FLE1BQU0sTUFBTSxHQUFHLGdCQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV6RCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsZ0NBQWMsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLHdDQUFrQixFQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRWpHLE9BQU8sR0FBRyxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IF9lbmNyeXB0QWVzR2NtIH0gZnJvbSAnLi9lbmNyeXB0LWFlcy1nY20nO1xuaW1wb3J0IHsgX2VuY3J5cHRSc2EgfSBmcm9tICcuL2VuY3J5cHQtcnNhJztcbmltcG9ydCB7IF9lbmNyeXB0QnJvd3NlclJzYSB9IGZyb20gJy4vZW5jcnlwdC1yc2EtYnJvd3Nlcic7XG5cbi8qKlxuICogUHJvdmlkZWQgYW4gWC41MDkvIE9wZW5TU0wgUEVNIHB1YmxpYyBrZXksIGFuZCBhIHN0cmluZyBvZiB0ZXh0IHRvIGVuY3J5cHQsXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGxcbiAqIDEuIEdlbmVyYXRlIGEgcmFuZG9tIDI1Ni1iaXQga2V5XG4gKiAyLiBFbmNyeXB0IHRoZSB0ZXh0IHVzaW5nIEFFUy1HQ00gd2l0aCB0aGUgZ2VuZXJhdGVkIGtleVxuICogMy4gRW5jcnlwdCB0aGUgZ2VuZXJhdGVkIGtleSB1c2luZyBSU0EtT0FFUCB3aXRoIHRoZSBwcm92aWRlZCBwdWJsaWMga2V5XG4gKiA0LiBSZXR1cm4gdGhlIGVuY3J5cHRlZCBrZXkgYW5kIHRoZSBlbmNyeXB0ZWQgdGV4dCBpbiB0aGUgZm9ybWF0IGAke2VuY3J5cHRlZEtleX1cXG4ke2VuY3J5cHRlZFRleHR9YFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNLZXkgLSBSU0EgUHVibGljIEtleVxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0ZXh0IHRvIGVuY3J5cHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNyeXB0ZWQgdGV4dFxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwdWJsaWNLZXkgPSAnLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cXG4uLi4uLlxcbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLSc7XG4gKiBjb25zdCB0ZXh0ID0gJ1RoaXMgdGV4dCBjb250YWlucyBzZW5zaXRpdmUgaW5mb3JtYXRpb24nO1xuICogY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgZW5jcnlwdFJzYVdpdGhBZXNHY20ocHVibGljS2V5LCB0ZXh0KTtcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRSc2FXaXRoQWVzR2NtKHB1YmxpY0tleTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBnY21LZXkgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMzIpLnRvU3RyaW5nKCdiYXNlNjQnKTtcblxuICBjb25zdCBlbmNyeXB0ZWQgPSBhd2FpdCBfZW5jcnlwdEFlc0djbShnY21LZXksIHRleHQpO1xuICBjb25zdCBlbmNyeXB0ZWRSc2EgPSBhd2FpdCBfZW5jcnlwdFJzYShwdWJsaWNLZXksIEJ1ZmZlci5mcm9tKGdjbUtleSkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcblxuICByZXR1cm4gYCR7ZW5jcnlwdGVkUnNhfVxcbiR7ZW5jcnlwdGVkfWA7XG59XG5cbi8qKlxuICogUHJvdmlkZWQgYW4gWC41MDkvIE9wZW5TU0wgUEVNIHB1YmxpYyBrZXksIGFuZCBhIHN0cmluZyBvZiB0ZXh0IHRvIGVuY3J5cHQsXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGxcbiAqIDEuIEdlbmVyYXRlIGEgcmFuZG9tIDI1Ni1iaXQga2V5XG4gKiAyLiBFbmNyeXB0IHRoZSB0ZXh0IHVzaW5nIEFFUy1HQ00gd2l0aCB0aGUgZ2VuZXJhdGVkIGtleVxuICogMy4gRW5jcnlwdCB0aGUgZ2VuZXJhdGVkIGtleSB1c2luZyBSU0EtT0FFUCB3aXRoIHRoZSBwcm92aWRlZCBwdWJsaWMga2V5XG4gKiA0LiBSZXR1cm4gdGhlIGVuY3J5cHRlZCBrZXkgYW5kIHRoZSBlbmNyeXB0ZWQgdGV4dCBpbiB0aGUgZm9ybWF0IGAke2VuY3J5cHRlZEtleX1cXG4ke2VuY3J5cHRlZFRleHR9YFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNLZXkgLSBSU0EgUHVibGljIEtleVxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0ZXh0IHRvIGVuY3J5cHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNyeXB0ZWQgdGV4dFxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwdWJsaWNLZXkgPSAnLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cXG4uLi4uLlxcbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLSc7XG4gKiBjb25zdCB0ZXh0ID0gJ1RoaXMgdGV4dCBjb250YWlucyBzZW5zaXRpdmUgaW5mb3JtYXRpb24nO1xuICogY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgZW5jcnlwdEJyb3dzZXJSc2FXaXRoQWVzR2NtKHB1YmxpY0tleSwgdGV4dCk7XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0QnJvd3NlclJzYVdpdGhBZXNHY20ocHVibGljS2V5OiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGdjbUtleSA9IGNyeXB0by5yYW5kb21CeXRlcygzMikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gIGNvbnN0IGVuY3J5cHRlZCA9IGF3YWl0IF9lbmNyeXB0QWVzR2NtKGdjbUtleSwgdGV4dCk7XG4gIGNvbnN0IGVuY3J5cHRlZFJzYSA9IGF3YWl0IF9lbmNyeXB0QnJvd3NlclJzYShwdWJsaWNLZXksIEJ1ZmZlci5mcm9tKGdjbUtleSkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcblxuICByZXR1cm4gYCR7ZW5jcnlwdGVkUnNhfVxcbiR7ZW5jcnlwdGVkfWA7XG59XG4iXX0=

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


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