From 11fd2313a7b102d5c360af5cb670341366c52d17 Mon Sep 17 00:00:00 2001 From: Daniel Huigens Date: Wed, 31 Oct 2018 11:09:35 +0100 Subject: [PATCH] Fix unhandled promise rejection when decrypting non-MDC message --- src/packet/symmetrically_encrypted.js | 3 ++- test/general/packet.js | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/packet/symmetrically_encrypted.js b/src/packet/symmetrically_encrypted.js index 953961b6..da730b19 100644 --- a/src/packet/symmetrically_encrypted.js +++ b/src/packet/symmetrically_encrypted.js @@ -78,7 +78,8 @@ SymmetricallyEncrypted.prototype.write = function () { * @async */ SymmetricallyEncrypted.prototype.decrypt = async function (sessionKeyAlgorithm, key) { - const decrypted = crypto.cfb.decrypt(sessionKeyAlgorithm, key, await stream.readToEnd(this.encrypted), true); + this.encrypted = await stream.readToEnd(this.encrypted); + const decrypted = crypto.cfb.decrypt(sessionKeyAlgorithm, key, this.encrypted, true); // If MDC errors are not being ignored, all missing MDC packets in symmetrically encrypted data should throw an error if (!this.ignore_mdc_error) { throw new Error('Decryption failed due to missing MDC.'); diff --git a/test/general/packet.js b/test/general/packet.js index dacc0b6e..e076a27e 100644 --- a/test/general/packet.js +++ b/test/general/packet.js @@ -77,12 +77,12 @@ describe("Packet", function() { await enc.encrypt(algo, key); - const msg2 = new openpgp.packet.List(); - await msg2.read(message.write()); - msg2[0].ignore_mdc_error = true; - await msg2[0].decrypt(algo, key); + const msg2 = new openpgp.message.Message(); + await msg2.packets.read(message.write()); + msg2.packets[0].ignore_mdc_error = true; + const dec = await msg2.decrypt(null, null, [{ algorithm: algo, data: key }]); - expect(await stringify(msg2[0].packets[0].data)).to.equal(stringify(literal.data)); + expect(await stringify(dec.packets[0].data)).to.equal(stringify(literal.data)); }); it('Symmetrically encrypted packet - MDC error for modern cipher', async function() {