xor buffers ... will be useful for CBC
This commit is contained in:
parent
e097fe23ec
commit
38d9ab65af
|
@ -1,6 +1,11 @@
|
||||||
var Random = require('../random');
|
var Random = require('../random');
|
||||||
|
|
||||||
var CBC = function CBC() {
|
var CBC = function CBC(blockcipherf, keybuf, ivbuf) {
|
||||||
|
if (!(this instanceof CBC))
|
||||||
|
return new CBC(blockcipherf, keybuf, ivbuf);
|
||||||
|
this.blockcipherf = blockcipherf;
|
||||||
|
this.keybuf = keybuf;
|
||||||
|
this.ivbuf = ivbuf;
|
||||||
};
|
};
|
||||||
|
|
||||||
CBC.pkcs7pad = function(buf, blocksize) {
|
CBC.pkcs7pad = function(buf, blocksize) {
|
||||||
|
@ -11,4 +16,17 @@ CBC.pkcs7pad = function(buf, blocksize) {
|
||||||
return Buffer.concat([buf, pad]);
|
return Buffer.concat([buf, pad]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CBC.xorbufs = function(buf1, buf2) {
|
||||||
|
if (buf1.length !== buf2.length)
|
||||||
|
throw new Error('bufs must have the same length');
|
||||||
|
|
||||||
|
var buf = new Buffer(buf1.length);
|
||||||
|
|
||||||
|
for (var i = 0; i < buf1.length; i++) {
|
||||||
|
buf[i] = buf1[i] ^ buf2[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf;
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = CBC;
|
module.exports = CBC;
|
||||||
|
|
|
@ -3,6 +3,16 @@ var CBC = require('../lib/expmt/cbc');
|
||||||
|
|
||||||
describe('CBC', function() {
|
describe('CBC', function() {
|
||||||
|
|
||||||
|
it('should return a new CBC', function() {
|
||||||
|
var cbc = new CBC();
|
||||||
|
should.exist(cbc);
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return a new CBC when called without "new"', function() {
|
||||||
|
var cbc = new CBC();
|
||||||
|
should.exist(cbc);
|
||||||
|
});
|
||||||
|
|
||||||
describe('@pkcs7pad', function() {
|
describe('@pkcs7pad', function() {
|
||||||
|
|
||||||
it('should pad this 32 bit buffer to 128 bits with the number 128/8 - 32/8', function() {
|
it('should pad this 32 bit buffer to 128 bits with the number 128/8 - 32/8', function() {
|
||||||
|
@ -18,4 +28,22 @@ describe('CBC', function() {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('@xorbufs', function() {
|
||||||
|
|
||||||
|
it('should xor 1 and 0', function() {
|
||||||
|
var buf1 = new Buffer([1]);
|
||||||
|
var buf2 = new Buffer([0]);
|
||||||
|
var buf = CBC.xorbufs(buf1, buf2);
|
||||||
|
buf[0].should.equal(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should xor 1 and 1', function() {
|
||||||
|
var buf1 = new Buffer([1]);
|
||||||
|
var buf2 = new Buffer([1]);
|
||||||
|
var buf = CBC.xorbufs(buf1, buf2);
|
||||||
|
buf[0].should.equal(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue