28#ifndef DETERMINISTICESPASYNCWEBSERVER_QUIC_TLS_H
29#define DETERMINISTICESPASYNCWEBSERVER_QUIC_TLS_H
45 static constexpr uint8_t QUIC_ENC_INITIAL = 0;
46 static constexpr uint8_t QUIC_ENC_HANDSHAKE = 1;
47 static constexpr uint8_t QUIC_ENC_APP = 2;
53 const uint8_t *cert_der;
55 uint8_t ed25519_seed[32];
56 QuicTransportParams params;
57 uint8_t ephemeral_priv[32];
59#if DETWS_ENABLE_PQC_KEX
65enum class QtlsState : uint8_t
86 QuicPacketKeys hs_client;
87 QuicPacketKeys hs_server;
88 QuicPacketKeys ap_client;
89 QuicPacketKeys ap_server;
91 uint8_t hs_finished_hash[32];
93#if DETWS_ENABLE_PQC_KEX
94 uint8_t flight_initial[1400];
96 uint8_t flight_initial[256];
98 size_t flight_initial_len;
100 size_t flight_hs_len;
102 QuicTransportParams peer;
107void quic_tls_server_init(QuicTls *qt,
const QuicTlsConfig *cfg);
118size_t quic_tls_recv_crypto(QuicTls *qt,
int level,
const uint8_t *data,
size_t len);
125const uint8_t *quic_tls_flight(
const QuicTls *qt,
int level,
size_t *len);
131const QuicPacketKeys *quic_tls_keys(
const QuicTls *qt,
int level,
bool is_server);
134const QuicTransportParams *quic_tls_peer_params(
const QuicTls *qt);
User-facing configuration for DeterministicESPAsyncWebServer.
#define DETWS_H3_CRYPTO_BUF
Maximum bytes of one QUIC/TLS handshake CRYPTO flight (RFC 9001).
QUIC packet protection: Initial secrets, AEAD payload protection, header protection,...
QUIC transport parameters (RFC 9000 sec 18) carried in the TLS quic_transport_parameters extension (R...
SHA-256 (FIPS 180-4) - streaming context and one-shot API.
Streaming SHA-256 context.
TLS 1.3 key schedule (RFC 8446 sec 7.1) for the QUIC handshake.