pub trait Hasher<'a, const L: usize> {
    fn set_client(&'a self, client: &'a dyn Client<L>);
    fn add_data(
        &self,
        data: LeasableBuffer<'static, u8>
    ) -> Result<usize, (ErrorCode, &'static [u8])>; fn add_mut_data(
        &self,
        data: LeasableMutableBuffer<'static, u8>
    ) -> Result<usize, (ErrorCode, &'static mut [u8])>; fn run(
        &'a self,
        hash: &'static mut [u8; L]
    ) -> Result<(), (ErrorCode, &'static mut [u8; L])>; fn clear_data(&self); }
Expand description

Computes a non-cryptographic hash over data

‘L’ is the length of the ‘u8’ array to store the hash output.

Required Methods

Set the client instance which will receive hash_done() and add_data_done() callbacks. This callback is called when the data has been added to the hash engine. The callback should follow the Client add_data_done callback.

Add data to the hash block. This is the data that will be used for the hash function. Returns the number of bytes parsed on success There is no guarantee the data has been written until the add_data_done() callback is fired. On error the return value will contain a return code and the original data The possible ErrorCodes are:

  • BUSY: The system is busy performing an operation The caller should expect a callback
  • SIZE: The size of the data buffer is invalid

Add data to the hash block. This is the data that will be used for the hash function. Returns the number of bytes parsed on success There is no guarantee the data has been written until the add_data_done() callback is fired. On error the return value will contain a return code and the original data The possible ErrorCodes are:

  • BUSY: The system is busy performing an operation The caller should expect a callback
  • SIZE: The size of the data buffer is invalid

Request the implementation to generate a hash and stores the returned hash in the memory location specified. This doesn’t return any data, instead the client needs to have set a hash_done handler to determine when this is complete. On error the return value will contain a return code and the original data If there is data from the add_data() command asyncrously waiting to be written it will be written before the operation starts. The possible ErrorCodes are:

  • BUSY: The system is busy performing an operation The caller should expect a callback
  • SIZE: The size of the data buffer is invalid

Clear the internal state of the engine. This won’t clear the buffers provided to this API, that is up to the user to clear.

Implementors