!!! Overview [{$pagename}] is a [TLS extension] defined in [TLS 1.3] [{$pagename}] [TLS extension] is used by the [client] to indicate which versions of [TLS] it supports. The [TLS extension] contains a list of supported versions in preference order, with the most preferred version first. Implementations of this specification [MUST] send this [TLS extension] containing all versions of [TLS] which they are prepared to negotiate (for this specification, that means minimally [0x0304|TLS 1.3], but if previous versions of [TLS] are supported, they [MUST] be present as well). %%prettify {{{ struct { ProtocolVersion versions<2..254>; } SupportedVersions }}} /% If this [TLS extension] is __not__ present, [servers] which are compliant with this specification [MUST] negotiate [TLS 1.2] or prior as specified in [RFC 5246], even if [ClientHello].[legacy_version] is 0x0304 or later. Servers [MAY] abort the [TLS Handshake] upon receiving a [ClientHello] with [legacy_version] 0x0304 or later. If this extension is present, servers [MUST] ignore the [ClientHello].[legacy_version] value and [MUST] use only the "[{$pagename}]" extension to determine [client] preferences. Servers [MUST] only select a version of [TLS] present in the [{$pagename}] extension and [MUST] ignore any unknown versions that are present in that extension. Note that this mechanism makes it possible to negotiate a version prior to T[LS 1.2] if one side supports a sparse range. Implementations of [TLS 1.3] which choose to support prior versions of [TLS] [SHOULD] support [TLS 1.2]. [Servers] should be prepared to receive [ClientHellos] that include this [{$pagename}] [TLS extension] but do not include 0x0304 in the list of versions. The [server] [MUST NOT] send the "[{$pagename}]" extension. The [server]'s selected version is contained in the [ServerHello].version field as in previous versions of [TLS]. !! More Information There might be more information for this subject on one of the following: [{ReferringPagesPlugin before='*' after='\n' }]