Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

tlsgnutlsbase.h

00001 /*
00002   Copyright (c) 2007-2008 by Jakob Schroeter <js@camaya.net>
00003   This file is part of the gloox library. http://camaya.net/gloox
00004 
00005   This software is distributed under a license. The full license
00006   agreement can be found in the file LICENSE in this distribution.
00007   This software may not be copied, modified, sold or distributed
00008   other than expressed in the named license agreement.
00009 
00010   This software is distributed without any warranty.
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 = EmptyString );
00053 
00057       virtual ~GnuTLSBase();
00058 
00059       // reimplemented from TLSBase
00060       virtual bool encrypt( const std::string& data );
00061 
00062       // reimplemented from TLSBase
00063       virtual int decrypt( const std::string& data );
00064 
00065       // reimplemented from TLSBase
00066       virtual void cleanup();
00067 
00068       // reimplemented from TLSBase
00069       virtual bool handshake();
00070 
00071       // reimplemented from TLSBase
00072       virtual void setCACerts( const StringList& /*cacerts*/ ) {}
00073 
00074       // reimplemented from TLSBase
00075       virtual void setClientCert( const std::string& /*clientKey*/, const std::string& /*clientCerts*/ ) {}
00076 
00077     protected:
00078       virtual void getCertInfo() {}
00079 
00080       gnutls_session_t* m_session;
00081 
00082       std::string m_recvBuffer;
00083       char* m_buf;
00084       const int m_bufsize;
00085 
00086       ssize_t pullFunc( void* data, size_t len );
00087       static ssize_t pullFunc( gnutls_transport_ptr_t ptr, void* data, size_t len );
00088 
00089       ssize_t pushFunc( const void* data, size_t len );
00090       static ssize_t pushFunc( gnutls_transport_ptr_t ptr, const void* data, size_t len );
00091 
00092   };
00093 
00094 }
00095 
00096 #endif // HAVE_GNUTLS
00097 
00098 #endif // TLSGNUTLSBASE_H__

Generated on Sun Dec 28 22:10:18 2008 for gloox by  doxygen 1.4.1