diff options
-rw-r--r-- | framework/src/domain/mime/mimetreeparser/messagepart.cpp | 19 | ||||
-rw-r--r-- | framework/src/domain/mime/mimetreeparser/tests/interfacetest.cpp | 15 |
2 files changed, 25 insertions, 9 deletions
diff --git a/framework/src/domain/mime/mimetreeparser/messagepart.cpp b/framework/src/domain/mime/mimetreeparser/messagepart.cpp index 5b532524..4f27704f 100644 --- a/framework/src/domain/mime/mimetreeparser/messagepart.cpp +++ b/framework/src/domain/mime/mimetreeparser/messagepart.cpp | |||
@@ -891,18 +891,19 @@ void SignedMessagePart::setVerificationResult(const GpgME::VerificationResult &r | |||
891 | sigStatusToMetaData(); | 891 | sigStatusToMetaData(); |
892 | if (mNode && !textNode) { | 892 | if (mNode && !textNode) { |
893 | mOtp->mNodeHelper->setPartMetaData(mNode, mMetaData); | 893 | mOtp->mNodeHelper->setPartMetaData(mNode, mMetaData); |
894 | if (!mVerifiedText.isEmpty()) { | 894 | } |
895 | auto tempNode = new KMime::Content(); | 895 | |
896 | tempNode->setContent(KMime::CRLFtoLF(mVerifiedText.constData())); | 896 | if (!mVerifiedText.isEmpty() && !textNode) { |
897 | tempNode->parse(); | ||
898 | bindLifetime(tempNode); | ||
899 | 897 | ||
900 | if (!tempNode->head().isEmpty()) { | 898 | auto tempNode = new KMime::Content(); |
901 | tempNode->contentDescription()->from7BitString("signed data"); | 899 | tempNode->setContent(KMime::CRLFtoLF(mVerifiedText.constData())); |
902 | } | 900 | tempNode->parse(); |
901 | bindLifetime(tempNode); | ||
903 | 902 | ||
904 | parseInternal(tempNode, false); | 903 | if (!tempNode->head().isEmpty()) { |
904 | tempNode->contentDescription()->from7BitString("signed data"); | ||
905 | } | 905 | } |
906 | parseInternal(tempNode, false); | ||
906 | } | 907 | } |
907 | } | 908 | } |
908 | } | 909 | } |
diff --git a/framework/src/domain/mime/mimetreeparser/tests/interfacetest.cpp b/framework/src/domain/mime/mimetreeparser/tests/interfacetest.cpp index 15c573e2..a8e608ba 100644 --- a/framework/src/domain/mime/mimetreeparser/tests/interfacetest.cpp +++ b/framework/src/domain/mime/mimetreeparser/tests/interfacetest.cpp | |||
@@ -358,6 +358,21 @@ private slots: | |||
358 | QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted); | 358 | QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted); |
359 | QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned); | 359 | QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned); |
360 | } | 360 | } |
361 | |||
362 | void testEncryptedAndSigned() | ||
363 | { | ||
364 | MimeTreeParser::ObjectTreeParser otp; | ||
365 | otp.parseObjectTree(readMailFromFile("openpgp-encrypted+signed.mbox")); | ||
366 | otp.decryptParts(); | ||
367 | auto partList = otp.collectContentParts(); | ||
368 | QCOMPARE(partList.size(), 1); | ||
369 | auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>(); | ||
370 | QCOMPARE(part->signatures().size(), 1); | ||
371 | QCOMPARE(part->encryptions().size(), 1); | ||
372 | QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted); | ||
373 | QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned); | ||
374 | QVERIFY(otp.plainTextContent().contains(QString::fromUtf8("encrypted message text"))); | ||
375 | } | ||
361 | }; | 376 | }; |
362 | 377 | ||
363 | QTEST_GUILESS_MAIN(InterfaceTest) | 378 | QTEST_GUILESS_MAIN(InterfaceTest) |