Uses of Package
io.github.mahmoudimus.quic
Packages that use io.github.mahmoudimus.quic
Package
Description
A dependency-free QUIC transport (RFC 9000, 9001, 9002, 9221, 9369).
The sans-I/O QUIC connection and endpoint, ported from quinn-proto: the
Connection state machine (handshake, packet assembly and
processing, key updates, closing and draining), the Endpoint that routes datagrams and answers with Version
Negotiation, Retry and stateless resets, their configurations (TransportConfig, ServerConfig, ClientConfig, EndpointConfig), and the building blocks they are made of:
range sets (RangeSet), reassembly of received data
(Assembler), buffering of sent data (SendBuffer), streams and flow control (StreamsState), packet number spaces and ACK generation
(PacketSpace), loss detection (Recovery), pacing (Pacer), path MTU discovery (MtuDiscovery) and timers (TimerTable).QUIC packet protection (RFC 9001 section 5): AEAD payload keys, header protection keys, Initial
keys per version, key updates and the Retry integrity tag.
QUIC frames (RFC 9000 section 19, RFC 9221 DATAGRAM, and the ACK frequency extension): a sealed
Frame hierarchy, its encoders and a validating decoder.QUIC packets (RFC 9000 section 17, RFC 9369): header encoding and partial decoding, packet
number truncation and recovery, coalesced datagrams, and protecting and unprotecting whole
packets in place.
QUIC transport parameters (RFC 9000 section 18), carried in the TLS
quic_transport_parameters extension.A TLS 1.3 handshake (RFC 8446) for QUIC (RFC 9001), client and server, ported from rustls with
quinn's session interface.
Address validation tokens (RFC 9000 section 8.1), ported from quinn-proto's
token.rs and
bloom_token_log.rs: Retry and NEW_TOKEN tokens sealed with AES-256-GCM under a key the
server holds (TokenKey), their validation with expiry
and address binding (TokenValidator), and a bounded
replay log (BloomTokenLog); on the client, where
NEW_TOKEN tokens wait for the next connection (TokenStore,
TokenMemoryCache).-
Classes in io.github.mahmoudimus.quic used by io.github.mahmoudimus.quicClassDescriptionThe TLS 1.3 cipher suites QUIC can use (RFC 9001 section 5.3), with what packet protection needs to know about each: its HKDF hash, AEAD and key length.A QUIC connection ID (RFC 9000 section 5.1): 0 to 20 opaque bytes with value semantics.The four QUIC encryption levels (RFC 9001 section 4), each with its own keys.What a QUIC endpoint answered itself, without a connection: from
QuicServer.endpointStats()andQuicClient.endpointStats().HKDF (RFC 5869) over an HMAC, and theHKDF-Expand-Labelof TLS 1.3 (RFC 8446 section 7.1) that QUIC uses for its secrets and keys (RFC 9001 section 5.1).A QUIC client endpoint on one UDP socket, from which any number of connections can be made.A QUIC connection with a blocking API made for virtual threads: open and accept streams, read and write them asInputStreams andOutputStreams, send and receive datagrams.Learns of an endpoint's connections as they open, complete their handshakes and close, for statistics: set withQuicServer.observe(io.github.mahmoudimus.quic.QuicConnection.Observer)orQuicClient.observe(io.github.mahmoudimus.quic.QuicConnection.Observer).Connection statistics.A QUIC connection error (RFC 9000 section 20), carrying the error code aCONNECTION_CLOSEframe sends to the peer.A QUIC server on one UDP socket.Sees the datagrams a server receives that none of its connections claims (by Destination Connection ID) before its endpoint does: a client's first Initial, packets of unknown versions, packets for connections the server does not know.Where an unbound server's datagrams go: the transport it runs over instead of a socket.How the peer abandoned the stream.The QUIC versions this module speaks: version 1 (RFC 9000) and version 2 (RFC 9369).A 16-byte stateless reset token (RFC 9000 section 10.3), as carried in NEW_CONNECTION_ID frames, thestateless_reset_tokentransport parameter and the tail of a Stateless Reset. -
Classes in io.github.mahmoudimus.quic used by io.github.mahmoudimus.quic.connectionClassDescriptionA QUIC connection ID (RFC 9000 section 5.1): 0 to 20 opaque bytes with value semantics.The four QUIC encryption levels (RFC 9001 section 4), each with its own keys.A QUIC connection error (RFC 9000 section 20), carrying the error code a
CONNECTION_CLOSEframe sends to the peer.The QUIC versions this module speaks: version 1 (RFC 9000) and version 2 (RFC 9369).A 16-byte stateless reset token (RFC 9000 section 10.3), as carried in NEW_CONNECTION_ID frames, thestateless_reset_tokentransport parameter and the tail of a Stateless Reset. -
Classes in io.github.mahmoudimus.quic used by io.github.mahmoudimus.quic.cryptoClassDescriptionThe TLS 1.3 cipher suites QUIC can use (RFC 9001 section 5.3), with what packet protection needs to know about each: its HKDF hash, AEAD and key length.A QUIC connection ID (RFC 9000 section 5.1): 0 to 20 opaque bytes with value semantics.The QUIC versions this module speaks: version 1 (RFC 9000) and version 2 (RFC 9369).The traffic secrets for one encryption level, as the TLS handshake hands them to packet protection: one secret per direction and the cipher suite they are for.
-
Classes in io.github.mahmoudimus.quic used by io.github.mahmoudimus.quic.frameClassDescriptionA QUIC connection ID (RFC 9000 section 5.1): 0 to 20 opaque bytes with value semantics.A QUIC connection error (RFC 9000 section 20), carrying the error code a
CONNECTION_CLOSEframe sends to the peer.A 16-byte stateless reset token (RFC 9000 section 10.3), as carried in NEW_CONNECTION_ID frames, thestateless_reset_tokentransport parameter and the tail of a Stateless Reset. -
Classes in io.github.mahmoudimus.quic used by io.github.mahmoudimus.quic.packetClassDescriptionA QUIC connection ID (RFC 9000 section 5.1): 0 to 20 opaque bytes with value semantics.The four QUIC encryption levels (RFC 9001 section 4), each with its own keys.A QUIC connection error (RFC 9000 section 20), carrying the error code a
CONNECTION_CLOSEframe sends to the peer.The QUIC versions this module speaks: version 1 (RFC 9000) and version 2 (RFC 9369). -
Classes in io.github.mahmoudimus.quic used by io.github.mahmoudimus.quic.paramsClassDescriptionA QUIC connection ID (RFC 9000 section 5.1): 0 to 20 opaque bytes with value semantics.A QUIC connection error (RFC 9000 section 20), carrying the error code a
CONNECTION_CLOSEframe sends to the peer.A 16-byte stateless reset token (RFC 9000 section 10.3), as carried in NEW_CONNECTION_ID frames, thestateless_reset_tokentransport parameter and the tail of a Stateless Reset. -
Classes in io.github.mahmoudimus.quic used by io.github.mahmoudimus.quic.tlsClassDescriptionThe TLS 1.3 cipher suites QUIC can use (RFC 9001 section 5.3), with what packet protection needs to know about each: its HKDF hash, AEAD and key length.The four QUIC encryption levels (RFC 9001 section 4), each with its own keys.A QUIC connection error (RFC 9000 section 20), carrying the error code a
CONNECTION_CLOSEframe sends to the peer.The traffic secrets for one encryption level, as the TLS handshake hands them to packet protection: one secret per direction and the cipher suite they are for. -
Classes in io.github.mahmoudimus.quic used by io.github.mahmoudimus.quic.tokenClassDescriptionA QUIC connection ID (RFC 9000 section 5.1): 0 to 20 opaque bytes with value semantics.A QUIC connection error (RFC 9000 section 20), carrying the error code a
CONNECTION_CLOSEframe sends to the peer.