⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 openssladapter.h

📁 本人收集整理的一份c/c++跨平台网络库
💻 H
字号:
#ifndef UTILS_BASE_OPENSSLADAPTER_H_#define UTILS_BASE_OPENSSLADAPTER_H_#include <string>#include "ssladapter.h"typedef struct ssl_st SSL;typedef struct ssl_ctx_st SSL_CTX;typedef struct x509_store_ctx_st X509_STORE_CTX;namespace utils_base {///////////////////////////////////////////////////////////////////////////////class OpenSSLAdapter : public SSLAdapter {public:  OpenSSLAdapter(AsyncSocket* socket);  virtual ~OpenSSLAdapter();  virtual int StartSSL(const char* hostname, bool restartable);  virtual int Send(const void* pv, size_t cb);  virtual int Recv(void* pv, size_t cb);  virtual int Close();  // Note that the socket returns ST_CONNECTING while SSL is being negotiated.  virtual ConnState GetState() const;protected:  virtual void OnConnectEvent(AsyncSocket* socket);  virtual void OnReadEvent(AsyncSocket* socket);  virtual void OnWriteEvent(AsyncSocket* socket);  virtual void OnCloseEvent(AsyncSocket* socket, int err);private:  enum SSLState {    SSL_NONE, SSL_WAIT, SSL_CONNECTING, SSL_CONNECTED, SSL_ERROR  };  int BeginSSL();  int ContinueSSL();  void Error(const char* context, int err, bool signal = true);  void Cleanup();  bool SSLPostConnectionCheck(SSL* ssl, const char* host);#if _DEBUG  static void SSLInfoCallback(const SSL* s, int where, int ret);#endif  // !_DEBUG  static int SSLVerifyCallback(int ok, X509_STORE_CTX* store);  static SSL_CTX* SetupSSLContext();  SSLState state_;  bool ssl_read_needs_write_;  bool ssl_write_needs_read_;  // If true, socket will retain SSL configuration after Close.  bool restartable_;   SSL* ssl_;  SSL_CTX* ssl_ctx_;  std::string ssl_host_name_;};/////////////////////////////////////////////////////////////////////////////} // namespace utils_base#endif // UTILS_BASE_OPENSSLADAPTER_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -