UNPKG

@cenoa/waas-js-sdk

Version:

Official Cenoa Wallet as a Service SDK

43 lines (42 loc) 1.78 kB
"use strict"; 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;