/**
* @file encrypt.js
* @desc Encrypts and decrypts a string
*/
'use strict';
var crypto = require('crypto'),
config = require(__dirname + '/../config'),
logger = require(__dirname + '/../loggers/logger'),
algorithm = 'aes-256-cbc';
//export namespace as `aesCrypto`
var aesCrypto = exports;
aesCrypto.encrypt = function (text, passPhrase) {
var key = passPhrase || config.pnr_enforcement.bypass_cookie_secret;
if (!key){
throw 'No value set in ini file for bypass_cookie_secret';
}
var cipher = crypto.createCipher(algorithm, key);
var crypted = cipher.update(text, 'utf8', 'base64');
crypted += cipher.final('base64');
return crypted;
};
aesCrypto.decrypt = function (text, passPhrase) {
var key = passPhrase || config.pnr_enforcement.bypass_cookie_secret;
if (!key){
throw 'No value set in ini file for bypass_cookie_secret';
}
var decipher = crypto.createDecipher(algorithm, key);
try {
var dec = decipher.update(text, 'base64', 'utf8');
dec += decipher.final('utf8');
return dec;
} catch (ex) {
logger.warn('decryption failed for text - ' + text);
return null;
}
};
|