260891da52e287feb2c868fc192e96af320457c6
[motion2.git] / server / components / encryptor / index.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xd2d1=['hasOwnProperty','createReadStream','createWriteStream','createCipher','data','update','binary','write','final','end','close','decryptFile','unlink','encryptString','secret','utf8','base64','decryptString','createDecipher','bluebird','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','test','getCiphers','filter','indexOf'];(function(_0x282ed6,_0x1244f6){var _0x1f85ca=function(_0x2083b6){while(--_0x2083b6){_0x282ed6['push'](_0x282ed6['shift']());}};_0x1f85ca(++_0x1244f6);}(_0xd2d1,0x7c));var _0x1d2d=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd2d1[_0xa464c9];return _0x3d73c4;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x1d2d('0x0'));var _=require('lodash');var config=require(_0x1d2d('0x1'));var logger=require(_0x1d2d('0x2'))(_0x1d2d('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x1d2d('0x4')][_0x1d2d('0x5')],'algorithm':_0x1d2d('0x6')};const fileOptions={'algorithm':_0x1d2d('0x7')};if(config[_0x1d2d('0x8')]&&config['encrypt'][_0x1d2d('0x9')]){var isSupported=isAlgorithmSupported(config['encrypt']['algorithm']);if(isSupported){fileOptions[_0x1d2d('0x9')]=config[_0x1d2d('0x8')][_0x1d2d('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x1d2d('0xa')](',\x20');logger[_0x1d2d('0xb')](config[_0x1d2d('0x8')]['algorithm'],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x4e0140){return AES_SUPPORTED_RX[_0x1d2d('0xc')](_0x4e0140);}function getSupportedCiphers(){return crypto[_0x1d2d('0xd')]()[_0x1d2d('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x237cef){return getSupportedCiphers()[_0x1d2d('0xf')](_0x237cef)>-0x1;}function combineOptions(_0x454d88){var _0x27db50={};for(var _0x5c16bc in fileOptions){if(fileOptions[_0x1d2d('0x10')](_0x5c16bc)){_0x27db50[_0x5c16bc]=fileOptions[_0x5c16bc];}}if(_0x454d88){for(var _0x549c27 in _0x454d88){if(_0x454d88['hasOwnProperty'](_0x549c27)){_0x27db50[_0x549c27]=_0x454d88[_0x549c27];}}}return _0x27db50;}exports['encryptFile']=function(_0x555d52,_0x3ef1d2,_0x16672d,_0x12bb04){return new BPromise(function(_0x169b6d,_0x4b6132){_0x12bb04=combineOptions(_0x12bb04);var _0x410144=new Buffer(_0x16672d);var _0x4be409=fs[_0x1d2d('0x11')](_0x555d52);var _0x2d0551=fs[_0x1d2d('0x12')](_0x3ef1d2);var _0x8fd9d7=crypto[_0x1d2d('0x13')](_0x12bb04[_0x1d2d('0x9')],_0x410144);_0x4be409['on'](_0x1d2d('0x14'),function(_0x4f3a8c){var _0x4ada78=new Buffer(_0x8fd9d7[_0x1d2d('0x15')](_0x4f3a8c),_0x1d2d('0x16'));_0x2d0551[_0x1d2d('0x17')](_0x4ada78);});_0x4be409['on']('end',function(){try{var _0x2e42f0=new Buffer(_0x8fd9d7[_0x1d2d('0x18')](_0x1d2d('0x16')),_0x1d2d('0x16'));_0x2d0551[_0x1d2d('0x17')](_0x2e42f0);_0x2d0551[_0x1d2d('0x19')]();_0x2d0551['on'](_0x1d2d('0x1a'),function(){return _0x169b6d(_0x3ef1d2);});}catch(_0x22687e){fs['unlink'](_0x3ef1d2);return _0x4b6132(_0x22687e);}});});};exports[_0x1d2d('0x1b')]=function(_0x314f49,_0xf4ec2f,_0x5573c7,_0xc5e3fe){return new BPromise(function(_0x2c1de4,_0x556227){_0xc5e3fe=combineOptions(_0xc5e3fe);var _0x44d123=new Buffer(_0x5573c7);var _0x4e7cd8=fs[_0x1d2d('0x11')](_0x314f49);var _0x8aaad4=fs[_0x1d2d('0x12')](_0xf4ec2f);var _0x5dae2c=crypto['createDecipher'](_0xc5e3fe[_0x1d2d('0x9')],_0x44d123);_0x4e7cd8['on'](_0x1d2d('0x14'),function(_0x20a66d){var _0x15b8cd=new Buffer(_0x5dae2c[_0x1d2d('0x15')](_0x20a66d),_0x1d2d('0x16'));_0x8aaad4[_0x1d2d('0x17')](_0x15b8cd);});_0x4e7cd8['on'](_0x1d2d('0x19'),function(){try{var _0x7153a3=new Buffer(_0x5dae2c[_0x1d2d('0x18')](_0x1d2d('0x16')),_0x1d2d('0x16'));_0x8aaad4['write'](_0x7153a3);_0x8aaad4['end']();_0x8aaad4['on'](_0x1d2d('0x1a'),function(){return _0x2c1de4(_0xf4ec2f);});}catch(_0x124fdd){fs[_0x1d2d('0x1c')](_0xf4ec2f);return _0x556227(_0x124fdd);}});});};exports[_0x1d2d('0x1d')]=function(_0x5edc91,_0x2ed7de,_0x2a22fc){var _0x554495=_0x2a22fc||stringOptions[_0x1d2d('0x9')];var _0x359b0a=_0x2ed7de||stringOptions[_0x1d2d('0x1e')];var _0x3513f2=crypto[_0x1d2d('0x13')](_0x554495,_0x359b0a);var _0x3d9c30=_0x3513f2[_0x1d2d('0x15')](_0x5edc91,_0x1d2d('0x1f'),_0x1d2d('0x20'));_0x3d9c30+=_0x3513f2[_0x1d2d('0x18')]('base64');return _0x3d9c30;};exports[_0x1d2d('0x21')]=function(_0x4a4abb,_0x48e410,_0x509892){var _0x241845=_0x509892||stringOptions['algorithm'];var _0x2269a9=_0x48e410||stringOptions[_0x1d2d('0x1e')];var _0x574021=crypto[_0x1d2d('0x22')](_0x241845,_0x2269a9);var _0xbe4b8e=_0x574021['update'](_0x4a4abb,'base64','utf8');_0xbe4b8e+=_0x574021[_0x1d2d('0x18')](_0x1d2d('0x1f'));return _0xbe4b8e;};