pub struct ClientHello { /* private fields */ }net 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§
Source§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) and crate feature boring only.Sourcepub fn protocol_version(&self) -> ProtocolVersion
Available on (crate features rustls or boring) and crate feature boring only.
pub fn protocol_version(&self) -> ProtocolVersion
rustls or boring) and crate feature boring only.Return all ProtocolVersions defined in this ClientHello.
Sourcepub fn cipher_suites(&self) -> &[CipherSuite]
Available on (crate features rustls or boring) and crate feature boring only.
pub fn cipher_suites(&self) -> &[CipherSuite]
rustls or boring) and crate feature boring only.Return all CipherSuites defined in this ClientHello.
Sourcepub fn compression_algorithms(&self) -> &[CompressionAlgorithm]
Available on (crate features rustls or boring) and crate feature boring only.
pub fn compression_algorithms(&self) -> &[CompressionAlgorithm]
rustls or boring) and crate feature boring only.Return all CompressionAlgorithms defined in this ClientHello.
Sourcepub fn extensions(&self) -> &[ClientHelloExtension]
Available on (crate features rustls or boring) and crate feature boring only.
pub fn extensions(&self) -> &[ClientHelloExtension]
rustls or boring) and crate feature boring only.Return all ClientHelloExtensions defined in this ClientHello.
Sourcepub fn ext_server_name(&self) -> Option<&Host>
Available on (crate features rustls or boring) and crate feature boring only.
pub fn ext_server_name(&self) -> Option<&Host>
rustls or boring) 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.
Sourcepub fn ext_supported_groups(&self) -> Option<&[SupportedGroup]>
Available on (crate features rustls or boring) and crate feature boring only.
pub fn ext_supported_groups(&self) -> Option<&[SupportedGroup]>
rustls or boring) 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.
Sourcepub fn ext_ec_point_formats(&self) -> Option<&[ECPointFormat]>
Available on (crate features rustls or boring) and crate feature boring only.
pub fn ext_ec_point_formats(&self) -> Option<&[ECPointFormat]>
rustls or boring) 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.
Sourcepub fn ext_signature_algorithms(&self) -> Option<&[SignatureScheme]>
Available on (crate features rustls or boring) and crate feature boring only.
pub fn ext_signature_algorithms(&self) -> Option<&[SignatureScheme]>
rustls or boring) 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
Sourcepub fn ext_alpn(&self) -> Option<&[ApplicationProtocol]>
Available on (crate features rustls or boring) and crate feature boring only.
pub fn ext_alpn(&self) -> Option<&[ApplicationProtocol]>
rustls or boring) 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).
Sourcepub fn supported_versions(&self) -> Option<&[ProtocolVersion]>
Available on (crate features rustls or boring) and crate feature boring only.
pub fn supported_versions(&self) -> Option<&[ProtocolVersion]>
rustls or boring) 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§
Source§impl Clone for ClientHello
impl Clone for ClientHello
Source§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 moreSource§impl Debug for ClientHello
impl Debug for ClientHello
Source§impl<'de> Deserialize<'de> for ClientHello
impl<'de> Deserialize<'de> for ClientHello
Source§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>,
Source§impl From<ClientConfig> for ClientHello
impl From<ClientConfig> for ClientHello
Source§fn from(value: ClientConfig) -> ClientHello
fn from(value: ClientConfig) -> ClientHello
Source§impl From<ClientHello> for ClientConfig
impl From<ClientHello> for ClientConfig
Source§fn from(value: ClientHello) -> ClientConfig
fn from(value: ClientHello) -> ClientConfig
Source§impl Hash for ClientHello
impl Hash for ClientHello
Source§impl<'a> RamaFrom<ClientHello<'a>> for ClientHello
impl<'a> RamaFrom<ClientHello<'a>> for ClientHello
fn rama_from(value: ClientHello<'a>) -> ClientHello
Source§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>
Source§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>
Source§impl Serialize for ClientHello
impl Serialize for ClientHello
Source§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,
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§
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,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T, U> RamaTryInto<U> for Twhere
U: RamaTryFrom<T>,
impl<T, U> RamaTryInto<U> for Twhere
U: RamaTryFrom<T>,
type Error = <U as RamaTryFrom<T>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T>>::Error>
Source§impl<T, U> RamaTryInto<U> for Twhere
U: RamaTryFrom<T>,
impl<T, U> RamaTryInto<U> for Twhere
U: RamaTryFrom<T>,
type Error = <U as RamaTryFrom<T>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T>>::Error>
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.