langbung01

init script

Oct 31st, 2022
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window = {};
  2. // (new Function(pm.globals.get('dayjs')))();
  3. eval(pm.globals.get('nodeforge'))
  4. function init(){
  5.     let libs = {}
  6.     libs.getSecret = function(access_token){
  7.         return new Promise((resolve, reject) => {
  8.             pm.sendRequest({
  9.                 url: `${pm.environment.get('baseUrl')}/auth/v1/secret`,
  10.                 method: 'GET',
  11.                 header: {
  12.                   'Content-Type': 'application/json',
  13.                   'Authorization': `Bearer ${access_token}`
  14.                 }
  15.               }, (err, res) => {
  16.                 if (err) {
  17.                     return reject(err);
  18.                 } else {
  19.                     return resolve(res);
  20.                 }
  21.             });
  22.         });
  23.     }
  24.     libs.pef1Encrypt = function (plainText, secret) {
  25.        
  26.         // let iv = crypto.randomBytes(12);
  27.         let iv =  forge.random.getBytesSync(12);
  28.    
  29.         // let salt = crypto.randomBytes(16);
  30.         let salt = forge.random.getBytesSync(16);
  31.    
  32.         // let key = crypto.createHmac('sha256', secret).update(salt).digest();
  33.         const hmac = forge.hmac.create();
  34.         hmac.start('sha256', secret);
  35.         hmac.update(salt);
  36.         let key = hmac.digest();
  37.        
  38.         // let cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
  39.         let cipher = forge.cipher.createCipher('AES-GCM', key);
  40.         cipher.start({
  41.             iv: iv, // should be a 12-byte binary-encoded string or byte buffer
  42.             tagLength: 128 // optional, defaults to 128 bits
  43.             });
  44.    
  45.         // let cipherText = cipher.update(plainText, 'utf8', 'base64') + cipher.final('base64');
  46.         cipher.update(forge.util.createBuffer(plainText,'utf8'));
  47.    
  48.         cipher.finish();
  49.         let cipherText = forge.util.encode64(cipher.output.getBytes()) ;
  50.    
  51.    
  52.         // let tag = cipher.getAuthTag();
  53.         let tag = cipher.mode.tag;
  54.        
  55.         let msg = {
  56.             f: 'pef1',
  57.             s: forge.util.encode64(salt),
  58.             i: forge.util.encode64(iv),
  59.             t: forge.util.encode64(tag.getBytes()),
  60.             d: cipherText
  61.         };
  62.         return JSON.stringify(msg);
  63.     }
  64.     libs.pef1Decrypt = function(encryptedText, secret) {
  65.         try {
  66.             let msg = JSON.parse(encryptedText);
  67.             let salt = forge.util.decode64(msg.s, 'base64');
  68.             let iv = forge.util.decode64(msg.i, 'base64');
  69.             let tag = new forge.util.ByteStringBuffer(forge.util.decode64(msg.t, 'base64'));
  70.             let cipherText = forge.util.decode64(msg.d);
  71.             // let key = crypto.createHmac('sha256', secret).update(salt).digest();
  72.             const hmac = forge.hmac.create();
  73.             hmac.start('sha256', secret);
  74.             hmac.update(salt);
  75.             let key = hmac.digest();
  76.             // let decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);
  77.             // decipher.setAuthTag(tag);
  78.             let decipher = forge.cipher.createDecipher('AES-GCM', key);
  79.             decipher.start({
  80.                 iv: iv,
  81.                 // additionalData: 'binary-encoded string', // optional
  82.                 tagLength: 128, // optional, defaults to 128 bits
  83.                 tag: tag // authentication tag from encryption
  84.             });
  85.        
  86.             decipher.update(new forge.util.ByteStringBuffer(cipherText));
  87.             decipher.finish()
  88.             return forge.util.encodeUtf8(decipher.output.getBytes())
  89.             // return decipher.update(cipherText, 'base64', 'utf8') + decipher.final('utf8');
  90.         } catch (e) {
  91.             // will return null if cipherText is not in pef1 format or authentication tag validation fails
  92.             return null;
  93.         }
  94.     }
  95.     return libs
  96. }
  97. init();
Add Comment
Please, Sign In to add comment