UNPKG

@cenoa/waas-js-sdk

Version:

Official Cenoa Wallet as a Service SDK

38 lines (37 loc) 1.48 kB
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;