84 lines
2.9 KiB
JavaScript
84 lines
2.9 KiB
JavaScript
/* globals tryTests: true */
|
|
|
|
const openpgp = typeof window !== 'undefined' && window.openpgp ? window.openpgp : require('../../dist/openpgp');
|
|
|
|
const chai = require('chai');
|
|
chai.use(require('chai-as-promised'));
|
|
|
|
const expect = chai.expect;
|
|
|
|
describe('Brainpool Cryptography', function () {
|
|
// TODO add test vectors encrypted and signed by GnuPG or other implementation
|
|
|
|
function omnibus() {
|
|
it('Omnibus BrainpoolP256r1 Test', function () {
|
|
const options = { userIds: {name: "Hi", email: "hi@hel.lo"}, curve: "brainpoolP256r1" };
|
|
return openpgp.generateKey(options).then(function (firstKey) {
|
|
const hi = firstKey.key;
|
|
const pubHi = hi.toPublic();
|
|
|
|
const options = { userIds: { name: "Bye", email: "bye@good.bye" }, curve: "brainpoolP256r1" };
|
|
return openpgp.generateKey(options).then(function (secondKey) {
|
|
const bye = secondKey.key;
|
|
const pubBye = bye.toPublic();
|
|
|
|
return Promise.all([
|
|
// Signing message
|
|
openpgp.sign(
|
|
{ data: 'Hi, this is me, Hi!', privateKeys: hi }
|
|
).then(signed => {
|
|
const msg = openpgp.cleartext.readArmored(signed.data);
|
|
// Verifying signed message
|
|
return Promise.all([
|
|
openpgp.verify(
|
|
{ message: msg, publicKeys: pubHi }
|
|
).then(output => expect(output.signatures[0].valid).to.be.true),
|
|
// Verifying detached signature
|
|
openpgp.verify(
|
|
{ message: openpgp.message.fromText('Hi, this is me, Hi!'),
|
|
publicKeys: pubHi,
|
|
signature: openpgp.signature.readArmored(signed.data) }
|
|
).then(output => expect(output.signatures[0].valid).to.be.true)
|
|
]);
|
|
}),
|
|
// Encrypting and signing
|
|
openpgp.encrypt(
|
|
{ data: 'Hi, Hi wrote this but only Bye can read it!',
|
|
publicKeys: [pubBye],
|
|
privateKeys: [hi] }
|
|
).then(encrypted => {
|
|
const msg = openpgp.message.readArmored(encrypted.data);
|
|
// Decrypting and verifying
|
|
return openpgp.decrypt(
|
|
{ message: msg,
|
|
privateKeys: bye,
|
|
publicKeys: [pubHi] }
|
|
).then(output => {
|
|
expect(output.data).to.equal('Hi, Hi wrote this but only Bye can read it!');
|
|
expect(output.signatures[0].valid).to.be.true;
|
|
});
|
|
})
|
|
]);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
omnibus();
|
|
|
|
tryTests('Brainpool Worker Tests', omnibus, {
|
|
if: typeof window !== 'undefined' && window.Worker,
|
|
before: function() {
|
|
openpgp.initWorker({ path:'../dist/openpgp.worker.js' });
|
|
},
|
|
beforeEach: function() {
|
|
openpgp.config.use_native = true;
|
|
},
|
|
after: function() {
|
|
openpgp.destroyWorker();
|
|
}
|
|
});
|
|
|
|
// TODO find test vectors
|
|
});
|