File indexing completed on 2024-04-14 05:41:12
0001 /** 0002 * SPDX-FileCopyrightText: (C) 2006 Petri Damsten <damu@iki.fi> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #ifndef KGPGME_H 0007 #define KGPGME_H 0008 0009 #include <config.h> 0010 0011 #ifdef HAVE_LIBGPGME 0012 0013 #include <gpgme.h> 0014 0015 #include <QtCore/QList> 0016 #include <QtCore/QString> 0017 0018 /** 0019 @author Petri Damsten <damu@iki.fi> 0020 */ 0021 0022 class KGpgKey 0023 { 0024 public: 0025 QString id; 0026 QString name; 0027 QString email; 0028 }; 0029 0030 typedef QList<KGpgKey> KGpgKeyList; 0031 0032 class KGpgMe 0033 { 0034 public: 0035 KGpgMe(); 0036 ~KGpgMe(); 0037 0038 QString selectKey(QString previous = QString()); 0039 KGpgKeyList keys(bool privateKeys = false) const; 0040 void setText(QString text, bool saving) 0041 { 0042 m_text = text; 0043 m_saving = saving; 0044 }; 0045 void setUseGnuPGAgent(bool use) 0046 { 0047 m_useGnuPGAgent = use; 0048 setPassphraseCb(); 0049 }; 0050 QString text() const 0051 { 0052 return m_text; 0053 }; 0054 bool saving() const 0055 { 0056 return m_saving; 0057 }; 0058 void clearCache(); 0059 0060 bool encrypt(const QByteArray &inBuffer, unsigned long length, QByteArray *outBuffer, QString keyid = QString()); 0061 bool decrypt(const QByteArray &inBuffer, QByteArray *outBuffer); 0062 0063 static QString checkForUtf8(QString txt); 0064 static bool isGnuPGAgentAvailable(); 0065 0066 private: 0067 gpgme_ctx_t m_ctx; 0068 QString m_text; 0069 bool m_saving; 0070 bool m_useGnuPGAgent; 0071 QString m_cache; 0072 0073 void init(gpgme_protocol_t proto); 0074 gpgme_error_t readToBuffer(gpgme_data_t in, QByteArray *outBuffer) const; 0075 void setPassphraseCb(); 0076 static gpgme_error_t passphraseCb(void *hook, const char *uid_hint, const char *passphrase_info, int last_was_bad, int fd); 0077 gpgme_error_t passphrase(const char *uid_hint, const char *passphrase_info, int last_was_bad, int fd); 0078 }; 0079 #endif // HAVE_LIBGPGME 0080 #endif // KGPGME_H