gloox
1.0
|
00001 /* 00002 Copyright (c) 2007-2009 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 TLSBASE_H__ 00016 #define TLSBASE_H__ 00017 00018 #include "gloox.h" 00019 #include "mutex.h" 00020 #include "tlshandler.h" 00021 00022 namespace gloox 00023 { 00024 00031 class GLOOX_API TLSBase 00032 { 00033 public: 00039 TLSBase( TLSHandler* th, const std::string server ) 00040 : m_handler( th ), m_server( server ), m_secure( false ), m_valid( false ), m_initLib( true ) 00041 {} 00042 00046 virtual ~TLSBase() {} 00047 00057 virtual bool init( const std::string& clientKey = EmptyString, 00058 const std::string& clientCerts = EmptyString, 00059 const StringList& cacerts = StringList() ) = 0; 00060 00068 void setInitLib( bool init ) { m_initLib = init; } 00069 00076 virtual bool encrypt( const std::string& data ) = 0; 00077 00085 virtual int decrypt( const std::string& data ) = 0; 00086 00090 virtual void cleanup() = 0; 00091 00099 virtual bool handshake() = 0; 00100 00105 virtual bool isSecure() const { return m_secure; } 00106 00112 virtual void setCACerts( const StringList& cacerts ) = 0; 00113 00118 virtual const CertInfo& fetchTLSInfo() const { return m_certInfo; } 00119 00131 virtual void setClientCert( const std::string& clientKey, const std::string& clientCerts ) = 0; 00132 00133 protected: 00134 TLSHandler* m_handler; 00135 StringList m_cacerts; 00136 std::string m_clientKey; 00137 std::string m_clientCerts; 00138 std::string m_server; 00139 CertInfo m_certInfo; 00140 util::Mutex m_mutex; 00141 bool m_secure; 00142 bool m_valid; 00143 bool m_initLib; 00144 00145 }; 00146 00147 } 00148 00149 #endif // TLSBASE_H__