gpg.h (2352B)
1 #ifndef GPG_H 2 #define GPG_H 3 4 #include <QObject> 5 #include <QVector> 6 7 namespace Gpg 8 { 9 class ListKeysTask; 10 class FindKeyTask; 11 class GetKeyTrustTask; 12 class UpdateKeyTrustTask; 13 class DecryptTask; 14 class EncryptTask; 15 16 struct Key { 17 enum class Trust { 18 Unknown = 1, 19 Never = 2, 20 Marginal = 3, 21 Full = 4, 22 Ultimate = 5 23 }; 24 25 QString id; 26 }; 27 28 GetKeyTrustTask *getKeyTrust(const Key &key); 29 30 UpdateKeyTrustTask *updateKeyTrust(const Key &key, Key::Trust trust); 31 32 DecryptTask *decrypt(const QString &file, const Key &key, const QString &passphrase); 33 34 EncryptTask *encrypt(const QString &data, const Key &key, const QString &file); 35 36 37 class Task : public QObject { 38 Q_OBJECT 39 public: 40 bool error() const; 41 QString errorString() const; 42 43 Q_SIGNALS: 44 void finished(); 45 46 protected: 47 explicit Task(QObject *parent = nullptr); 48 49 virtual void run() = 0; 50 51 void setError(const QString &error); 52 53 private Q_SLOTS: 54 void start(); 55 56 private: 57 QString mError; 58 }; 59 60 class GetKeyTrustTask : public Task { 61 Q_OBJECT 62 friend GetKeyTrustTask *Gpg::getKeyTrust(const Key &); 63 public: 64 Gpg::Key::Trust trust() const; 65 66 protected: 67 void run() override; 68 69 private: 70 explicit GetKeyTrustTask(const Key &key); 71 72 Key mKey; 73 Key::Trust mTrust = Key::Trust::Never; 74 }; 75 76 class UpdateKeyTrustTask : public Task { 77 Q_OBJECT 78 friend UpdateKeyTrustTask *Gpg::updateKeyTrust(const Key &, Key::Trust); 79 protected: 80 void run() override; 81 82 private: 83 UpdateKeyTrustTask(const Gpg::Key &key, Gpg::Key::Trust trust); 84 85 Key mKey; 86 Key::Trust mTrust = Key::Trust::Never; 87 }; 88 89 class DecryptTask : public Task { 90 Q_OBJECT 91 friend DecryptTask *Gpg::decrypt(const QString &, const Key &, const QString &); 92 public: 93 QString content() const; 94 95 protected: 96 void run() override; 97 98 private: 99 DecryptTask(const QString &file, const Key &key, const QString &passphrase); 100 101 QString mFile; 102 QString mPassphrase; 103 Key mKey; 104 QString mContent; 105 }; 106 107 class EncryptTask : public Task { 108 Q_OBJECT 109 friend EncryptTask *Gpg::encrypt(const QString &, const Key &, const QString &); 110 protected: 111 void run() override; 112 113 private: 114 EncryptTask(const QString &file, const Key &key, const QString &content); 115 116 QString mFile; 117 Key mKey; 118 QString mContent; 119 }; 120 121 } // namespace Gpg 122 123 #endif // GPG_H