31#ifndef PROTOCORE_QUIC_TLS_H
32#define PROTOCORE_QUIC_TLS_H
48 static constexpr uint8_t QUIC_ENC_INITIAL = 0;
49 static constexpr uint8_t QUIC_ENC_HANDSHAKE = 1;
50 static constexpr uint8_t QUIC_ENC_APP = 2;
56 const uint8_t *cert_der;
58 uint8_t ed25519_seed[32];
59 QuicTransportParams params;
60 uint8_t ephemeral_priv[32];
68enum class QtlsState : uint8_t
92 QuicPacketKeys hs_client;
93 QuicPacketKeys hs_server;
94 QuicPacketKeys ap_client;
95 QuicPacketKeys ap_server;
97 uint8_t hs_finished_hash[32];
100 uint8_t flight_initial[1400];
102 uint8_t flight_initial[256];
104 size_t flight_initial_len;
106 size_t flight_hs_len;
108 QuicTransportParams peer;
113void pc_quic_tls_server_init(QuicTls *qt,
const QuicTlsConfig *cfg);
124size_t pc_quic_tls_recv_crypto(QuicTls *qt,
int level,
const uint8_t *data,
size_t len);
131const uint8_t *pc_quic_tls_flight(
const QuicTls *qt,
int level,
size_t *len);
137QuicPacketKeys *pc_quic_tls_keys(QuicTls *qt,
int level,
bool is_server);
140const QuicTransportParams *pc_quic_tls_peer_params(
const QuicTls *qt);
User-facing configuration for ProtoCore.
#define PC_H3_CRYPTO_BUF
Maximum bytes of one QUIC/TLS handshake CRYPTO flight (RFC 9001).
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.