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
|