fork-openpgpjs/test/crypto/pkcs5.js
Daniel Huigens 0e33e641af Switch build system to rollup
Also, default to minimized builds.
2021-02-09 19:25:20 +01:00

40 lines
1.2 KiB
JavaScript

const openpgp = typeof window !== 'undefined' && window.openpgp ? window.openpgp : require('../..');
const expect = require('chai').expect;
module.exports = () => describe('PKCS5 padding', function() {
function repeat(pattern, count) {
let result = '';
for (let k = 0; k < count; ++k) {
result += pattern;
}
return result;
}
const pkcs5 = openpgp.crypto.pkcs5;
it('Add padding', function () {
let s = '';
while (s.length < 16) {
const r = pkcs5.encode(s);
// 0..7 -> 8, 8..15 -> 16
const l = Math.ceil((s.length + 1) / 8) * 8;
const c = l - s.length;
expect(r.length).to.equal(l);
expect(c).is.at.least(1).is.at.most(8);
expect(r.substr(-1)).to.equal(String.fromCharCode(c));
s += ' ';
}
});
it('Remove padding', function () {
for (let k = 1; k <= 8; ++k) {
const s = repeat(' ', 8 - k);
const r = s + repeat(String.fromCharCode(k), k);
const t = pkcs5.decode(r);
expect(t).to.equal(s);
}
});
it('Invalid padding', function () {
expect(function () { pkcs5.decode(' '); }).to.throw(Error, /Invalid padding/);
expect(function () { pkcs5.decode(''); }).to.throw(Error, /Invalid padding/);
});
});