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 }