File indexing completed on 2024-06-23 05:18:33
0001 /* 0002 SPDX-FileCopyrightText: 2009 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.net 0003 SPDX-FileCopyrightText: 2009 Leo Franchi <lfranchi@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include "abstractencryptjob.h" 0011 #include "contentjobbase.h" 0012 #include "messagecomposer_export.h" 0013 #include "part/infopart.h" 0014 0015 #include <Libkleo/Enum> 0016 0017 #include <gpgme++/key.h> 0018 #include <vector> 0019 0020 namespace KMime 0021 { 0022 class Content; 0023 } 0024 0025 namespace MessageComposer 0026 { 0027 class SignEncryptJobPrivate; 0028 0029 /** 0030 Signs and encrypt the contents of a message. 0031 Used when doing inline pgp sign+encrypt 0032 */ 0033 class MESSAGECOMPOSER_EXPORT SignEncryptJob : public ContentJobBase, public MessageComposer::AbstractEncryptJob 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 explicit SignEncryptJob(QObject *parent = nullptr); 0039 ~SignEncryptJob() override; 0040 0041 void setContent(KMime::Content *content); 0042 void setCryptoMessageFormat(Kleo::CryptoMessageFormat format); 0043 void setSigningKeys(const std::vector<GpgME::Key> &signers); 0044 0045 void setEncryptionKeys(const std::vector<GpgME::Key> &keys) override; 0046 void setRecipients(const QStringList &rec) override; 0047 0048 void setSkeletonMessage(KMime::Message *skeletonMessage); 0049 0050 void setProtectedHeaders(bool protectedHeaders); 0051 void setProtectedHeadersObvoscate(bool protectedHeadersObvoscate); 0052 0053 [[nodiscard]] std::vector<GpgME::Key> encryptionKeys() const override; 0054 [[nodiscard]] QStringList recipients() const override; 0055 0056 [[nodiscard]] KMime::Content *origContent(); 0057 0058 protected Q_SLOTS: 0059 void doStart() override; 0060 void slotResult(KJob *job) override; 0061 void process() override; 0062 0063 private: 0064 Q_DECLARE_PRIVATE(SignEncryptJob) 0065 }; 0066 }