Time slots app prototype
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.3 KiB

import CipherBase from "../cipher-base";
import * as des from "../des/index.js";
import { inherits as inherits$0 } from "util";
var inherits = { inherits: inherits$0 }.inherits;
var modes = {
'des-ede3-cbc': des.CBC.instantiate(des.EDE),
'des-ede3': des.EDE,
'des-ede-cbc': des.CBC.instantiate(des.EDE),
'des-ede': des.EDE,
'des-cbc': des.CBC.instantiate(des.DES),
'des-ecb': des.DES
};
modes.des = modes['des-cbc'];
modes.des3 = modes['des-ede3-cbc'];
inherits(DES, CipherBase);
function DES(opts) {
CipherBase.call(this);
var modeName = opts.mode.toLowerCase();
var mode = modes[modeName];
var type;
if (opts.decrypt) {
type = 'decrypt';
}
else {
type = 'encrypt';
}
var key = opts.key;
if (!Buffer.isBuffer(key)) {
key = Buffer.from(key);
}
if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {
key = Buffer.concat([key, key.slice(0, 8)]);
}
var iv = opts.iv;
if (!Buffer.isBuffer(iv)) {
iv = Buffer.from(iv);
}
this._des = mode.create({
key: key,
iv: iv,
type: type
});
}
DES.prototype._update = function (data) {
return Buffer.from(this._des.update(data));
};
DES.prototype._final = function () {
return Buffer.from(this._des.final());
};
export default DES;