Uses of Class
io.github.mahmoudimus.quic.ConnectionId
Packages that use ConnectionId
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.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).-
Uses of ConnectionId in io.github.mahmoudimus.quic
Fields in io.github.mahmoudimus.quic declared as ConnectionIdModifier and TypeFieldDescriptionstatic final ConnectionIdConnectionId.EMPTYThe zero-length connection ID.Methods in io.github.mahmoudimus.quic that return ConnectionIdModifier and TypeMethodDescriptionQuicConnection.initialDestinationId()The Destination Connection ID of the client's first Initial packet (after a Retry, of its first Initial with the Retry's token): on a server, the ID the connection was created for.static ConnectionIdConnectionId.of(byte... bytes) A connection ID with a copy of some bytes.static ConnectionIdConnectionId.of(byte[] bytes, int offset, int length) A connection ID with a copy of part of an array.static ConnectionIdA random connection ID.static ConnectionIdConnectionId.read(ByteBuffer in, int length) Reads a connection ID of known length at the buffer's position.Methods in io.github.mahmoudimus.quic with parameters of type ConnectionIdModifier and TypeMethodDescriptionintConnectionId.compareTo(ConnectionId o) Orders by length, then by unsigned bytes.static StatelessResetTokenStatelessResetToken.derive(byte[] staticKey, ConnectionId connectionId) Derives the token for a connection ID from a static key, as quinn does: the first 16 bytes of HMAC-SHA256(key, connection ID). -
Uses of ConnectionId in io.github.mahmoudimus.quic.connection
Methods in io.github.mahmoudimus.quic.connection that return ConnectionIdModifier and TypeMethodDescriptionRemoteCidQueue.active()The ID in use.EndpointEvent.CidIssued.cid()Returns the value of thecidrecord component.EndpointEvent.CidRetired.cid()Returns the value of thecidrecord component.ConnectionIdGenerator.generateCid()A new connection ID.RandomConnectionIdGenerator.generateCid()Connection.handshakeCid()The local connection ID used during the handshake.IssuedCid.id()Returns the value of theidrecord component.Connection.initialDcid()The Destination Connection ID of the client's first Initial packet: chosen by the client, or after a Retry, the Retry's Source Connection ID.RemoteCidQueue.peekNext()The IDRemoteCidQueue.next()would switch to, without switching: a probe of a new path uses it before the connection moves there (RFC 9000 section 9.5).Connection.remoteCid()The connection ID packets to the peer carry now.LocalCidState.Retirement.retired()Returns the value of theretiredrecord component.Methods in io.github.mahmoudimus.quic.connection that return types with arguments of type ConnectionIdModifier and TypeMethodDescriptionLocalCidState.activeCids()The IDs issued and not retired, by sequence number.Connection.localCids()The local connection IDs the peer may use.Methods in io.github.mahmoudimus.quic.connection with parameters of type ConnectionIdModifier and TypeMethodDescriptionLocalCidState.onRetireConnectionId(long sequence, ConnectionId packetDestinationId, long peerActiveConnectionIdLimit) Processes a RETIRE_CONNECTION_ID frame.LocalCidState.resetToken(ConnectionId cid) The reset token of one of our IDs.voidRemoteCidQueue.updateInitialCid(ConnectionId cid) Replaces the initial ID, after a Retry or the server's first Initial.default booleanConnectionIdGenerator.validate(ConnectionId cid) Whether an ID could have come from this generator, to drop stray packets cheaply.Constructors in io.github.mahmoudimus.quic.connection with parameters of type ConnectionIdModifierConstructorDescriptionCidIssued(ConnectionId cid) Creates an instance of aCidIssuedrecord class.CidRetired(ConnectionId cid) Creates an instance of aCidRetiredrecord class.IssuedCid(long sequence, ConnectionId id, StatelessResetToken resetToken) An issued connection ID.LocalCidState(ConnectionIdGenerator generator, byte[] resetKey, long now, ConnectionId... handshakeCids) The state after the handshake, during whichhandshakeCidswere used: the first with sequence number 0, then for example a server's preferred address with 1.RemoteCidQueue(ConnectionId initial) A queue with quinn's window of 5.RemoteCidQueue(ConnectionId initial, int limit) A queue holding the ID the handshake used, sequence number 0.Retirement(ConnectionId retired, boolean issueReplacement) Creates an instance of aRetirementrecord class. -
Uses of ConnectionId in io.github.mahmoudimus.quic.crypto
Methods in io.github.mahmoudimus.quic.crypto with parameters of type ConnectionIdModifier and TypeMethodDescriptionstatic KeysKeys.initial(QuicVersion version, ConnectionId clientDestinationId, boolean isServer) The Initial keys for a client's first Destination Connection ID.static SecretsKeys.initialSecrets(QuicVersion version, ConnectionId clientDestinationId) The Initial secrets for a client's first Destination Connection ID (RFC 9001 section 5.2): HKDF-Extract with the version's salt, then the"client in"and"server in"labels.static byte[]RetryIntegrity.tag(QuicVersion version, ConnectionId originalDestinationId, byte[] packet, int offset, int length) Computes the tag of a Retry packet held in an array.static byte[]RetryIntegrity.tag(QuicVersion version, ConnectionId originalDestinationId, ByteBuffer retryWithoutTag) Computes the tag of a Retry packet.static booleanRetryIntegrity.verify(QuicVersion version, ConnectionId originalDestinationId, ByteBuffer retryPacket) Checks the tag at the end of a received Retry packet, in constant time. -
Uses of ConnectionId in io.github.mahmoudimus.quic.frame
Methods in io.github.mahmoudimus.quic.frame that return ConnectionIdModifier and TypeMethodDescriptionFrame.NewConnectionId.connectionId()Returns the value of theconnectionIdrecord component.Constructors in io.github.mahmoudimus.quic.frame with parameters of type ConnectionIdModifierConstructorDescriptionNewConnectionId(long sequence, long retirePriorTo, ConnectionId connectionId, StatelessResetToken resetToken) A NEW_CONNECTION_ID frame. -
Uses of ConnectionId in io.github.mahmoudimus.quic.packet
Methods in io.github.mahmoudimus.quic.packet that return ConnectionIdModifier and TypeMethodDescriptionPacketHeader.destinationId()The Destination Connection ID.PacketHeader.Handshake.destinationId()Returns the value of thedestinationIdrecord component.PacketHeader.Initial.destinationId()Returns the value of thedestinationIdrecord component.PacketHeader.Retry.destinationId()Returns the value of thedestinationIdrecord component.PacketHeader.Short.destinationId()Returns the value of thedestinationIdrecord component.PacketHeader.VersionNegotiation.destinationId()Returns the value of thedestinationIdrecord component.PacketHeader.ZeroRtt.destinationId()Returns the value of thedestinationIdrecord component.ProtectedPacket.destinationId()The Destination Connection ID.PacketHeader.Handshake.sourceId()Returns the value of thesourceIdrecord component.PacketHeader.Initial.sourceId()Returns the value of thesourceIdrecord component.PacketHeader.Retry.sourceId()Returns the value of thesourceIdrecord component.PacketHeader.VersionNegotiation.sourceId()Returns the value of thesourceIdrecord component.PacketHeader.ZeroRtt.sourceId()Returns the value of thesourceIdrecord component.ProtectedPacket.sourceId()The Source Connection ID of a long header.Methods in io.github.mahmoudimus.quic.packet with parameters of type ConnectionIdModifier and TypeMethodDescriptionstatic PacketHeader.RetryPacketHeader.Retry.create(QuicVersion version, ConnectionId destinationId, ConnectionId sourceId, byte[] token, ConnectionId originalDestinationId) A Retry packet with its integrity tag computed for the client's original Destination Connection ID.booleanProtectedPacket.verifyRetry(ConnectionId originalDestinationId) Checks the integrity tag of a Retry packet (RFC 9001 section 5.8).Constructors in io.github.mahmoudimus.quic.packet with parameters of type ConnectionIdModifierConstructorDescriptionHandshake(QuicVersion version, ConnectionId destinationId, ConnectionId sourceId, long packetNumber, int packetNumberLength) A Handshake header.Initial(QuicVersion version, ConnectionId destinationId, ConnectionId sourceId, byte[] token, long packetNumber, int packetNumberLength) An Initial header.Retry(QuicVersion version, ConnectionId destinationId, ConnectionId sourceId, byte[] token, byte[] integrityTag) A Retry packet.Short(boolean spin, boolean keyPhase, ConnectionId destinationId, long packetNumber, int packetNumberLength) A short header.VersionNegotiation(ConnectionId destinationId, ConnectionId sourceId, List<Integer> versions) A Version Negotiation packet.ZeroRtt(QuicVersion version, ConnectionId destinationId, ConnectionId sourceId, long packetNumber, int packetNumberLength) A 0-RTT header. -
Uses of ConnectionId in io.github.mahmoudimus.quic.params
Methods in io.github.mahmoudimus.quic.params that return ConnectionIdModifier and TypeMethodDescriptionPreferredAddress.connectionId()Returns the value of theconnectionIdrecord component.TransportParameters.initialSourceConnectionId()Returns the value of theinitialSourceConnectionIdrecord component.TransportParameters.originalDestinationConnectionId()Returns the value of theoriginalDestinationConnectionIdrecord component.TransportParameters.retrySourceConnectionId()Returns the value of theretrySourceConnectionIdrecord component.Methods in io.github.mahmoudimus.quic.params with parameters of type ConnectionIdModifier and TypeMethodDescriptionvoidTransportParameters.authenticateConnectionIds(boolean sentByServer, ConnectionId peerInitialSourceId, ConnectionId originalDestinationId, ConnectionId retrySourceId) Authenticates the connection IDs of the handshake (RFC 9000 section 7.3): both endpoints must sendinitial_source_connection_idmatching the Source Connection ID of their first Initial; a server must sendoriginal_destination_connection_id, andretry_source_connection_idif and only if it sent a Retry.TransportParameters.Builder.initialSourceConnectionId(ConnectionId v) Setsinitial_source_connection_id.TransportParameters.Builder.originalDestinationConnectionId(ConnectionId v) Setsoriginal_destination_connection_id.TransportParameters.Builder.retrySourceConnectionId(ConnectionId v) Setsretry_source_connection_id.Constructors in io.github.mahmoudimus.quic.params with parameters of type ConnectionIdModifierConstructorDescriptionPreferredAddress(InetSocketAddress ipv4, InetSocketAddress ipv6, ConnectionId connectionId, StatelessResetToken statelessResetToken) A preferred address.TransportParameters(ConnectionId originalDestinationConnectionId, long maxIdleTimeout, StatelessResetToken statelessResetToken, long maxUdpPayloadSize, long initialMaxData, long initialMaxStreamDataBidiLocal, long initialMaxStreamDataBidiRemote, long initialMaxStreamDataUni, long initialMaxStreamsBidi, long initialMaxStreamsUni, long ackDelayExponent, long maxAckDelay, boolean disableActiveMigration, PreferredAddress preferredAddress, long activeConnectionIdLimit, ConnectionId initialSourceConnectionId, ConnectionId retrySourceConnectionId, long maxDatagramFrameSize, boolean greaseQuicBit, long minAckDelay, VersionInformation versionInformation, List<UnknownParameter> unknownParameters) Transport parameters. -
Uses of ConnectionId in io.github.mahmoudimus.quic.token
Methods in io.github.mahmoudimus.quic.token that return ConnectionIdModifier and TypeMethodDescriptionIncomingToken.originalDestinationId()Returns the value of theoriginalDestinationIdrecord component.TokenPayload.Retry.originalDestinationId()Returns the value of theoriginalDestinationIdrecord component.IncomingToken.retrySourceId()Returns the value of theretrySourceIdrecord component.Methods in io.github.mahmoudimus.quic.token with parameters of type ConnectionIdModifier and TypeMethodDescriptionbyte[]TokenValidator.retryToken(InetSocketAddress client, ConnectionId originalDestinationId) A token for a Retry packet.static IncomingTokenIncomingToken.unvalidated(ConnectionId destinationId) No usable token: the address is not validated.TokenValidator.validate(byte[] token, ConnectionId destinationId, InetSocketAddress remote) Checks the token of a client's first Initial packet.Constructors in io.github.mahmoudimus.quic.token with parameters of type ConnectionIdModifierConstructorDescriptionIncomingToken(ConnectionId retrySourceId, ConnectionId originalDestinationId, boolean validated) The result of validating a token.Retry(InetSocketAddress address, ConnectionId originalDestinationId, Instant issued) A Retry payload.