@cenoa/waas-js-sdk
Version:
Official Cenoa Wallet as a Service SDK
38 lines (37 loc) • 1.48 kB
JavaScript
import CryptoJS from 'crypto-js';
var EncryptionHelper;
(function (EncryptionHelper) {
function generateKey(encryptionSecret) {
const { kek, salt } = encryptionSecret;
return CryptoJS.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 = CryptoJS.lib.WordArray.random(16);
const cipherText = CryptoJS.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 = CryptoJS.AES.decrypt(cipherText, derivedKey, { iv });
const decryptedText = data.toString(CryptoJS.enc.Utf8);
return JSON.parse(decryptedText);
}
EncryptionHelper.decryptData = decryptData;
})(EncryptionHelper || (EncryptionHelper = {}));
export default EncryptionHelper;