Skip to main content

Crate libcrux_digest

Crate libcrux_digest 

Source
Expand description

This crate provides digest implementations.

  • Blake2
  • Sha2
  • Sha3

These can be used directly, using the blake2, sha2 and sha3 submodules.

§Basic API

For example, to hash a payload using Blake2b (with Hash):

fn main() {
    use libcrux_digest::blake2::*;
    use libcrux_digest::Hash as _;
    let mut digest = [0; 32];
    Blake2b::hash(&mut digest, b"test data").unwrap();
}

Or to hash a payload using Blake2b (with HashOwned):

fn main() {
    use libcrux_digest::blake2::*;
    use libcrux_digest::HashOwned as _;
    let digest: [u8; 32] = Blake2b::hash(b"test data").unwrap();
}

§Incremental digest API

To hash a payload using Blake2b:

fn main() {
    use libcrux_digest::blake2::*;
    let mut digest = [0; 32];
    let mut hasher = Blake2bHasher::new();
    hasher.update(b"test data").unwrap();
    hasher.finish(&mut digest);
}

Modules§

blake2
Blake2 digest implementations.
sha2
Sha2 digest implementations.
sha3
Sha3 digest implementations.

Structs§

Hasher
A generic hasher. This hasher maintains the incremental digest state.

Traits§

Hash
A trait for oneshot hashing, where the output is written into a provided buffer.
HashOwned
A trait for oneshot hashing, where the output is returned as an array.