summaryrefslogtreecommitdiffstats
path: root/framework/src/domain/mime/partmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/domain/mime/partmodel.cpp')
-rw-r--r--framework/src/domain/mime/partmodel.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/framework/src/domain/mime/partmodel.cpp b/framework/src/domain/mime/partmodel.cpp
index 331ef379..bf11b52d 100644
--- a/framework/src/domain/mime/partmodel.cpp
+++ b/framework/src/domain/mime/partmodel.cpp
@@ -26,6 +26,9 @@
26#include <QMimeDatabase> 26#include <QMimeDatabase>
27#include <QTextDocument> 27#include <QTextDocument>
28 28
29#include <gpgme++/key.h>
30#include <gpgme.h>
31
29class PartModelPrivate 32class PartModelPrivate
30{ 33{
31public: 34public:
@@ -90,6 +93,7 @@ QHash<int, QByteArray> PartModel::roleNames() const
90 roles[ErrorString] = "errorString"; 93 roles[ErrorString] = "errorString";
91 roles[IsErrorRole] = "error"; 94 roles[IsErrorRole] = "error";
92 roles[SenderRole] = "sender"; 95 roles[SenderRole] = "sender";
96 roles[SignatureDetails] = "signatureDetails";
93 roles[DateRole] = "date"; 97 roles[DateRole] = "date";
94 return roles; 98 return roles;
95} 99}
@@ -232,6 +236,30 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
232 //No info 236 //No info
233 return "unknown"; 237 return "unknown";
234 } 238 }
239 case SignatureDetails: {
240 auto signatureInfo = new SignatureInfo;
241
242 const auto signatureParts = messagePart->signatures();
243 if (signatureParts.size() > 1) {
244 qWarning() << "Can't deal with more than one signature";
245 }
246 for (const auto &p : signatureParts) {
247 signatureInfo->mKeyId = p->partMetaData()->keyId;
248 signatureInfo->mKeyMissing = p->partMetaData()->sigSummary & GpgME::Signature::KeyMissing;
249 signatureInfo->mKeyExpired = p->partMetaData()->sigSummary & GpgME::Signature::KeyExpired;
250 signatureInfo->mKeyRevoked = p->partMetaData()->sigSummary & GpgME::Signature::KeyRevoked;
251 signatureInfo->mSigExpired = p->partMetaData()->sigSummary & GpgME::Signature::SigExpired;
252 signatureInfo->mCrlMissing = p->partMetaData()->sigSummary & GpgME::Signature::CrlMissing;
253 signatureInfo->mCrlTooOld = p->partMetaData()->sigSummary & GpgME::Signature::CrlTooOld;
254 signatureInfo->mSigner = p->partMetaData()->signer;
255 signatureInfo->mSignClass = p->partMetaData()->signClass;
256 signatureInfo->mSignerMailAddresses = p->partMetaData()->signerMailAddresses;
257 signatureInfo->mSignatureIsGood = p->partMetaData()->isGoodSignature;
258 signatureInfo->mKeyIsTrusted = p->partMetaData()->keyTrust & GpgME::Signature::Full ||
259 p->partMetaData()->keyTrust & GpgME::Signature::Ultimate;
260 }
261 return QVariant::fromValue(signatureInfo);
262 }
235 case ErrorType: 263 case ErrorType:
236 return messagePart->error(); 264 return messagePart->error();
237 case ErrorString: { 265 case ErrorString: {