+- The low-level TLS API (org.bouncycastle.tls) now implements DTLS 1.3 (RFC 9147): the unified record header with encrypted record numbers, the ACK-driven reliable handshake with selective retransmission, the certificate-authenticated handshake with HelloRetryRequest and client authentication, KeyUpdate in both directions (including the automatic update at the AEAD's key usage limit), and exporters and DTLS-SRTP; NewSessionTicket messages are accepted but, with no resumption yet, not used. It is opt-in: a DTLS client or server offers or accepts it only when its supported versions include ProtocolVersion.DTLSv13, and nothing lists that by default, so existing applications are unaffected. Not yet implemented for DTLS 1.3 are pre-shared keys and resumption, 0-RTT, connection IDs, post-handshake client authentication, and the RFC 9147 sec. 5.1 stateless cookie exchange: DTLSVerifier still implements only the DTLS 1.2 HelloVerifyRequest exchange, and a server offering DTLS 1.3 cannot be placed behind it (the handshake fails at the ServerHello with an internal_error alert rather than leaving the client to abort). Handshake flights of every DTLS version are now also packed into as few datagrams as the transport's send limit allows, where each record went in its own datagram before. (github #1468, github #1487)
0 commit comments