#ifndef __TLS_h__ #define __TLS_h__ #include "ZString.h" #include "TLSInfo.h" #include namespace core { /// /// TLS /// /// This object provides the support methods to handle TLS on the server core and /// session environment. /// class TLS { public: /// /// /// TLS(); /// /// Use this constructor when the SSL context needs to be created as when opening /// a server TCPSocket. /// TLS(TLSInfo *tlsInfo); /// /// Use this constructor on creation of a new TCPSocket that needs access to /// the generating server's SSL context. /// TLS(SSL_CTX *ctx); /// /// The destructor for this object. /// ~TLS(); void createContext(TLSInfo *tlsInfo); // A never-configured TLS object (either the listening TCPServer // itself when constructed with tlsInfo=NULL, or a TCPSession spawned // from one via TLS(SSL_CTX*)) must default to a real NULL here, not // garbage - TCPSocket::receiveData()/sendData() key their TLS-vs- // plain dispatch on this exact value (see TCPSocket.cpp). SSL_CTX *ctx = NULL; protected: int receiveData(coreutils::ZString &buffer); int sendData(const char *data, int length); void registerSocket(int fd); void acceptSocket(); private: char *sip_cacert = (char *)"../testkeys/certs/pbxca.crt"; char *sip_cert = (char *)"../testkeys/certs/pbxserver.crt"; char *sip_key = (char *)"../testkeys/certs/pbxserver.key"; bool initialized = false; SSL *ssl; }; } #endif