/* */ #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); virtual int setSNIHostname(const std::string& hostname); virtual int closeConnection(); virtual int checkDirection(); virtual ssize_t writeData(const void* data, size_t len); virtual ssize_t readData(void* data, size_t len); virtual int tlsConnect(const std::string& hostname, std::string& handshakeErr); virtual int tlsAccept(); virtual std::string getLastErrorString(); private: gnutls_session_t sslSession_; GnuTLSContext* tlsContext_; // Last error code from gnutls library functions int rv_; }; } // namespace aria2 #endif // LIBGNUTLS_TLS_SESSION_H