Warn user with signature null for wrong public key instead of exception.

This commit is contained in:
Tankred Hase 2014-07-01 14:56:53 +02:00
parent 62debad52d
commit 8c93688b0e
2 changed files with 13 additions and 14 deletions

View File

@ -236,16 +236,18 @@ Message.prototype.verify = function(keys) {
for (var i = 0; i < signatureList.length; i++) { for (var i = 0; i < signatureList.length; i++) {
keyPacket = key.getKeyPacket([signatureList[i].issuerKeyId]); keyPacket = key.getKeyPacket([signatureList[i].issuerKeyId]);
if (keyPacket) { if (keyPacket) {
var verifiedSig = {};
verifiedSig.keyid = signatureList[i].issuerKeyId;
verifiedSig.valid = signatureList[i].verify(keyPacket, literalDataList[0]);
result.push(verifiedSig);
break; break;
} }
} }
if (!keyPacket) { var verifiedSig = {};
throw new Error('No matching signature found for specified keys.'); if (keyPacket) {
verifiedSig.keyid = signatureList[i].issuerKeyId;
verifiedSig.valid = signatureList[i].verify(keyPacket, literalDataList[0]);
} else {
verifiedSig.keyid = key.primaryKey.keyid;
verifiedSig.valid = null;
} }
result.push(verifiedSig);
}); });
return result; return result;
}; };

View File

@ -84,14 +84,11 @@ describe('Basic', function() {
var anotherKey = openpgp.generateKeyPair({numBits: 512, userId: userid, passphrase: passphrase}); var anotherKey = openpgp.generateKeyPair({numBits: 512, userId: userid, passphrase: passphrase});
var anotherPubKey = openpgp.key.readArmored(anotherKey.publicKeyArmored).keys[0]; var anotherPubKey = openpgp.key.readArmored(anotherKey.publicKeyArmored).keys[0];
var decrypted; var decrypted = openpgp.decryptAndVerifyMessage(privKey, [anotherPubKey], msg);
try { expect(decrypted).to.exist;
decrypted = openpgp.decryptAndVerifyMessage(privKey, [anotherPubKey], msg); expect(decrypted.signatures[0].valid).to.be.null;
} catch(e) { expect(decrypted.text).to.equal(message);
expect(e).to.exist; done();
expect(decrypted).to.not.exist;
done();
}
}); });
it('Performance test', function (done) { it('Performance test', function (done) {