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

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     crypto/signencrypttask.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 class QString;
0022 
0023 namespace GpgME
0024 {
0025 class Key;
0026 }
0027 
0028 namespace Kleo
0029 {
0030 class OverwritePolicy;
0031 class Input;
0032 class Output;
0033 }
0034 
0035 namespace Kleo
0036 {
0037 namespace Crypto
0038 {
0039 
0040 class SignEncryptTask : public Task
0041 {
0042     Q_OBJECT
0043 public:
0044     explicit SignEncryptTask(QObject *parent = nullptr);
0045     ~SignEncryptTask() override;
0046 
0047     void setInputFileName(const QString &fileName);
0048     void setInputFileNames(const QStringList &fileNames);
0049     void setInput(const std::shared_ptr<Input> &input);
0050     void setOutput(const std::shared_ptr<Output> &output);
0051     void setOutputFileName(const QString &fileName);
0052     QString outputFileName() const;
0053     void setSigners(const std::vector<GpgME::Key> &signers);
0054     void setRecipients(const std::vector<GpgME::Key> &recipients);
0055 
0056     void setSign(bool sign);
0057     void setEncrypt(bool encrypt);
0058     void setDetachedSignature(bool detached);
0059     void setEncryptSymmetric(bool symmetric);
0060     void setClearsign(bool clearsign);
0061     void setCreateArchive(bool archive);
0062 
0063     void setOverwritePolicy(const std::shared_ptr<OverwritePolicy> &policy);
0064     GpgME::Protocol protocol() const override;
0065 
0066     void cancel() override;
0067     QString label() const override;
0068     QString tag() const override;
0069 
0070 private:
0071     void doStart() override;
0072     unsigned long long inputSize() const override;
0073 
0074 private:
0075     class Private;
0076     kdtools::pimpl_ptr<Private> d;
0077     Q_PRIVATE_SLOT(d, void slotResult(const GpgME::SigningResult &))
0078     Q_PRIVATE_SLOT(d, void slotResult(const GpgME::SigningResult &, const GpgME::EncryptionResult &))
0079     Q_PRIVATE_SLOT(d, void slotResult(const GpgME::EncryptionResult &))
0080 };
0081 
0082 }
0083 }