16#include <ove/net_tls.h>
20#ifdef CONFIG_OVE_NET_TLS
28 const unsigned char *ca_cert{};
30 const char *hostname{};
31 const unsigned char *client_cert{};
32 size_t client_cert_len{};
33 const unsigned char *client_key{};
34 size_t client_key_len{};
47#ifdef CONFIG_OVE_ZERO_HEAP
48 int err = ove_tls_init(&handle_, &storage_);
50 int err = ove_tls_create(&handle_);
52 OVE_STATIC_INIT_ASSERT(err == OVE_OK);
57#ifdef CONFIG_OVE_ZERO_HEAP
58 ove_tls_deinit(handle_);
60 ove_tls_destroy(handle_);
64 Session(
const Session &) =
delete;
65 Session &operator=(
const Session &) =
delete;
66 Session(Session &&) =
delete;
67 Session &operator=(Session &&) =
delete;
72 [[nodiscard]]
int handshake(ove_socket_t sock,
const Config &cfg = {}) {
73 ove_tls_config_t c{cfg.ca_cert, cfg.ca_cert_len, cfg.hostname,
74 cfg.client_cert, cfg.client_cert_len,
75 cfg.client_key, cfg.client_key_len};
76 return ove_tls_handshake(handle_, sock, &c);
79 [[nodiscard]]
int send(
const void *data,
size_t len,
size_t *sent =
nullptr) {
80 return ove_tls_send(handle_, data, len, sent);
83 [[nodiscard]]
int recv(
void *buf,
size_t len,
size_t *received =
nullptr) {
84 return ove_tls_recv(handle_, buf, len, received);
88 ove_tls_close(handle_);
93#ifdef CONFIG_OVE_ZERO_HEAP
94 ove_tls_storage_t storage_{};
RAII networking: sockets, network interface, DNS.
Common type definitions and concepts for the C++ wrapper layer.