UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

53 lines (52 loc) 1.88 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); const crypto_1 = require("crypto"); class Crypt { constructor(password) { this.encryptionKey = password; this.cryptAlgo = 'aes-256-cbc'; } decrypt(value) { let data = Buffer.from(value, 'hex'); if (data.slice(16, 17).toString() !== ':') { return value; } const initializationVector = data.slice(0, 16); const password = (0, crypto_1.pbkdf2Sync)(this.encryptionKey, initializationVector.toString(), 1000, 32, 'sha512'); const decipher = (0, crypto_1.createDecipheriv)(this.cryptAlgo, password, initializationVector); data = Buffer.concat([decipher.update(data.slice(17)), decipher.final()]); return this._deserialize(data.toString()); } encrypt(value) { const data = this._serialize(value); const initializationVector = (0, crypto_1.randomBytes)(16); const password = (0, crypto_1.pbkdf2Sync)(this.encryptionKey, initializationVector.toString(), 1000, 32, 'sha512'); const cipher = (0, crypto_1.createCipheriv)(this.cryptAlgo, password, initializationVector); const dataBuff = Buffer.concat([ initializationVector, Buffer.from(':'), cipher.update(Buffer.from(data)), cipher.final() ]); return dataBuff.toString('hex'); } isEncrypted(value) { try { const data = Buffer.from(value, 'hex'); if (data.slice(16, 17).toString() === ':') { return true; } } catch (err) { return false; } return false; } _serialize(value) { return JSON.stringify(value, null, ''); } _deserialize(value) { return JSON.parse(value); } } exports.default = Crypt;