Struct ClientHello
pub struct ClientHello { /* private fields */ }net and tls only.Expand description
When a client first connects to a server, it is required to send the ClientHello as its first message.
The ClientHello contains random data, cipher suites, legacy content from <= TLS.12 and extensions.
For Rama however we only focus on the parts which a user might want to inspect and/or set.
Implementations§
§impl ClientHello
impl ClientHello
pub fn new( protocol_version: ProtocolVersion, cipher_suites: Vec<CipherSuite>, compression_algorithms: Vec<CompressionAlgorithm>, extensions: Vec<ClientHelloExtension>, ) -> ClientHello
rustls or boring or acme) and crate feature boring only.pub fn protocol_version(&self) -> ProtocolVersion
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn protocol_version(&self) -> ProtocolVersion
rustls or boring or acme) and crate feature boring only.Return all ProtocolVersions defined in this ClientHello.
pub fn cipher_suites(&self) -> &[CipherSuite]
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn cipher_suites(&self) -> &[CipherSuite]
rustls or boring or acme) and crate feature boring only.Return all CipherSuites defined in this ClientHello.
pub fn compression_algorithms(&self) -> &[CompressionAlgorithm]
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn compression_algorithms(&self) -> &[CompressionAlgorithm]
rustls or boring or acme) and crate feature boring only.Return all CompressionAlgorithms defined in this ClientHello.
pub fn extensions(&self) -> &[ClientHelloExtension]
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn extensions(&self) -> &[ClientHelloExtension]
rustls or boring or acme) and crate feature boring only.Return all ClientHelloExtensions defined in this ClientHello.
pub fn ext_server_name(&self) -> Option<&Domain>
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn ext_server_name(&self) -> Option<&Domain>
rustls or boring or acme) and crate feature boring only.Return the server name (SNI) if it is set in the ClientHelloExtension defined in this ClientHello.
See ClientHelloExtension::ServerName for more information about the server name.
pub fn ext_supported_groups(&self) -> Option<&[SupportedGroup]>
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn ext_supported_groups(&self) -> Option<&[SupportedGroup]>
rustls or boring or acme) and crate feature boring only.Return the elliptic curves supported by this client
if it is set in the ClientHelloExtension defined in this ClientHello.
See ClientHelloExtension::SupportedGroups for more information about these curves.
pub fn ext_ec_point_formats(&self) -> Option<&[ECPointFormat]>
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn ext_ec_point_formats(&self) -> Option<&[ECPointFormat]>
rustls or boring or acme) and crate feature boring only.Return the EC point formats supported by this client
if it is set in the ClientHelloExtension defined in this ClientHello.
See ClientHelloExtension::ECPointFormats for more information about this.
pub fn ext_signature_algorithms(&self) -> Option<&[SignatureScheme]>
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn ext_signature_algorithms(&self) -> Option<&[SignatureScheme]>
rustls or boring or acme) and crate feature boring only.Return the signature algorithms supported by this client
if it is set in the ClientHelloExtension defined in this ClientHello.
See ClientHelloExtension::SignatureAlgorithms for more information about these algorithms
pub fn ext_alpn(&self) -> Option<&[ApplicationProtocol]>
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn ext_alpn(&self) -> Option<&[ApplicationProtocol]>
rustls or boring or acme) and crate feature boring only.Return the application layer protocols supported for negotiation by this client
if it is set in the ClientHelloExtension defined in this ClientHello.
See ClientHelloExtension::ApplicationLayerProtocolNegotiation for more information about these protocols (ALPN).
pub fn ext_alps(&self) -> Option<&[ApplicationProtocol]>
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn ext_alps(&self) -> Option<&[ApplicationProtocol]>
rustls or boring or acme) and crate feature boring only.Return the application layer protocols for which alps is supported
if it is set in the ClientHelloExtension defined in this ClientHello.
See ClientHelloExtension::ApplicationSettings for more information about these protocols (ALPS).
pub fn supported_versions(&self) -> Option<&[ProtocolVersion]>
Available on (crate features rustls or boring or acme) and crate feature boring only.
pub fn supported_versions(&self) -> Option<&[ProtocolVersion]>
rustls or boring or acme) and crate feature boring only.Return the TLS versions supported by this client
if it is set in the ClientHelloExtension defined in this ClientHello.
See ClientHelloExtension::SupportedVersions for more information about these versions
Trait Implementations§
§impl Clone for ClientHello
impl Clone for ClientHello
§fn clone(&self) -> ClientHello
fn clone(&self) -> ClientHello
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for ClientHello
impl Debug for ClientHello
§impl<'de> Deserialize<'de> for ClientHello
impl<'de> Deserialize<'de> for ClientHello
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ClientHello, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ClientHello, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl From<ClientConfig> for ClientHello
impl From<ClientConfig> for ClientHello
§fn from(value: ClientConfig) -> ClientHello
fn from(value: ClientConfig) -> ClientHello
§impl From<ClientHello> for ClientConfig
impl From<ClientHello> for ClientConfig
§fn from(value: ClientHello) -> ClientConfig
fn from(value: ClientHello) -> ClientConfig
§impl Hash for ClientHello
impl Hash for ClientHello
§impl<'a> RamaFrom<ClientHello<'a>, RamaTlsRustlsCrateMarker> for ClientHello
impl<'a> RamaFrom<ClientHello<'a>, RamaTlsRustlsCrateMarker> for ClientHello
fn rama_from(value: ClientHello<'a>) -> ClientHello
§impl<'ssl> RamaTryFrom<&ClientHello<'ssl>, RamaTlsBoringCrateMarker> for ClientHello
impl<'ssl> RamaTryFrom<&ClientHello<'ssl>, RamaTlsBoringCrateMarker> for ClientHello
type Error = OpaqueError
fn rama_try_from( value: &ClientHello<'ssl>, ) -> Result<ClientHello, <ClientHello as RamaTryFrom<&ClientHello<'ssl>, RamaTlsBoringCrateMarker>>::Error>
§impl<'ssl> RamaTryFrom<ClientHello<'ssl>, RamaTlsBoringCrateMarker> for ClientHello
impl<'ssl> RamaTryFrom<ClientHello<'ssl>, RamaTlsBoringCrateMarker> for ClientHello
type Error = OpaqueError
fn rama_try_from( value: ClientHello<'ssl>, ) -> Result<ClientHello, <ClientHello as RamaTryFrom<ClientHello<'ssl>, RamaTlsBoringCrateMarker>>::Error>
§impl Serialize for ClientHello
impl Serialize for ClientHello
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
§impl TryFrom<ClientHello> for TlsConnectorDataBuilder
impl TryFrom<ClientHello> for TlsConnectorDataBuilder
§type Error = OpaqueError
type Error = OpaqueError
§fn try_from(
value: ClientHello,
) -> Result<TlsConnectorDataBuilder, <TlsConnectorDataBuilder as TryFrom<ClientHello>>::Error>
fn try_from( value: ClientHello, ) -> Result<TlsConnectorDataBuilder, <TlsConnectorDataBuilder as TryFrom<ClientHello>>::Error>
Auto Trait Implementations§
impl Freeze for ClientHello
impl RefUnwindSafe for ClientHello
impl Send for ClientHello
impl Sync for ClientHello
impl Unpin for ClientHello
impl UnwindSafe for ClientHello
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more