32#ifndef DETERMINISTICESPASYNCWEBSERVER_DET_TLS_H
33#define DETERMINISTICESPASYNCWEBSERVER_DET_TLS_H
39#if DETWS_ENABLE_TLS && defined(ARDUINO)
54bool det_tls_global_init(
const uint8_t *cert,
size_t cert_len,
const uint8_t *key,
size_t key_len);
63const char *det_tls_alpn(uint8_t slot);
66bool det_tls_conn_begin(uint8_t slot);
73int det_tls_handshake(uint8_t slot);
76bool det_tls_established(uint8_t slot);
82int det_tls_read(uint8_t slot, uint8_t *buf,
size_t len);
88int det_tls_write(uint8_t slot,
const void *data,
size_t len);
91void det_tls_conn_end(uint8_t slot);
94void det_tls_conn_free(uint8_t slot);
97size_t det_tls_arena_peak();
108typedef int (*det_tls_bio_send_fn)(
void *ctx,
const unsigned char *buf,
size_t len);
109typedef int (*det_tls_bio_recv_fn)(
void *ctx,
unsigned char *buf,
size_t len);
123bool det_tls_set_client_ca(
const uint8_t *ca,
size_t ca_len);
132int det_tls_peer_subject(uint8_t slot,
char *out,
size_t out_len);
135#if DETWS_ENABLE_HTTP_CLIENT_TLS
151int det_tls_client_run(
const char *host,
const uint8_t *req,
size_t reqlen, uint8_t *out,
size_t out_cap,
152 size_t *out_len, det_tls_bio_send_fn send_fn, det_tls_bio_recv_fn recv_fn, uint32_t deadline_ms);
155#if DETWS_ENABLE_CLIENT_TLS
163void det_tls_client_set_ca(
const uint8_t *ca,
size_t ca_len);
172void det_tls_client_set_pin(
const uint8_t sha256[32]);
175void det_tls_client_clear_verify();
184bool det_tls_csess_begin(
const char *host, det_tls_bio_send_fn send_fn, det_tls_bio_recv_fn recv_fn);
187int det_tls_csess_handshake();
190int det_tls_csess_read(uint8_t *buf,
size_t len);
193int det_tls_csess_write(
const uint8_t *data,
size_t len);
196void det_tls_csess_end();
206void det_tls_csess_forget_session();
211static inline bool det_tls_global_init(
const uint8_t *,
size_t,
const uint8_t *,
size_t)
215static inline bool det_tls_ready()
219static inline bool det_tls_conn_begin(uint8_t)
223static inline int det_tls_handshake(uint8_t)
227static inline bool det_tls_established(uint8_t)
231static inline int det_tls_read(uint8_t, uint8_t *,
size_t)
235static inline int det_tls_write(uint8_t,
const void *,
size_t)
239static inline void det_tls_conn_end(uint8_t)
242static inline void det_tls_conn_free(uint8_t)
245static inline size_t det_tls_arena_peak()
251static inline bool det_tls_set_client_ca(
const uint8_t *,
size_t)
255static inline int det_tls_peer_subject(uint8_t,
char *,
size_t)
261#if DETWS_ENABLE_CLIENT_TLS
262typedef int (*det_tls_bio_send_fn)(
void *ctx,
const unsigned char *buf,
size_t len);
263typedef int (*det_tls_bio_recv_fn)(
void *ctx,
unsigned char *buf,
size_t len);
264static inline void det_tls_client_set_ca(
const uint8_t *,
size_t)
267static inline void det_tls_client_set_pin(
const uint8_t *)
270static inline void det_tls_client_clear_verify()
273static inline bool det_tls_csess_begin(
const char *, det_tls_bio_send_fn, det_tls_bio_recv_fn)
277static inline int det_tls_csess_handshake()
281static inline int det_tls_csess_read(uint8_t *,
size_t)
285static inline int det_tls_csess_write(
const uint8_t *,
size_t)
289static inline void det_tls_csess_end()
292static inline void det_tls_csess_forget_session()
297#if DETWS_ENABLE_HTTP_CLIENT_TLS
298static inline int det_tls_client_run(
const char *,
const uint8_t *,
size_t, uint8_t *,
size_t,
size_t *,
299 det_tls_bio_send_fn, det_tls_bio_recv_fn, uint32_t)
User-facing configuration for DeterministicESPAsyncWebServer.