All files / crypto/src/Encryption/AES CBCPKCS7.js

100% Statements 8/8
0% Branches 0/2
100% Functions 2/2
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 411x 1x 1x                   24x   24x                         51x   51x                   1x  
const Abstract = require('./../Abstract');
const mAES = require('mipher/dist/aes');
const BC = require('@pascalcoin-sbx/common').BC;
 
/**
 * AES-CBC PKCS7 implementation.
 */
class CBCPKCS7 extends Abstract {
  /**
   * @inheritDoc Abstract#encrypt
   */
  static encrypt(value, options = {key: BC.empty(), iv: BC.empty()}) {
    let aes = new mAES.AES_CBC_PKCS7();
 
    return new BC(
      aes.encrypt(
        BC.from(options.key).buffer,
        BC.from(value).buffer,
        BC.from(options.iv).buffer
      )
    );
  }
 
  /**
   * @inheritDoc Abstract#decrypt
   */
  static decrypt(value, options = {key: BC.empty(), iv: BC.empty()}) {
    let aes = new mAES.AES_CBC_PKCS7();
 
    return new BC(
      aes.decrypt(
        BC.from(options.key).buffer,
        BC.from(value).buffer,
        BC.from(options.iv).buffer
      )
    );
  }
}
 
module.exports = CBCPKCS7;