/* */ #ifndef LIBSSL_TLS_SESSION_H #define LIBSSL_TLS_SESSION_H #include "common.h" #include #include "LibsslTLSContext.h" #include "TLSSession.h" #include "a2netcompat.h" #include "libssl_compat.h" namespace aria2 { class OpenSSLTLSSession : public TLSSession { public: OpenSSLTLSSession(OpenSSLTLSContext* tlsContext); virtual ~OpenSSLTLSSession(); virtual int init(sock_t sockfd) CXX11_OVERRIDE; virtual int setSNIHostname(const std::string& hostname) CXX11_OVERRIDE; virtual int closeConnection() CXX11_OVERRIDE; virtual int checkDirection() CXX11_OVERRIDE; virtual ssize_t writeData(const void* data, size_t len) CXX11_OVERRIDE; virtual ssize_t readData(void* data, size_t len) CXX11_OVERRIDE; virtual int tlsConnect(const std::string& hostname, TLSVersion& version, std::string& handshakeErr) CXX11_OVERRIDE; virtual int tlsAccept(TLSVersion& version) CXX11_OVERRIDE; virtual std::string getLastErrorString() CXX11_OVERRIDE; virtual size_t getRecvBufferedLength() CXX11_OVERRIDE { return 0; } private: int handshake(TLSVersion& version); SSL* ssl_; OpenSSLTLSContext* tlsContext_; // Last error code from openSSL library functions int rv_; }; } // namespace aria2 #endif // LIBSSL_TLS_SESSION_H