rustls::hash_hs

Struct HandshakeHash

Source
pub(crate) struct HandshakeHash {
    provider: &'static dyn Hash,
    ctx: Box<dyn Context>,
    client_auth: Option<Vec<u8>>,
}
Expand description

This deals with keeping a running hash of the handshake payloads. This is computed by buffering initially. Once we know what hash function we need to use we switch to incremental hashing.

For client auth, we also need to buffer all the messages. This is disabled in cases where client auth is not possible.

Fields§

§provider: &'static dyn Hash§ctx: Box<dyn Context>§client_auth: Option<Vec<u8>>

buffer for client-auth.

Implementations§

Source§

impl HandshakeHash

Source

pub(crate) fn abandon_client_auth(&mut self)

We decided not to do client auth after all, so discard the transcript.

Source

pub(crate) fn add_message(&mut self, m: &Message<'_>) -> &mut Self

Hash/buffer a handshake message.

Source

pub(crate) fn add(&mut self, bytes: &[u8])

Hash/buffer an encoded handshake message.

Source

fn add_raw(&mut self, buf: &[u8]) -> &mut Self

Hash or buffer a byte slice.

Source

pub(crate) fn hash_given(&self, extra: &[u8]) -> Output

Get the hash value if we were to hash extra too, using hash function hash.

Source

pub(crate) fn into_hrr_buffer(self) -> HandshakeHashBuffer

Source

pub(crate) fn rollup_for_hrr(&mut self)

Take the current hash value, and encapsulate it in a ‘handshake_hash’ handshake message. Start this hash again, with that message at the front.

Source

pub(crate) fn current_hash(&self) -> Output

Get the current hash value.

Source

pub(crate) fn take_handshake_buf(&mut self) -> Option<Vec<u8>>

Takes this object’s buffer containing all handshake messages so far. This method only works once; it resets the buffer to empty.

Source

pub(crate) fn algorithm(&self) -> HashAlgorithm

The hashing algorithm

Trait Implementations§

Source§

impl Clone for HandshakeHash

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.