logo
pub trait VariableOutput: Sized + Update {
    const MAX_OUTPUT_SIZE: usize;

    fn new(output_size: usize) -> Result<Self, InvalidOutputSize>;
    fn output_size(&self) -> usize;
    fn finalize_variable(self, out: &mut [u8]) -> Result<(), InvalidBufferSize>;

    fn digest_variable(
        input: impl AsRef<[u8]>,
        output: &mut [u8]
    ) -> Result<(), InvalidOutputSize> { ... } fn finalize_boxed(self) -> Box<[u8]> { ... } }
Expand description

Trait for hash functions with variable-size output.

Required Associated Constants

Maximum size of output hash.

Required Methods

Create new hasher instance with the given output size.

It will return Err(InvalidOutputSize) in case if hasher can not return hash of the specified output size.

Get output size of the hasher instance provided to the new method

Write result into the output buffer.

Returns Err(InvalidOutputSize) if out size is not equal to self.output_size().

Provided Methods

Compute hash of data and write it to output.

Length of the output hash is determined by output. If output is bigger than Self::MAX_OUTPUT_SIZE, this method returns InvalidOutputSize.

Retrieve result into a boxed slice and consume hasher.

Box<[u8]> is used instead of Vec<u8> to save stack space, since they have size of 2 and 3 words respectively.

Implementors