Struct ClientHello
pub struct ClientHello { /* private fields */ }
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
pub fn protocol_version(&self) -> ProtocolVersion
pub fn protocol_version(&self) -> ProtocolVersion
Return all ProtocolVersion
s defined in this ClientHello
.
pub fn cipher_suites(&self) -> &[CipherSuite]
pub fn cipher_suites(&self) -> &[CipherSuite]
Return all CipherSuite
s defined in this ClientHello
.
pub fn compression_algorithms(&self) -> &[CompressionAlgorithm]
pub fn compression_algorithms(&self) -> &[CompressionAlgorithm]
Return all CompressionAlgorithm
s defined in this ClientHello
.
pub fn extensions(&self) -> &[ClientHelloExtension]
pub fn extensions(&self) -> &[ClientHelloExtension]
Return all ClientHelloExtension
s defined in this ClientHello
.
pub fn ext_server_name(&self) -> Option<&Domain>
pub fn ext_server_name(&self) -> Option<&Domain>
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]>
pub fn ext_supported_groups(&self) -> Option<&[SupportedGroup]>
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]>
pub fn ext_ec_point_formats(&self) -> Option<&[ECPointFormat]>
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]>
pub fn ext_signature_algorithms(&self) -> Option<&[SignatureScheme]>
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]>
pub fn ext_alpn(&self) -> Option<&[ApplicationProtocol]>
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]>
pub fn ext_alps(&self) -> Option<&[ApplicationProtocol]>
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]>
pub fn supported_versions(&self) -> Option<&[ProtocolVersion]>
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>> for ClientHello
impl<'a> RamaFrom<ClientHello<'a>> for ClientHello
fn rama_from(value: ClientHello<'a>) -> ClientHello
§impl<'ssl> RamaTryFrom<&ClientHello<'ssl>> for ClientHello
impl<'ssl> RamaTryFrom<&ClientHello<'ssl>> for ClientHello
type Error = OpaqueError
fn rama_try_from( value: &ClientHello<'ssl>, ) -> Result<ClientHello, <ClientHello as RamaTryFrom<&ClientHello<'ssl>>>::Error>
§impl<'ssl> RamaTryFrom<ClientHello<'ssl>> for ClientHello
impl<'ssl> RamaTryFrom<ClientHello<'ssl>> for ClientHello
type Error = OpaqueError
fn rama_try_from( value: ClientHello<'ssl>, ) -> Result<ClientHello, <ClientHello as RamaTryFrom<ClientHello<'ssl>>>::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