Sha256: 40d673d3647384f69e74cc41cf429b564437cba1a41d3b04558ef300e512a163

Contents?: true

Size: 1.31 KB

Versions: 30

Compression:

Stored size: 1.31 KB

Contents

'use strict';

var assert = require('minimalistic-assert');
var inherits = require('inherits');

var des = require('../des');
var Cipher = des.Cipher;
var DES = des.DES;

function EDEState(type, key) {
  assert.equal(key.length, 24, 'Invalid key length');

  var k1 = key.slice(0, 8);
  var k2 = key.slice(8, 16);
  var k3 = key.slice(16, 24);

  if (type === 'encrypt') {
    this.ciphers = [
      DES.create({ type: 'encrypt', key: k1 }),
      DES.create({ type: 'decrypt', key: k2 }),
      DES.create({ type: 'encrypt', key: k3 })
    ];
  } else {
    this.ciphers = [
      DES.create({ type: 'decrypt', key: k3 }),
      DES.create({ type: 'encrypt', key: k2 }),
      DES.create({ type: 'decrypt', key: k1 })
    ];
  }
}

function EDE(options) {
  Cipher.call(this, options);

  var state = new EDEState(this.type, this.options.key);
  this._edeState = state;
}
inherits(EDE, Cipher);

module.exports = EDE;

EDE.create = function create(options) {
  return new EDE(options);
};

EDE.prototype._update = function _update(inp, inOff, out, outOff) {
  var state = this._edeState;

  state.ciphers[0]._update(inp, inOff, out, outOff);
  state.ciphers[1]._update(out, outOff, out, outOff);
  state.ciphers[2]._update(out, outOff, out, outOff);
};

EDE.prototype._pad = DES.prototype._pad;
EDE.prototype._unpad = DES.prototype._unpad;

Version data entries

30 entries across 30 versions & 10 rubygems

Version Path
disco_app-0.18.0 test/dummy/node_modules/des.js/lib/des/ede.js
disco_app-0.18.2 test/dummy/node_modules/des.js/lib/des/ede.js
disco_app-0.16.1 test/dummy/node_modules/des.js/lib/des/ede.js
disco_app-0.15.2 test/dummy/node_modules/des.js/lib/des/ede.js
disco_app-0.18.4 test/dummy/node_modules/des.js/lib/des/ede.js
disco_app-0.18.1 test/dummy/node_modules/des.js/lib/des/ede.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/des.js/lib/des/ede.js
disco_app-0.14.0 test/dummy/node_modules/des.js/lib/des/ede.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/des.js/lib/des/ede.js
jester-data-8.0.0 node_modules/des.js/lib/des/ede.js
ezii-os-5.2.1 node_modules/des.js/lib/des/ede.js
ezii-os-2.0.1 node_modules/des.js/lib/des/ede.js
ezii-os-1.1.0 node_modules/des.js/lib/des/ede.js
ezii-os-1.0.0 node_modules/des.js/lib/des/ede.js
ezii-os-0.0.0.1.0 node_modules/des.js/lib/des/ede.js
ezii-os-0.0.0.0.1 node_modules/des.js/lib/des/ede.js
optimacms-0.4.3 spec/dummy/node_modules/des.js/lib/des/ede.js
optimacms-0.4.2 spec/dummy/node_modules/des.js/lib/des/ede.js
locomotivecms-4.0.0.alpha1 app/javascript/node_modules/des.js/lib/des/ede.js
locomotivecms-3.4.0 app/javascript/node_modules/des.js/lib/des/ede.js