Skip to main content

VerifyPeerIdentity

Struct VerifyPeerIdentity 

Source
pub struct VerifyPeerIdentity<Side: SideData, T: Transport> { /* private fields */ }
Expand description

The peer’s presented identity must be verified.

The caller has three choices:

  • Call Self::with_config(). This calls the configured verifier trait (ClientVerifier::verify_identity() or ServerVerifier::verify_identity()) synchronously.

  • Call Self::presented_identity() to obtain the peer’s presented identity, verify that outside the library (perhaps asynchronously), and then continue the handshake with Self::continue_with().

    Sessions established this way are stored for resumption exactly as if the configured verifier had been used. The external verification must therefore be equivalent to the configured verifier. If it applies a different policy, use a separate config with separate resumption storage.

    If the verification fails, the error can be passed into Self::continue_with() to follow a uniform error handling path.

  • Abandon the handshake by discarding this object.

The returned object is a further handshake state for this side. Commonly this will contain a ServerHandshake::NeedsInput, ClientHandshake::NeedsInput, quic::ServerHandshake::NeedsInput or quic::ClientHandshake::NeedsInput which will accept and process further data.

Implementations§

Source§

impl<Side: SideData, T: Transport> VerifyPeerIdentity<Side, T>

Source

pub fn presented_identity(&self) -> Result<Side::PeerIdentity<'_>, Error>

Inspect the identity that the peer has provided.

Source§

impl<Side: SideData> VerifyPeerIdentity<Side, Tcp>

Source

pub fn with_config(self, tls: &mut Vec<u8>) -> Result<Side::Handshake, Error>

Progress the handshake by calling the pre-configured certificate verification trait.

Source

pub fn continue_with( self, verification_result: Result<VerifiedIdentity<'static>, Error>, tls: &mut Vec<u8>, ) -> Result<Side::Handshake, Error>

Progress the handshake by incorporating the result of an external verification.

Further data to send to the peer may be appended to tls.

See VerifyPeerIdentity for important requirements related to resumption safety.

If verification_result is an error, this error is returned and the handshake terminates. An alert may be appended to tls for sending to the peer.

Source§

impl<Side: SideData> VerifyPeerIdentity<Side, Quic>

Source

pub fn with_config( self, output: &mut Vec<QuicEvent>, ) -> Result<Side::QuicHandshake, Error>

Progress the handshake by calling the pre-configured certificate verification trait.

Source

pub fn continue_with( self, verification_result: Result<VerifiedIdentity<'static>, Error>, output: &mut Vec<QuicEvent>, ) -> Result<Side::QuicHandshake, Error>

Progress the handshake by incorporating the result of an external verification.

See VerifyPeerIdentity for important requirements related to resumption safety.

If verification_result is an error, this error is returned and the handshake terminates.

Events are appended to output.

Trait Implementations§

Source§

impl<Side: SideData, T: Transport> Debug for VerifyPeerIdentity<Side, T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<Side, T> !RefUnwindSafe for VerifyPeerIdentity<Side, T>

§

impl<Side, T> !UnwindSafe for VerifyPeerIdentity<Side, T>

§

impl<Side, T> Freeze for VerifyPeerIdentity<Side, T>
where Connection<Side, T>: Freeze, Box<dyn VerifySidePeerIdentity<Side>>: Freeze,

§

impl<Side, T> Send for VerifyPeerIdentity<Side, T>
where Connection<Side, T>: Send, Box<dyn VerifySidePeerIdentity<Side>>: Send,

§

impl<Side, T> Sync for VerifyPeerIdentity<Side, T>
where Connection<Side, T>: Sync, Box<dyn VerifySidePeerIdentity<Side>>: Sync,

§

impl<Side, T> Unpin for VerifyPeerIdentity<Side, T>
where Connection<Side, T>: Unpin, Box<dyn VerifySidePeerIdentity<Side>>: Unpin,

§

impl<Side, T> UnsafeUnpin for VerifyPeerIdentity<Side, T>
where Connection<Side, T>: UnsafeUnpin, Box<dyn VerifySidePeerIdentity<Side>>: UnsafeUnpin,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more