diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-02-20 19:04:04 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-02-20 19:22:04 +0100 |
commit | e8632e18e0bef91873c6024073b5f461c07d6fe3 (patch) | |
tree | 21f068ccd2fe956c34719d3a0dc35432e5d7e8e8 /framework/src | |
parent | 555843597e8a36525a3ee0eeb6f72d04387297cd (diff) | |
download | kube-e8632e18e0bef91873c6024073b5f461c07d6fe3.tar.gz kube-e8632e18e0bef91873c6024073b5f461c07d6fe3.zip |
Fixed encrypted+signed messages
Diffstat (limited to 'framework/src')
-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) |