From d87ba100ac9d012e13eddbeb460c0a658860311f Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 16 Jul 2018 02:21:00 +0200 Subject: Get the correct encryption key, not the first. --- .../src/domain/mime/mimetreeparser/messagepart.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'framework') diff --git a/framework/src/domain/mime/mimetreeparser/messagepart.cpp b/framework/src/domain/mime/mimetreeparser/messagepart.cpp index 4c12a9d9..611a04c5 100644 --- a/framework/src/domain/mime/mimetreeparser/messagepart.cpp +++ b/framework/src/domain/mime/mimetreeparser/messagepart.cpp @@ -927,8 +927,15 @@ bool EncryptedMessagePart::okDecryptMIME(KMime::Content &data) return true; } - if (mMetaData.isEncrypted && decryptResult.recipients.size()) { - mMetaData.keyId = decryptResult.recipients.at(0).keyId; + if (mMetaData.isEncrypted) { + mMetaData.keyId = [&] { + foreach (const auto &recipient, decryptResult.recipients) { + if (recipient.status.errorCode() != GPG_ERR_NO_SECKEY) { + return recipient.keyId; + } + } + return QByteArray{}; + }(); } if (!decryptResult.error) { @@ -939,14 +946,7 @@ bool EncryptedMessagePart::okDecryptMIME(KMime::Content &data) mMetaData.isEncrypted = errorCode != GPG_ERR_NO_DATA; qWarning() << "Failed to decrypt : " << decryptResult.error; - const bool noSecretKeyAvilable = [&] { - foreach (const auto &recipient, decryptResult.recipients) { - if (!(recipient.status.errorCode() == GPG_ERR_NO_SECKEY)) { - return false; - } - } - return true; - }(); + const bool noSecretKeyAvilable = mMetaData.keyId.isEmpty(); bool passphraseError = errorCode == GPG_ERR_CANCELED || errorCode == GPG_ERR_NO_SECKEY; //We only get a decryption failed error when we enter the wrong passphrase.... if (!passphraseError && !noSecretKeyAvilable) { -- cgit v1.2.3