All files / crypto/src/Encryption/AES CBCZeroPadding.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                   1x   1x                         106x   106x                   1x  
const Abstract = require('./../Abstract');
const AES_CBC_ZeroPadding = require('./../../mipher/AES_CBC_ZeroPadding');
const BC = require('@pascalcoin-sbx/common').BC;
 
/**
 * AES-CBC Zero Padding implementation.
 */
class CBCZeroPadding extends Abstract {
  /**
   * @inheritDoc Abstract#encrypt
   */
  static encrypt(value, options = {key: BC.empty(), iv: BC.empty()}) {
    let aes = new AES_CBC_ZeroPadding();
 
    return new BC(
      aes.encrypt(
        BC.from(options.key).buffer,
        BC.from(value).buffer,
        BC.from(options.iv).buffer
      )
    );
  }
 
  /**
   * @inheritDoc Abstract#encrypt
   */
  static decrypt(value, options = {key: BC.empty(), iv: BC.empty()}) {
    let aes = new AES_CBC_ZeroPadding();
 
    return new BC(
      aes.decrypt(
        BC.from(options.key).buffer,
        BC.from(value).buffer,
        BC.from(options.iv).buffer
      )
    );
  }
}
 
module.exports = CBCZeroPadding;