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.
Sourcepub fn server_cert_types(&self) -> Option<&'a [CertificateType]>
pub fn server_cert_types(&self) -> Option<&'a [CertificateType]>
Get the server certificate types offered in the ClientHello.
Returns None
if the client did not include a certificate type extension.
Sourcepub fn client_cert_types(&self) -> Option<&'a [CertificateType]>
pub fn client_cert_types(&self) -> Option<&'a [CertificateType]>
Get the client certificate types offered in the ClientHello.
Returns None
if the client did not include a certificate type extension.
Auto Trait Implementations§
impl<'a> Freeze for ClientHello<'a>
impl<'a> RefUnwindSafe for ClientHello<'a>
impl<'a> Send for ClientHello<'a>
impl<'a> Sync for ClientHello<'a>
impl<'a> Unpin for ClientHello<'a>
impl<'a> UnwindSafe for ClientHello<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 80 bytes