Struct CertificateSelection
pub struct CertificateSelection<'ssl>(/* private fields */);boring only.Expand description
Certificate-selection state, available only while the selection callback runs. Copy request metadata before moving it into an asynchronous operation. Borrowed metadata prevents mutating the SSL while that metadata is still used:
use rama_boring::ssl::CertificateSelection;
fn change(mut selection: CertificateSelection<'_>) {
let algorithms = selection.peer_verify_algorithms();
selection.ssl_mut().clear_certificates();
assert!(!algorithms.is_empty());
}Implementations§
§impl CertificateSelection<'_>
impl CertificateSelection<'_>
pub fn ssl_mut(&mut self) -> &mut SslRef
pub fn ssl_mut(&mut self) -> &mut SslRef
Mutably borrows the connection to configure credentials or handshake policy.
pub fn peer_verify_algorithms(&self) -> &[SslSignatureAlgorithm]
pub fn peer_verify_algorithms(&self) -> &[SslSignatureAlgorithm]
Signature algorithms the peer can verify. Empty if the peer omitted them.
This corresponds to SSL_get0_peer_verify_algorithms.
pub fn certificate_types(&self) -> &[u8] ⓘ
pub fn certificate_types(&self) -> &[u8] ⓘ
Client certificate types requested by the server. Empty for TLS 1.3 and on servers; use signature algorithms for TLS 1.3.
This corresponds to SSL_get0_certificate_types.
pub fn requested_ca_names(&self) -> impl Iterator<Item = &[u8]>
pub fn requested_ca_names(&self) -> impl Iterator<Item = &[u8]>
DER-encoded CA distinguished names requested by the server, in wire order. Empty on servers or when no CA names were sent. These are selection hints, not trust anchors.
This corresponds to SSL_get0_server_requested_CAs.
Auto Trait Implementations§
impl<'ssl> !RefUnwindSafe for CertificateSelection<'ssl>
impl<'ssl> !UnwindSafe for CertificateSelection<'ssl>
impl<'ssl> Freeze for CertificateSelection<'ssl>
impl<'ssl> Send for CertificateSelection<'ssl>
impl<'ssl> Sync for CertificateSelection<'ssl>
impl<'ssl> Unpin for CertificateSelection<'ssl>
impl<'ssl> UnsafeUnpin for CertificateSelection<'ssl>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§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