QuicEncryptionLevel
struct QuicEncryptionLevelRFC 9001 §4.1 packet protection levels.
Each level has its own set of secret-keyed AEAD keys derived by the TLS handshake. The rustls QUIC binding emits CRYPTO frames at one level at a time and returns the derived keys when each level transitions into "ready".
Implements Movable
comptime INITIAL = Int(0)RFC 9001 §4.1 -- keyed by the QUIC v1 initial salt mixed with the client's Destination Connection ID. Used for the first client-hello flight.
comptime EARLY_DATA = Int(1)RFC 9001 §4.1 -- 0-RTT keys. Captured from rustls via :meth:RustlsQuicSession.install_early_keys (which wraps Connection::zero_rtt_keys()) rather than the per-level KeyChange pump; the AEAD + header-protection thunks accept this level for the 0-RTT send/recv path on a resumed connection.
comptime HANDSHAKE = Int(2)RFC 9001 §4.1 -- handshake keys derived after the server accepts the client's Initial. Used for ServerHello and EncryptedExtensions.
comptime APPLICATION = Int(3)RFC 9001 §4.1 -- 1-RTT keys. Used for all post-handshake application traffic; this is the keyed level the H3 server will see for every request.