all files / src/utils/ crypto.js

19.05% Statements 4/21
0% Branches 0/8
0% Functions 0/2
19.05% Lines 4/21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42                                                                           
/**
 * @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;
   }
};