Fixes for symmetrically encrypted session keys

This commit is contained in:
Bart Butler
2015-03-15 17:17:06 -07:00
committed by Tankred Hase
parent 6c4e0ed6a0
commit 2e4e9387a0
9 changed files with 243 additions and 107 deletions

View File

@@ -157,20 +157,23 @@ var priv_key_de =
'-----END PGP PRIVATE KEY BLOCK-----'].join('\n');
var plaintext = 'short message\nnext line\n한국어/조선말';
var plaintext = 'short message\nnext line\n한국어/조선말';
var pubKeyRSA, privKeyRSA, pubKeyDE, privKeyDE;
var password1 = 'I am a password';
var password2 = 'I am another password';
function initKeys() {
pubKeyRSA = openpgp.key.readArmored(pub_key_rsa).keys[0];
expect(pubKeyRSA).to.exist;
privKeyRSA = openpgp.key.readArmored(priv_key_rsa).keys[0];
expect(privKeyRSA).to.exist;
pubKeyDE = openpgp.key.readArmored(pub_key_de).keys[0];
expect(pubKeyDE).to.exist;
privKeyDE = openpgp.key.readArmored(priv_key_de).keys[0];
expect(privKeyDE).to.exist;
}
var pubKeyRSA, privKeyRSA, pubKeyDE, privKeyDE;
function initKeys() {
pubKeyRSA = openpgp.key.readArmored(pub_key_rsa).keys[0];
expect(pubKeyRSA).to.exist;
privKeyRSA = openpgp.key.readArmored(priv_key_rsa).keys[0];
expect(privKeyRSA).to.exist;
pubKeyDE = openpgp.key.readArmored(pub_key_de).keys[0];
expect(pubKeyDE).to.exist;
privKeyDE = openpgp.key.readArmored(priv_key_de).keys[0];
expect(privKeyDE).to.exist;
}
describe('Init Worker', function() {
@@ -215,8 +218,8 @@ describe('High level API', function() {
});
describe('Encryption', function() {
it('RSA: encryptMessage async', function (done) {
openpgp.encryptMessage([pubKeyRSA], plaintext).then(function(data) {
it('AES: encryptMessage one password async', function (done) {
openpgp.encryptMessage([], plaintext, password1).then(function(data) {
expect(data).to.exist;
expect(data).to.match(/^-----BEGIN PGP MESSAGE/);
var msg = openpgp.message.readArmored(data);
@@ -235,6 +238,26 @@ describe('High level API', function() {
});
});
it('RSA: encryptMessage one key one password async', function (done) {
openpgp.encryptMessage(pubKeyRSA, plaintext, password1).then(function(data) {
expect(data).to.exist;
expect(data).to.match(/^-----BEGIN PGP MESSAGE/);
var msg = openpgp.message.readArmored(data);
expect(msg).to.be.an.instanceof(openpgp.message.Message);
done();
});
});
it('RSA: encryptMessage one key two passwords async', function (done) {
openpgp.encryptMessage(pubKeyRSA, plaintext, [password1, password2]).then(function(data) {
expect(data).to.exist;
expect(data).to.match(/^-----BEGIN PGP MESSAGE/);
var msg = openpgp.message.readArmored(data);
expect(msg).to.be.an.instanceof(openpgp.message.Message);
done();
});
});
it('ELG: encryptMessage async', function (done) {
openpgp.encryptMessage([pubKeyDE], plaintext).then(function(data) {
expect(data).to.exist;
@@ -254,7 +277,7 @@ describe('High level API', function() {
before(function() {
privKeyRSA.decrypt('hello world');
privKeyDE.decrypt('hello world');
msgRSA = openpgp.message.fromText(plaintext).encrypt([pubKeyRSA]);
msgRSA = openpgp.message.fromText(plaintext).encrypt([pubKeyRSA],[password1, password2]);
msgDE = openpgp.message.fromText(plaintext).encrypt([pubKeyDE]);
});
@@ -274,6 +297,21 @@ describe('High level API', function() {
});
});
it('AES: decryptMessage password1 async', function (done) {
openpgp.decryptMessage(password1, msgRSA).then(function(data) {
expect(data).to.exist;
expect(data).to.equal(plaintext);
done();
});
});
it('AES: decryptMessage password2 async', function (done) {
openpgp.decryptMessage(password2, msgRSA).then(function(data) {
expect(data).to.exist;
expect(data).to.equal(plaintext);
done();
});
});
});
function verifySignature(data, privKey) {