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 #ifdef _WIN32
00021 # include "../config.h.win"
00022 #elif defined( _WIN32_WCE )
00023 # include "../config.h.win"
00024 #else
00025 # include "config.h"
00026 #endif
00027
00028 #ifdef HAVE_GNUTLS
00029
00030 #include <gnutls/gnutls.h>
00031 #include <gnutls/x509.h>
00032
00033 namespace gloox
00034 {
00035
00044 class GnuTLSBase : public TLSBase
00045 {
00046 public:
00052 GnuTLSBase( TLSHandler *th, const std::string& server = "" );
00053
00057 virtual ~GnuTLSBase();
00058
00059
00060 virtual bool encrypt( const std::string& data );
00061
00062
00063 virtual int decrypt( const std::string& data );
00064
00065
00066 virtual void cleanup();
00067
00068
00069 virtual bool handshake();
00070
00071
00072 virtual void setCACerts( const StringList& ) {}
00073
00074
00075 virtual void setClientCert( const std::string& , const std::string& ) {}
00076
00077 protected:
00078 virtual void init() = 0;
00079 virtual void getCertInfo() {}
00080
00081 gnutls_session_t* m_session;
00082
00083 std::string m_recvBuffer;
00084 char *m_buf;
00085 const int m_bufsize;
00086
00087 ssize_t pullFunc( void *data, size_t len );
00088 static ssize_t pullFunc( gnutls_transport_ptr_t ptr, void *data, size_t len );
00089
00090 ssize_t pushFunc( const void *data, size_t len );
00091 static ssize_t pushFunc( gnutls_transport_ptr_t ptr, const void *data, size_t len );
00092
00093 };
00094
00095 }
00096
00097 #endif // HAVE_GNUTLS
00098
00099 #endif // TLSGNUTLSBASE_H__