diff --git a/src/message.js b/src/message.js index 5fd6ffc8..8adacfb1 100644 --- a/src/message.js +++ b/src/message.js @@ -236,16 +236,18 @@ Message.prototype.verify = function(keys) { for (var i = 0; i < signatureList.length; i++) { keyPacket = key.getKeyPacket([signatureList[i].issuerKeyId]); if (keyPacket) { - var verifiedSig = {}; - verifiedSig.keyid = signatureList[i].issuerKeyId; - verifiedSig.valid = signatureList[i].verify(keyPacket, literalDataList[0]); - result.push(verifiedSig); break; } } - if (!keyPacket) { - throw new Error('No matching signature found for specified keys.'); + var verifiedSig = {}; + 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; }; diff --git a/test/general/basic.js b/test/general/basic.js index 060b7414..c954b42b 100644 --- a/test/general/basic.js +++ b/test/general/basic.js @@ -84,14 +84,11 @@ describe('Basic', function() { var anotherKey = openpgp.generateKeyPair({numBits: 512, userId: userid, passphrase: passphrase}); var anotherPubKey = openpgp.key.readArmored(anotherKey.publicKeyArmored).keys[0]; - var decrypted; - try { - decrypted = openpgp.decryptAndVerifyMessage(privKey, [anotherPubKey], msg); - } catch(e) { - expect(e).to.exist; - expect(decrypted).to.not.exist; - done(); - } + var decrypted = openpgp.decryptAndVerifyMessage(privKey, [anotherPubKey], msg); + expect(decrypted).to.exist; + expect(decrypted.signatures[0].valid).to.be.null; + expect(decrypted.text).to.equal(message); + done(); }); it('Performance test', function (done) {