File indexing completed on 2024-06-16 04:55:58

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     crypto/signemailtask.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include <crypto/task.h>
0013 
0014 #include <utils/pimpl_ptr.h>
0015 
0016 #include <gpgme++/global.h>
0017 
0018 #include <memory>
0019 #include <vector>
0020 
0021 namespace GpgME
0022 {
0023 class Key;
0024 }
0025 
0026 namespace Kleo
0027 {
0028 class Input;
0029 class Output;
0030 }
0031 
0032 namespace Kleo
0033 {
0034 namespace Crypto
0035 {
0036 
0037 class SignEMailTask : public Task
0038 {
0039     Q_OBJECT
0040 public:
0041     explicit SignEMailTask(QObject *parent = nullptr);
0042     ~SignEMailTask() override;
0043 
0044     void setInput(const std::shared_ptr<Input> &input);
0045     void setOutput(const std::shared_ptr<Output> &output);
0046     void setSigners(const std::vector<GpgME::Key> &recipients);
0047 
0048     void setDetachedSignature(bool detached);
0049     void setClearsign(bool clear);
0050 
0051     GpgME::Protocol protocol() const override;
0052 
0053     void cancel() override;
0054     QString label() const override;
0055 
0056     QString micAlg() const;
0057 
0058 private:
0059     void doStart() override;
0060     unsigned long long inputSize() const override;
0061 
0062 private:
0063     class Private;
0064     kdtools::pimpl_ptr<Private> d;
0065     Q_PRIVATE_SLOT(d, void slotResult(const GpgME::SigningResult &))
0066 };
0067 
0068 }
0069 }