ltijs
Version:
Easily turn your web application into a LTI 1.3 Learning Tool.
24 lines • 1.4 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.encryptAes256 = encryptAes256;
exports.decryptAes256 = decryptAes256;
const node_crypto_1 = __importDefault(require("node:crypto"));
// SHA-256-derived key, AES-256-CBC, random IV -- ported as-is from legacy's Encrypt/Decrypt methods,
// since MongoLegacyDatabaseManager must keep decrypting data written by existing deployments.
function encryptAes256(data, secret) {
const key = node_crypto_1.default.createHash('sha256').update(secret).digest().subarray(0, 32);
const iv = node_crypto_1.default.randomBytes(16);
const cipher = node_crypto_1.default.createCipheriv('aes-256-cbc', key, iv);
const encrypted = Buffer.concat([cipher.update(data), cipher.final()]);
return { iv: iv.toString('hex'), data: encrypted.toString('hex') };
}
function decryptAes256(data, iv, secret) {
const key = node_crypto_1.default.createHash('sha256').update(secret).digest().subarray(0, 32);
const decipher = node_crypto_1.default.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
const decrypted = Buffer.concat([decipher.update(Buffer.from(data, 'hex')), decipher.final()]);
return decrypted.toString();
}
//# sourceMappingURL=aes-encryption.js.map