citi-hub-session-engine
Version:
Module for authentication methods for CITI hub
38 lines (28 loc) • 1.32 kB
JavaScript
const { publicEncrypt, createDecipheriv, privateDecrypt } = require("crypto");
const { logger } = require("../utils/Logger");
const decrypt = (encryptedData, privateKey, publicKey, aesKeyH, ivH) => {
try {
logger.info(`Initiating Decrypt`);
const aesKey = Buffer.from(aesKeyH, "hex");
const iv = Buffer.from(ivH, "hex");
logger.info("aesKey", aesKey);
logger.info("iv", iv);
// Encriptar la clave AES con la llave pública RSA
const encryptedAesKey = publicEncrypt(publicKey, aesKey);
logger.info("encryptedAesKey", encryptedAesKey);
logger.info("Encrypted Data:", encryptedData);
logger.info("Encrypted AES Key:", encryptedAesKey.toString("base64"));
logger.info("IV:", iv.toString("base64"));
const decryptedAesKey = privateDecrypt(privateKey, encryptedAesKey);
// Desencriptar los datos con AES
const decipher = createDecipheriv("aes-256-cbc", decryptedAesKey, iv);
let decryptedData = decipher.update(encryptedData, "base64", "utf8");
decryptedData += decipher.final("utf8");
logger.info(`Decrypted Data: ${decryptedData}`);
return JSON.parse(decryptedData);
} catch (e) {
logger.error(`An error occurred while decrypting the data :: ${e}`);
return null;
}
};
module.exports = decrypt;