pub trait UniversalHash: BlockSizeUser + Sized {
// Required methods
fn update_with_backend(
&mut self,
f: impl UhfClosure<BlockSize = Self::BlockSize>,
);
fn finalize(self) -> Block<Self>;
// Provided methods
fn update(&mut self, blocks: &[Block<Self>]) { ... }
fn update_padded(&mut self, data: &[u8]) { ... }
fn finalize_reset(&mut self) -> Block<Self>
where Self: Clone + Reset { ... }
fn verify(self, expected: &Block<Self>) -> Result<(), Error> { ... }
}
Expand description
The UniversalHash
trait defines a generic interface for universal hash
functions.
Required Methods§
Sourcefn update_with_backend(
&mut self,
f: impl UhfClosure<BlockSize = Self::BlockSize>,
)
fn update_with_backend( &mut self, f: impl UhfClosure<BlockSize = Self::BlockSize>, )
Update hash function state using the provided rank-2 closure.
Provided Methods§
Sourcefn update(&mut self, blocks: &[Block<Self>])
fn update(&mut self, blocks: &[Block<Self>])
Update hash function state with the provided block.
Sourcefn update_padded(&mut self, data: &[u8])
fn update_padded(&mut self, data: &[u8])
Input data into the universal hash function. If the length of the
data is not a multiple of the block size, the remaining data is
padded with zeroes up to the BlockSize
.
This approach is frequently used by AEAD modes which use Message Authentication Codes (MACs) based on universal hashing.
Sourcefn finalize_reset(&mut self) -> Block<Self>
fn finalize_reset(&mut self) -> Block<Self>
Obtain the [Output
] of a UniversalHash
computation and reset it back
to its initial state.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.