Skip to main content

arcana/hash/
mod.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 Cédric Mesnil <cslashm@pm.me>
3
4//! Hash functions for arcana.
5//!
6//! Every algorithm now lives in the shared [`krypteia-tessera`](tessera)
7//! crate; this module is a thin façade that re-exports the types and,
8//! via the blanket impls in [`crate`], exposes them through arcana's own
9//! [`Hasher`](crate::Hasher) / [`Xof`](crate::Xof) traits. The
10//! per-algorithm submodules (`sha256`, `sha3`, …) are kept as path
11//! aliases so existing `crate::hash::sha256::Sha256` imports keep
12//! working unchanged.
13
14pub use tessera::{
15    Blake2b, Blake2s, Blake3, CShake128, CShake256, Ripemd160, Sha1, Sha3_224, Sha3_256, Sha3_384, Sha3_512, Sha224,
16    Sha256, Sha384, Sha512, Sha512_224, Sha512_256, Shake128, Shake256,
17};
18
19/// SHA-1 (FIPS 180-4), re-exported from `krypteia-tessera`.
20pub mod sha1 {
21    pub use tessera::Sha1;
22}
23
24/// SHA-224 (FIPS 180-4), re-exported from `krypteia-tessera`.
25pub mod sha224 {
26    pub use tessera::Sha224;
27}
28
29/// SHA-256 (FIPS 180-4), re-exported from `krypteia-tessera`.
30pub mod sha256 {
31    pub use tessera::Sha256;
32}
33
34/// SHA-384 (FIPS 180-4), re-exported from `krypteia-tessera`.
35pub mod sha384 {
36    pub use tessera::Sha384;
37}
38
39/// SHA-512 (FIPS 180-4), re-exported from `krypteia-tessera`.
40pub mod sha512 {
41    pub use tessera::Sha512;
42}
43
44/// SHA-512/224 and SHA-512/256 (FIPS 180-4), re-exported from `krypteia-tessera`.
45pub mod sha512_trunc {
46    pub use tessera::{Sha512_224, Sha512_256};
47}
48
49/// RIPEMD-160 (ISO/IEC 10118-3), re-exported from `krypteia-tessera`.
50pub mod ripemd160 {
51    pub use tessera::Ripemd160;
52}
53
54/// BLAKE2b / BLAKE2s (RFC 7693), re-exported from `krypteia-tessera`.
55pub mod blake2 {
56    pub use tessera::{Blake2b, Blake2s};
57}
58
59/// SHA-3, SHAKE and cSHAKE (FIPS 202 / SP 800-185), re-exported from
60/// `krypteia-tessera`. `KeccakState` is the raw sponge used by HMAC-style
61/// constructions in [`crate::mac`].
62pub mod sha3 {
63    pub use tessera::sha3::KeccakState;
64    pub use tessera::{CShake128, CShake256, Sha3_224, Sha3_256, Sha3_384, Sha3_512, Shake128, Shake256};
65}
66
67/// BLAKE3 (hash / keyed_hash / derive_key + XOF), re-exported from
68/// `krypteia-tessera`.
69pub mod blake3 {
70    pub use tessera::{Blake3, blake3_hash, derive_key, keyed_hash};
71}
72
73/// SP 800-185 keyed/derived functions (KMAC, TupleHash, ParallelHash and
74/// their XOF variants), re-exported from `krypteia-tessera`.
75pub mod sp800_185 {
76    pub use tessera::sp800_185::*;
77}