summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/groupwise/libgroupwise/qca/src/tqca.h
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/protocols/groupwise/libgroupwise/qca/src/tqca.h')
-rw-r--r--kopete/protocols/groupwise/libgroupwise/qca/src/tqca.h468
1 files changed, 0 insertions, 468 deletions
diff --git a/kopete/protocols/groupwise/libgroupwise/qca/src/tqca.h b/kopete/protocols/groupwise/libgroupwise/qca/src/tqca.h
deleted file mode 100644
index 701aeb31..00000000
--- a/kopete/protocols/groupwise/libgroupwise/qca/src/tqca.h
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * tqca.h - TQt Cryptographic Architecture
- * Copyright (C) 2003 Justin Karneges
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef TQCA_H
-#define TQCA_H
-
-#include <tqstring.h>
-#include <tqcstring.h>
-#include <tqdatetime.h>
-#include <tqmap.h>
-#include <tqptrlist.h>
-#include <tqobject.h>
-
-#ifdef Q_OS_WIN32
-# ifndef TQCA_STATIC
-# ifdef TQCA_MAKEDLL
-# define TQCA_EXPORT __declspec(dllexport)
-# else
-# define TQCA_EXPORT __declspec(dllimport)
-# endif
-# endif
-#endif
-#ifndef TQCA_EXPORT
-#define TQCA_EXPORT
-#endif
-
-#ifdef Q_OS_WIN32
-# ifdef TQCA_PLUGIN_DLL
-# define TQCA_PLUGIN_EXPORT extern "C" __declspec(dllexport)
-# else
-# define TQCA_PLUGIN_EXPORT extern "C" __declspec(dllimport)
-# endif
-#endif
-#ifndef TQCA_PLUGIN_EXPORT
-#define TQCA_PLUGIN_EXPORT extern "C"
-#endif
-
-class TQHostAddress;
-class TQStringList;
-
-class TQCAProvider;
-class TQCA_HashContext;
-class TQCA_CipherContext;
-class TQCA_CertContext;
-
-namespace TQCA
-{
- enum {
- CAP_SHA1 = 0x0001,
- CAP_SHA256 = 0x0002,
- CAP_MD5 = 0x0004,
- CAP_BlowFish = 0x0008,
- CAP_TripleDES = 0x0010,
- CAP_AES128 = 0x0020,
- CAP_AES256 = 0x0040,
- CAP_RSA = 0x0080,
- CAP_X509 = 0x0100,
- CAP_TLS = 0x0200,
- CAP_SASL = 0x0400
- };
-
- enum {
- CBC = 0x0001,
- CFB = 0x0002
- };
-
- enum {
- Encrypt = 0x0001,
- Decrypt = 0x0002
- };
-
- TQCA_EXPORT void init();
- TQCA_EXPORT bool isSupported(int capabilities);
- TQCA_EXPORT void insertProvider(TQCAProvider *);
- TQCA_EXPORT void unloadAllPlugins();
-
- TQCA_EXPORT TQString arrayToHex(const TQByteArray &);
- TQCA_EXPORT TQByteArray hexToArray(const TQString &);
-
- class TQCA_EXPORT Hash
- {
- public:
- Hash(const Hash &);
- Hash & operator=(const Hash &);
- ~Hash();
-
- void clear();
- void update(const TQByteArray &a);
- TQByteArray final();
-
- protected:
- Hash(TQCA_HashContext *);
-
- private:
- class Private;
- Private *d;
- };
-
- template <class T>
- class TQCA_EXPORT HashStatic
- {
- public:
- HashStatic<T>() {}
-
- static TQByteArray hash(const TQByteArray &a)
- {
- T obj;
- obj.update(a);
- return obj.final();
- }
-
- static TQByteArray hash(const TQCString &cs)
- {
- TQByteArray a(cs.length());
- memcpy(a.data(), cs.data(), a.size());
- return hash(a);
- }
-
- static TQString hashToString(const TQByteArray &a)
- {
- return arrayToHex(hash(a));
- }
-
- static TQString hashToString(const TQCString &cs)
- {
- return arrayToHex(hash(cs));
- }
- };
-
- class TQCA_EXPORT Cipher
- {
- public:
- Cipher(const Cipher &);
- Cipher & operator=(const Cipher &);
- ~Cipher();
-
- TQByteArray dyn_generateKey(int size=-1) const;
- TQByteArray dyn_generateIV() const;
- void reset(int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad=true);
- bool update(const TQByteArray &a);
- TQByteArray final(bool *ok=0);
-
- protected:
- Cipher(TQCA_CipherContext *, int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad);
-
- private:
- class Private;
- Private *d;
- };
-
- template <class T>
- class TQCA_EXPORT CipherStatic
- {
- public:
- CipherStatic<T>() {}
-
- static TQByteArray generateKey(int size=-1)
- {
- T obj;
- return obj.dyn_generateKey(size);
- }
-
- static TQByteArray generateIV()
- {
- T obj;
- return obj.dyn_generateIV();
- }
- };
-
- class TQCA_EXPORT SHA1 : public Hash, public HashStatic<SHA1>
- {
- public:
- SHA1();
- };
-
- class TQCA_EXPORT SHA256 : public Hash, public HashStatic<SHA256>
- {
- public:
- SHA256();
- };
-
- class TQCA_EXPORT MD5 : public Hash, public HashStatic<MD5>
- {
- public:
- MD5();
- };
-
- class TQCA_EXPORT BlowFish : public Cipher, public CipherStatic<BlowFish>
- {
- public:
- BlowFish(int dir=Encrypt, int mode=CBC, const TQByteArray &key=TQByteArray(), const TQByteArray &iv=TQByteArray(), bool pad=true);
- };
-
- class TQCA_EXPORT TripleDES : public Cipher, public CipherStatic<TripleDES>
- {
- public:
- TripleDES(int dir=Encrypt, int mode=CBC, const TQByteArray &key=TQByteArray(), const TQByteArray &iv=TQByteArray(), bool pad=true);
- };
-
- class TQCA_EXPORT AES128 : public Cipher, public CipherStatic<AES128>
- {
- public:
- AES128(int dir=Encrypt, int mode=CBC, const TQByteArray &key=TQByteArray(), const TQByteArray &iv=TQByteArray(), bool pad=true);
- };
-
- class TQCA_EXPORT AES256 : public Cipher, public CipherStatic<AES256>
- {
- public:
- AES256(int dir=Encrypt, int mode=CBC, const TQByteArray &key=TQByteArray(), const TQByteArray &iv=TQByteArray(), bool pad=true);
- };
-
- class RSA;
- class TQCA_EXPORT RSAKey
- {
- public:
- RSAKey();
- RSAKey(const RSAKey &from);
- RSAKey & operator=(const RSAKey &from);
- ~RSAKey();
-
- bool isNull() const;
- bool havePublic() const;
- bool havePrivate() const;
-
- TQByteArray toDER(bool publicOnly=false) const;
- bool fromDER(const TQByteArray &a);
-
- TQString toPEM(bool publicOnly=false) const;
- bool fromPEM(const TQString &);
-
- // only call if you know what you are doing
- bool fromNative(void *);
-
- private:
- class Private;
- Private *d;
-
- friend class RSA;
- friend class TLS;
- bool encrypt(const TQByteArray &a, TQByteArray *out, bool oaep) const;
- bool decrypt(const TQByteArray &a, TQByteArray *out, bool oaep) const;
- bool generate(unsigned int bits);
- };
-
- class TQCA_EXPORT RSA
- {
- public:
- RSA();
- ~RSA();
-
- RSAKey key() const;
- void setKey(const RSAKey &);
-
- bool encrypt(const TQByteArray &a, TQByteArray *out, bool oaep=false) const;
- bool decrypt(const TQByteArray &a, TQByteArray *out, bool oaep=false) const;
-
- static RSAKey generateKey(unsigned int bits);
-
- private:
- RSAKey v_key;
- };
-
- typedef TQMap<TQString, TQString> CertProperties;
- class TQCA_EXPORT Cert
- {
- public:
- Cert();
- Cert(const Cert &);
- Cert & operator=(const Cert &);
- ~Cert();
-
- bool isNull() const;
-
- TQString commonName() const;
- TQString serialNumber() const;
- TQString subjectString() const;
- TQString issuerString() const;
- CertProperties subject() const;
- CertProperties issuer() const;
- TQDateTime notBefore() const;
- TQDateTime notAfter() const;
-
- TQByteArray toDER() const;
- bool fromDER(const TQByteArray &a);
-
- TQString toPEM() const;
- bool fromPEM(const TQString &);
-
- private:
- class Private;
- Private *d;
-
- friend class TLS;
- void fromContext(TQCA_CertContext *);
- };
-
- class TQCA_EXPORT TLS : public TQObject
- {
- Q_OBJECT
-
- public:
- enum Validity {
- NoCert,
- Valid,
- HostMismatch,
- Rejected,
- Untrusted,
- SignatureFailed,
- InvalidCA,
- InvalidPurpose,
- SelfSigned,
- Revoked,
- PathLengthExceeded,
- Expired,
- Unknown
- };
- enum Error { ErrHandshake, ErrCrypt };
-
- TLS(TQObject *parent=0);
- ~TLS();
-
- void setCertificate(const Cert &cert, const RSAKey &key);
- void setCertificateStore(const TQPtrList<Cert> &store); // note: store must persist
-
- void reset();
- bool startClient(const TQString &host="");
- bool startServer();
- void close();
- bool isHandshaken() const;
-
- // plain (application side)
- void write(const TQByteArray &a);
- TQByteArray read();
-
- // encoded (socket side)
- void writeIncoming(const TQByteArray &a);
- TQByteArray readOutgoing();
- TQByteArray readUnprocessed();
-
- // cert related
- const Cert & peerCertificate() const;
- int certificateValidityResult() const;
-
- signals:
- void handshaken();
- void readyRead();
- void readyReadOutgoing(int plainBytes);
- void closed();
- void error(int);
-
- private slots:
- void update();
-
- private:
- class Private;
- Private *d;
- };
-
- class TQCA_EXPORT SASL : public TQObject
- {
- Q_OBJECT
-
- public:
- enum Error { ErrAuth, ErrCrypt };
- enum ErrorCond {
- NoMech,
- BadProto,
- BadServ,
- BadAuth,
- NoAuthzid,
- TooWeak,
- NeedEncrypt,
- Expired,
- Disabled,
- NoUser,
- RemoteUnavail
- };
- SASL(TQObject *parent=0);
- ~SASL();
-
- static void setAppName(const TQString &name);
-
- void reset();
- int errorCondition() const;
-
- // options
- void setAllowPlain(bool);
- void setAllowAnonymous(bool);
- void setAllowActiveVulnerable(bool);
- void setAllowDictionaryVulnerable(bool);
- void setRequireForwardSecrecy(bool);
- void setRequirePassCredentials(bool);
- void setRequireMutualAuth(bool);
-
- void setMinimumSSF(int);
- void setMaximumSSF(int);
- void setExternalAuthID(const TQString &authid);
- void setExternalSSF(int);
-
- void setLocalAddr(const TQHostAddress &addr, TQ_UINT16 port);
- void setRemoteAddr(const TQHostAddress &addr, TQ_UINT16 port);
-
- // initialize
- bool startClient(const TQString &service, const TQString &host, const TQStringList &mechlist, bool allowClientSendFirst=true);
- bool startServer(const TQString &service, const TQString &host, const TQString &realm, TQStringList *mechlist);
-
- // authentication
- void putStep(const TQByteArray &stepData);
- void putServerFirstStep(const TQString &mech);
- void putServerFirstStep(const TQString &mech, const TQByteArray &clientInit);
- void setUsername(const TQString &user);
- void setAuthzid(const TQString &auth);
- void setPassword(const TQString &pass);
- void setRealm(const TQString &realm);
- void continueAfterParams();
- void continueAfterAuthCheck();
-
- // security layer
- int ssf() const;
- void write(const TQByteArray &a);
- TQByteArray read();
- void writeIncoming(const TQByteArray &a);
- TQByteArray readOutgoing();
-
- signals:
- // for authentication
- void clientFirstStep(const TQString &mech, const TQByteArray *clientInit);
- void nextStep(const TQByteArray &stepData);
- void needParams(bool user, bool authzid, bool pass, bool realm);
- void authCheck(const TQString &user, const TQString &authzid);
- void authenticated();
-
- // for security layer
- void readyRead();
- void readyReadOutgoing(int plainBytes);
-
- // error
- void error(int);
-
- private slots:
- void tryAgain();
-
- private:
- class Private;
- Private *d;
-
- void handleServerFirstStep(int r);
- };
-}
-
-#endif