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 "contentjobbase.h"
0011 #include "messagecomposer_export.h"
0012 #include <Libkleo/Enum>
0013 #include <MessageComposer/InfoPart>
0014 
0015 #include <gpgme++/key.h>
0016 #include <vector>
0017 
0018 namespace KMime
0019 {
0020 class Content;
0021 }
0022 
0023 namespace MessageComposer
0024 {
0025 class SignJobPrivate;
0026 
0027 /**
0028   Signs the contents of a message.
0029   Used as a subjob of CryptoMessage
0030 */
0031 class MESSAGECOMPOSER_EXPORT SignJob : public ContentJobBase
0032 {
0033     Q_OBJECT
0034 
0035 public:
0036     explicit SignJob(QObject *parent = nullptr);
0037     ~SignJob() override;
0038 
0039     void setContent(KMime::Content *content);
0040     void setCryptoMessageFormat(Kleo::CryptoMessageFormat format);
0041     void setSigningKeys(const std::vector<GpgME::Key> &signers);
0042 
0043     void setSkeletonMessage(KMime::Message *skeletonMessage);
0044     void setProtectedHeaders(bool protectedHeaders);
0045 
0046     [[nodiscard]] KMime::Content *origContent();
0047 
0048 protected Q_SLOTS:
0049     void doStart() override;
0050     void slotResult(KJob *job) override;
0051     void process() override;
0052 
0053 private:
0054     Q_DECLARE_PRIVATE(SignJob)
0055 };
0056 }