@cenoa/waas-js-sdk
Version:
Official Cenoa Wallet as a Service SDK
43 lines (42 loc) • 1.78 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const crypto_js_1 = __importDefault(require("crypto-js"));
var EncryptionHelper;
(function (EncryptionHelper) {
function generateKey(encryptionSecret) {
const { kek, salt } = encryptionSecret;
return crypto_js_1.default.PBKDF2(kek, salt, {
keySize: 32,
iterations: 5000,
}).toString();
}
// The encrypt function
function encryptData(data, encryptionSecret) {
const text = JSON.stringify(data);
const derivedKey = generateKey(encryptionSecret);
const iv = crypto_js_1.default.lib.WordArray.random(16);
const cipherText = crypto_js_1.default.AES.encrypt(text, derivedKey, {
iv,
}).toString();
const encryptedData = {
cipherText,
iv: iv.toString(),
};
return Buffer.from(JSON.stringify(encryptedData)).toString('base64');
}
EncryptionHelper.encryptData = encryptData;
// The decrypt function
function decryptData(encryptedText, encryptionSecret) {
const decodedText = Buffer.from(encryptedText, 'base64').toString();
const { cipherText, iv } = JSON.parse(decodedText);
const derivedKey = generateKey(encryptionSecret);
const data = crypto_js_1.default.AES.decrypt(cipherText, derivedKey, { iv });
const decryptedText = data.toString(crypto_js_1.default.enc.Utf8);
return JSON.parse(decryptedText);
}
EncryptionHelper.decryptData = decryptData;
})(EncryptionHelper || (EncryptionHelper = {}));
exports.default = EncryptionHelper;