/* */ #ifndef LIBGNUTLS_TLS_SESSION_H #define LIBGNUTLS_TLS_SESSION_H #include "common.h" #include #include "LibgnutlsTLSContext.h" #include "TLSSession.h" #include "a2netcompat.h" namespace aria2 { class GnuTLSSession : public TLSSession { public: GnuTLSSession(GnuTLSContext* tlsContext); ~GnuTLSSession(); 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: gnutls_session_t sslSession_; GnuTLSContext* tlsContext_; // Last error code from gnutls library functions int rv_; }; } // namespace aria2 #endif // LIBGNUTLS_TLS_SESSION_H