tlsgnutlsbase.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef TLSGNUTLSBASE_H__
00016 #define TLSGNUTLSBASE_H__
00017
00018 #include "tlsbase.h"
00019
00020 #include "config.h"
00021
00022 #ifdef HAVE_GNUTLS
00023
00024 #include <gnutls/gnutls.h>
00025 #include <gnutls/x509.h>
00026
00027 namespace gloox
00028 {
00029
00038 class GnuTLSBase : public TLSBase
00039 {
00040 public:
00046 GnuTLSBase( TLSHandler* th, const std::string& server = EmptyString );
00047
00051 virtual ~GnuTLSBase();
00052
00053
00054 virtual bool encrypt( const std::string& data );
00055
00056
00057 virtual int decrypt( const std::string& data );
00058
00059
00060 virtual void cleanup();
00061
00062
00063 virtual bool handshake();
00064
00065
00066 virtual void setCACerts( const StringList& ) {}
00067
00068
00069 virtual void setClientCert( const std::string& , const std::string& ) {}
00070
00071 protected:
00072 virtual void getCertInfo() {}
00073
00074 gnutls_session_t* m_session;
00075
00076 std::string m_recvBuffer;
00077 char* m_buf;
00078 const int m_bufsize;
00079
00080 ssize_t pullFunc( void* data, size_t len );
00081 static ssize_t pullFunc( gnutls_transport_ptr_t ptr, void* data, size_t len );
00082
00083 ssize_t pushFunc( const void* data, size_t len );
00084 static ssize_t pushFunc( gnutls_transport_ptr_t ptr, const void* data, size_t len );
00085
00086 };
00087
00088 }
00089
00090 #endif // HAVE_GNUTLS
00091
00092 #endif // TLSGNUTLSBASE_H__