pkcs7
This is a standard algorithm for the purposes of padding a block for a block cipher. It will be used in CBC, which in turned will be used with AES for ECIES.
This commit is contained in:
parent
1dead4cbc4
commit
1b1ecd989a
|
@ -0,0 +1,14 @@
|
||||||
|
var Random = require('../random');
|
||||||
|
|
||||||
|
var CBC = function CBC() {
|
||||||
|
};
|
||||||
|
|
||||||
|
CBC.pkcs7pad = function(buf, blocksize) {
|
||||||
|
var bytesize = blocksize / 8;
|
||||||
|
var padbytesize = bytesize - buf.length;
|
||||||
|
var pad = new Buffer(padbytesize);
|
||||||
|
pad.fill(padbytesize);
|
||||||
|
return Buffer.concat([buf, pad]);
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = CBC;
|
|
@ -0,0 +1,21 @@
|
||||||
|
var should = require('chai').should();
|
||||||
|
var CBC = require('../lib/expmt/cbc');
|
||||||
|
|
||||||
|
describe('CBC', function() {
|
||||||
|
|
||||||
|
describe('@pkcs7pad', function() {
|
||||||
|
|
||||||
|
it('should pad this 32 bit buffer to 128 bits with the number 128/8 - 32/8', function() {
|
||||||
|
var buf = new Buffer(32 / 8);
|
||||||
|
buf.fill(0);
|
||||||
|
var padbuf = CBC.pkcs7pad(buf, 128);
|
||||||
|
padbuf.length.should.equal(128 / 8);
|
||||||
|
padbuf[32 / 8].should.equal(128 / 8 - 32 / 8);
|
||||||
|
padbuf[32 / 8 + 1].should.equal(128 / 8 - 32 / 8);
|
||||||
|
// ...
|
||||||
|
padbuf[32 / 8 + 128 / 8 - 32 / 8 - 1].should.equal(128 / 8 - 32 / 8);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
Loading…
Reference in New Issue