You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
5.4 KiB
255 lines
5.4 KiB
/** KPGP: Pretty good privacy en-/decryption class |
|
* This code is under GPL V2.0 |
|
* |
|
* @author Lars Knoll <knoll@mpi-hd.mpg.de> |
|
* |
|
* GNUPG support |
|
* @author "J. Nick Koston" <bdraco@the.system.is.halted.net> |
|
* |
|
* PGP6 and other enhancements |
|
* @author Andreas Gungl <Andreas.Gungl@osp-dd.de> |
|
*/ |
|
#ifndef KPGPBASE_H |
|
#define KPGPBASE_H |
|
|
|
#include <qstring.h> |
|
#include <qstrlist.h> |
|
|
|
class KpgpBase |
|
{ |
|
public: |
|
|
|
enum{ |
|
OK = 0, |
|
CLEARTEXT = 0, |
|
RUN_ERR = 1, |
|
ERROR = 1, |
|
ENCRYPTED = 2, |
|
SIGNED = 4, |
|
GOODSIG = 8, |
|
ERR_SIGNING = 16, |
|
UNKNOWN_SIG = 32, |
|
BADPHRASE = 64, |
|
BADKEYS =128, |
|
NO_SEC_KEY =256, |
|
MISSINGKEY =512 }; |
|
|
|
/** virtual class used internally by kpgp */ |
|
KpgpBase(); |
|
virtual ~KpgpBase(); |
|
|
|
virtual void readConfig(); |
|
virtual void writeConfig(bool sync = false); |
|
|
|
/** set and retrieve the message to handle */ |
|
virtual bool setMessage(const QString mess); |
|
virtual QString message() const; |
|
|
|
/** manipulating the message */ |
|
virtual int encrypt(const QStrList *, bool = false) { return OK; }; |
|
virtual int sign(const char *) { return OK; }; |
|
virtual int encsign(const QStrList *, const char * = 0, |
|
bool = false) { return OK; }; |
|
virtual int decrypt(const char * = 0) { return OK; }; |
|
virtual QStrList pubKeys() { return OK; }; |
|
virtual QString getAsciiPublicKey(QString) { return QString::null; }; |
|
virtual int signKey(const char *, const char *) { return OK; }; |
|
|
|
/** various functions to get the status of a message */ |
|
bool isEncrypted() const; |
|
bool isSigned() const; |
|
bool isSigGood() const; |
|
bool unknownSigner() const; |
|
int getStatus() const; |
|
QString signedBy() const; |
|
QString signedByKey() const; |
|
const QStrList *receivers() const; |
|
|
|
virtual QString lastErrorMessage() const; |
|
|
|
/** functions that modify the behaviour of kpgp */ |
|
void setUser(QString aUser); |
|
const QString user() const; |
|
void setEncryptToSelf(bool flag); |
|
bool encryptToSelf(void) const; |
|
|
|
/// kpgp needs to access this function |
|
void clearOutput(); |
|
|
|
protected: |
|
virtual int run(const char *cmd, const char *passphrase = 0); |
|
virtual int runGpg(const char *cmd, const char *passphrase = 0); |
|
virtual void clear(); |
|
|
|
QString addUserId(); |
|
|
|
QString input; |
|
QString output; |
|
QString info; |
|
QString errMsg; |
|
QString pgpUser; |
|
QString signature; |
|
QString signatureID; |
|
QStrList recipients; |
|
|
|
bool flagEncryptToSelf; |
|
int status; |
|
|
|
}; |
|
|
|
// --------------------------------------------------------------------------- |
|
|
|
class KpgpBase2 : public KpgpBase |
|
{ |
|
|
|
public: |
|
KpgpBase2(); |
|
virtual ~KpgpBase2(); |
|
|
|
virtual int encrypt(const QStrList *recipients, |
|
bool ignoreUntrusted = false); |
|
virtual int sign(const char *passphrase); |
|
virtual int encsign(const QStrList *recipients, const char *passphrase = 0, |
|
bool ingoreUntrusted = false); |
|
virtual int decrypt(const char *passphrase = 0); |
|
virtual QStrList pubKeys(); |
|
virtual QString getAsciiPublicKey(QString _person); |
|
virtual int signKey(const char *key, const char *passphrase); |
|
}; |
|
|
|
class KpgpBaseG : public KpgpBase |
|
{ |
|
|
|
public: |
|
KpgpBaseG(); |
|
virtual ~KpgpBaseG(); |
|
|
|
virtual int encrypt(const QStrList *recipients, |
|
bool ignoreUntrusted = false); |
|
virtual int sign(const char *passphrase); |
|
virtual int encsign(const QStrList *recipients, const char *passphrase = 0, |
|
bool ingoreUntrusted = false); |
|
virtual int decrypt(const char *passphrase = 0); |
|
virtual QStrList pubKeys(); |
|
virtual QString getAsciiPublicKey(QString _person); |
|
virtual int signKey(const char *key, const char *passphrase); |
|
}; |
|
|
|
|
|
class KpgpBase5 : public KpgpBase |
|
{ |
|
|
|
public: |
|
KpgpBase5(); |
|
virtual ~KpgpBase5(); |
|
|
|
virtual int encrypt(const QStrList *recipients, |
|
bool ignoreUntrusted = false); |
|
virtual int sign(const char *passphrase); |
|
virtual int encsign(const QStrList *recipients, const char *passphrase = 0, |
|
bool ingoreUntrusted = false); |
|
virtual int decrypt(const char *passphrase = 0); |
|
virtual QStrList pubKeys(); |
|
virtual QString getAsciiPublicKey(QString _person); |
|
virtual int signKey(const char *key, const char *passphrase); |
|
}; |
|
|
|
|
|
class KpgpBase6 : public KpgpBase2 |
|
{ |
|
|
|
public: |
|
KpgpBase6(); |
|
virtual ~KpgpBase6(); |
|
|
|
virtual int decrypt(const char *passphrase = 0); |
|
virtual QStrList pubKeys(); |
|
|
|
virtual int isVersion6(); |
|
}; |
|
|
|
// --------------------------------------------------------------------------- |
|
// inlined functions |
|
|
|
inline void |
|
KpgpBase::setUser(QString aUser) |
|
{ |
|
pgpUser = aUser; |
|
} |
|
|
|
inline const QString |
|
KpgpBase::user() const |
|
{ |
|
return pgpUser; |
|
} |
|
|
|
inline void |
|
KpgpBase::setEncryptToSelf(bool flag) |
|
{ |
|
flagEncryptToSelf = flag; |
|
} |
|
|
|
inline bool |
|
KpgpBase::encryptToSelf(void) const |
|
{ |
|
return flagEncryptToSelf; |
|
} |
|
|
|
inline bool |
|
KpgpBase::isEncrypted() const |
|
{ |
|
if( status & ENCRYPTED ) |
|
return true; |
|
return false; |
|
} |
|
|
|
inline bool |
|
KpgpBase::isSigned() const |
|
{ |
|
if( status & SIGNED ) |
|
return true; |
|
return false; |
|
} |
|
|
|
inline bool |
|
KpgpBase::isSigGood() const |
|
{ |
|
if( status & GOODSIG ) |
|
return true; |
|
return false; |
|
} |
|
|
|
inline bool |
|
KpgpBase::unknownSigner() const |
|
{ |
|
if( status & UNKNOWN_SIG ) |
|
return true; |
|
return false; |
|
} |
|
|
|
inline const QStrList * |
|
KpgpBase::receivers() const |
|
{ |
|
if(recipients.count() <= 0) return 0; |
|
return &recipients; |
|
} |
|
|
|
inline int |
|
KpgpBase::getStatus() const |
|
{ |
|
return status; |
|
} |
|
|
|
inline QString |
|
KpgpBase::signedBy(void) const |
|
{ |
|
return signature; |
|
} |
|
|
|
inline QString |
|
KpgpBase::signedByKey(void) const |
|
{ |
|
return signatureID; |
|
} |
|
|
|
#endif
|
|
|