| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- #ifndef BELL_TLS_SOCKET_H
 
- #define BELL_TLS_SOCKET_H
 
- #include <stdint.h>  // for uint8_t, uint16_t
 
- #include "BellSocket.h"  // for Socket
 
- #ifdef _WIN32
 
- #include <winsock2.h>
 
- #include <ws2tcpip.h>
 
- #else
 
- #endif
 
- #include <stdlib.h>  // for size_t
 
- #include <string>    // for string
 
- #include "mbedtls/ctr_drbg.h"     // for mbedtls_ctr_drbg_context
 
- #include "mbedtls/entropy.h"      // for mbedtls_entropy_context
 
- #include "mbedtls/net_sockets.h"  // for mbedtls_net_context
 
- #include "mbedtls/ssl.h"          // for mbedtls_ssl_config, mbedtls_ssl_con...
 
- namespace bell {
 
- class TLSSocket : public bell::Socket {
 
-  private:
 
-   mbedtls_net_context server_fd;
 
-   mbedtls_entropy_context entropy;
 
-   mbedtls_ctr_drbg_context ctr_drbg;
 
-   mbedtls_ssl_context ssl;
 
-   mbedtls_ssl_config conf;
 
-   bool isClosed = true;
 
-  public:
 
-   TLSSocket();
 
-   ~TLSSocket() { close(); };
 
-   void open(const std::string& host, uint16_t port);
 
-   size_t read(uint8_t* buf, size_t len);
 
-   size_t write(uint8_t* buf, size_t len);
 
-   size_t poll();
 
-   bool isOpen();
 
-   void close();
 
-   int getFd() { return server_fd.fd; }
 
- };
 
- }  // namespace bell
 
- #endif
 
 
  |