Fix twofish cipher: did not accept typed arrays.

This commit is contained in:
Thomas Oberndörfer 2014-04-25 16:35:43 +02:00
parent e1dffffe8d
commit b7847c072a

View File

@ -337,7 +337,7 @@ var util = require('../../util.js');
// added by Recurity Labs // added by Recurity Labs
function TFencrypt(block, key) { function TFencrypt(block, key) {
var block_copy = [].concat(block); var block_copy = toArray(block);
var tf = createTwofish(); var tf = createTwofish();
tf.open(util.str2bin(key), 0); tf.open(util.str2bin(key), 0);
var result = tf.encrypt(block_copy, 0); var result = tf.encrypt(block_copy, 0);
@ -350,10 +350,19 @@ function TF(key) {
this.tf.open(util.str2bin(key), 0); this.tf.open(util.str2bin(key), 0);
this.encrypt = function(block) { this.encrypt = function(block) {
return this.tf.encrypt([].concat(block), 0); return this.tf.encrypt(toArray(block), 0);
}; };
} }
function toArray(typedArray) {
// Array.apply([], typedArray) does not work in PhantomJS 1.9
var result = [];
for (var i = 0; i < typedArray.length; i++) {
result[i] = typedArray[i];
}
return result;
}
module.exports = TF; module.exports = TF;
module.exports.keySize = TF.prototype.keySize = 32; module.exports.keySize = TF.prototype.keySize = 32;