lib-q-hash 0.0.2

Post-quantum Hash Functions for lib-Q
docs.rs failed to build lib-q-hash-0.0.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

lib-q-hash

Post-quantum hash functions for lib-Q.

Features

  • SHA-3: SHA3-224, SHA3-256, SHA3-384, SHA3-512
  • SHAKE: SHAKE128, SHAKE256
  • cSHAKE: Customizable SHAKE functions
  • TurboSHAKE: Accelerated SHAKE variant
  • KangarooTwelve: Fast hash function based on Keccak
  • KMAC: Keyed Message Authentication Code (128/256)
  • TupleHash: Tuple-based hashing (128/256)
  • ParallelHash: Parallel processing for large data (128/256)

WebAssembly

The parallelhash feature enables Rayon and must not be used on wasm32-unknown-unknown; the crate fails to compile with that feature on WASM. Use serial builds for browser targets.

Usage

Basic Hashing

use lib_q_hash::{Sha3_256, Digest};

let mut hasher = Sha3_256::new();
hasher.update(b"Hello, world!");
let result = hasher.finalize();

KMAC

use lib_q_hash::{Kmac128, digest::{Update, ExtendableOutput}};

let mut kmac = Kmac128::new(b"key", b"custom");
kmac.update(b"message");
let mut output = [0u8; 32];
kmac.finalize(&mut output);

TupleHash

use lib_q_hash::{TupleHash128, digest::{Update, ExtendableOutput}};

let mut tuplehash = TupleHash128::new(b"custom");
let tuple = vec![b"first", b"second"];
tuplehash.update_tuple(&tuple);
let mut output = [0u8; 32];
tuplehash.finalize(&mut output);

ParallelHash

use lib_q_hash::{ParallelHash128, digest::{Update, ExtendableOutput}};

let mut parallelhash = ParallelHash128::new(b"custom", 8192);
parallelhash.update(b"large data");
let mut output = [0u8; 32];
parallelhash.finalize(&mut output);

State Serialization

use lib_q_hash::{Kmac128, digest::SerializableState};

let mut kmac = Kmac128::new(b"key", b"custom");
kmac.update(b"partial data");
let serialized = kmac.serialize();

let mut kmac2 = Kmac128::deserialize(&serialized).unwrap();
kmac2.update(b"more data");

Features

  • default - Enables alloc and OID support
  • alloc - Heap allocation for dynamic output sizes
  • oid - Object Identifier support for ASN.1
  • zeroize - Secure memory wiping
  • parallelhash - Rayon-based parallel processing
  • asm - ARMv8 assembly optimizations

Workspace

lib-q-sha3, lib-q-keccak, and lib-q-k12 supply the Keccak/SHA-3 family implementations this crate integrates (see also lib-q-keccak-digest). ML-DSA and lattice crates consume the same XOF stack via those dependencies. Index: repository README.

License

Apache-2.0