pub struct ClientHello<'a> { /* private fields */ }
Expand description
A struct representing the received Client Hello
Implementations§
source§impl<'a> ClientHello<'a>
impl<'a> ClientHello<'a>
sourcepub fn server_name(&self) -> Option<&str>
pub fn server_name(&self) -> Option<&str>
Get the server name indicator.
Returns None
if the client did not supply a SNI.
sourcepub fn signature_schemes(&self) -> &[SignatureScheme]
pub fn signature_schemes(&self) -> &[SignatureScheme]
Get the compatible signature schemes.
Returns standard-specified default if the client omitted this extension.
sourcepub fn alpn(&self) -> Option<impl Iterator<Item = &'a [u8]>>
pub fn alpn(&self) -> Option<impl Iterator<Item = &'a [u8]>>
Get the ALPN protocol identifiers submitted by the client.
Returns None
if the client did not include an ALPN extension.
Application Layer Protocol Negotiation (ALPN) is a TLS extension that lets a client submit a set of identifiers that each a represent an application-layer protocol. The server will then pick its preferred protocol from the set submitted by the client. Each identifier is represented as a byte array, although common values are often ASCII-encoded. See the official RFC-7301 specifications at https://datatracker.ietf.org/doc/html/rfc7301 for more information on ALPN.
For example, a HTTP client might specify “http/1.1” and/or “h2”. Other well-known values are listed in the at IANA registry at https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids.
The server can specify supported ALPN protocols by setting ServerConfig::alpn_protocols
.
During the handshake, the server will select the first protocol configured that the client supports.
sourcepub fn cipher_suites(&self) -> &[CipherSuite]
pub fn cipher_suites(&self) -> &[CipherSuite]
Get cipher suites.