Struct tlspuffin::tls::rustls::hash_hs::HandshakeHash

source ·
pub struct HandshakeHash {
    ctx: Context,
    client_auth: Option<Vec<u8>>,
    override_buffer: 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§

§ctx: Context

None before we know what hash function we’re using

§client_auth: Option<Vec<u8>>

buffer for client-auth.

§override_buffer: Option<Vec<u8>>

Implementations§

source§

impl HandshakeHash

source

pub fn new(alg: &'static Algorithm) -> HandshakeHash

source

pub fn new_override( static_buffer: Vec<u8>, alg: &'static Algorithm, ) -> HandshakeHash

Creates a Handshake hash which return the same override hash always

source

pub fn abandon_client_auth(&mut self)

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

source

pub fn add_message(&mut self, m: &Message) -> &mut Self

Hash/buffer a handshake message.

source

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

Hash or buffer a byte slice.

source

pub fn get_hash_given(&self, extra: &[u8]) -> Digest

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

source

pub fn into_hrr_buffer(self) -> HandshakeHashBuffer

source

pub 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 fn get_current_hash(&self) -> Digest

Get the current hash value.

source

pub fn get_current_hash_raw(&self) -> Vec<u8>

source

pub 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 fn algorithm(&self) -> &'static Algorithm

The digest algorithm

Trait Implementations§

source§

impl Clone for HandshakeHash

source§

fn clone(&self) -> HandshakeHash

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
source§

impl Debug for HandshakeHash

source§

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

Formats the value using the given formatter. Read more
source§

impl EvaluatedTerm<TLSProtocolTypes> for HandshakeHash

source§

fn extract_knowledge<'a>( &'a self, knowledges: &mut Vec<Knowledge<'a, TLSProtocolTypes>>, matcher: Option<<TLSProtocolTypes as ProtocolTypes>::Matcher>, source: &'a Source, ) -> Result<(), Error>

Fill knowledges with new knowledge gathered form the type implementing EvaluatedTerm by recursively calling extract_knowledge on all contained element This will put source as the source of all the produced knowledge, matcher is also passed recursively but might be overwritten by a type with a more specific matcher

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> AsAny for T
where T: 'static,

source§

fn as_any(&self) -> &(dyn Any + 'static)

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
§

impl<T> CloneAny for T
where T: Any + Clone + Send + Sync,

§

fn clone_any(&self) -> Box<dyn CloneAny>

§

fn clone_any_send(&self) -> Box<dyn CloneAny + Send>

§

fn clone_any_sync(&self) -> Box<dyn CloneAny + Sync>

§

fn clone_any_send_sync(&self) -> Box<dyn CloneAny + Sync + Send>

source§

impl<T> CloneToUninit for T
where T: Clone,

source§

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

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

impl<T> DynClone for T
where T: Clone,

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.

§

impl<Tail, T> Prepend<T> for Tail

§

type PreprendResult = Tail

The Resulting [TupleList], of an [Prepend::prepend()] call, including the prepended entry.
§

fn prepend(self, value: T) -> (T, <Tail as Prepend<T>>::PreprendResult)

Prepend a value to this tuple, returning a new tuple with prepended value.
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T, PT> VariableData<PT> for T
where PT: ProtocolTypes, T: Clone + Debug + EvaluatedTerm<PT> + 'static,

source§

fn boxed(&self) -> Box<dyn VariableData<PT>>

source§

fn boxed_any(&self) -> Box<dyn Any>

source§

fn boxed_term(&self) -> Box<dyn EvaluatedTerm<PT>>

source§

fn type_id(&self) -> TypeId

source§

fn type_name(&self) -> &'static str

§

impl<T> DebugAny for T
where T: Any + Debug,

§

impl<T> MaybeHasScalabilityMonitor for T

§

impl<T> UnsafeAny for T
where T: Any,