Skip to main content

slh_dsa/
lib.rs

1//! Pure Rust implementation of SLH-DSA (FIPS 205) / SPHINCS+.
2//!
3//! A stateless hash-based digital signature scheme standardized as FIPS 205.
4//! Security relies only on the security of hash functions — the most
5//! conservative post-quantum assumption.
6//!
7//! Supports all 12 FIPS 205 parameter sets (6 SHAKE + 6 SHA-2):
8//! - SLH-DSA-128s / SLH-DSA-128f (NIST Level 1)
9//! - SLH-DSA-192s / SLH-DSA-192f (NIST Level 3)
10//! - SLH-DSA-256s / SLH-DSA-256f (NIST Level 5)
11//!
12//! # Quick Start
13//!
14//! ```rust
15//! use slh_dsa::safe_api::SlhDsaKeyPair;
16//! use slh_dsa::params::SLH_DSA_SHAKE_128F;
17//!
18//! let kp = SlhDsaKeyPair::generate(SLH_DSA_SHAKE_128F).unwrap();
19//! let sig = kp.sign(b"Hello, post-quantum!").unwrap();
20//! assert!(slh_dsa::safe_api::SlhDsaSignature::verify(
21//!     sig.to_bytes(), kp.public_key(), b"Hello, post-quantum!", SLH_DSA_SHAKE_128F,
22//! ));
23//! ```
24
25#![cfg_attr(not(feature = "std"), no_std)]
26#![forbid(unsafe_code)]
27
28extern crate alloc;
29
30pub mod address;
31pub mod fors;
32pub mod hash;
33pub mod merkle;
34pub mod params;
35pub mod prelude;
36pub mod safe_api;
37pub mod sign;
38pub mod thash;
39mod utils;
40pub mod wots;
41
42pub use params::SlhDsaMode;
43pub use safe_api::{SlhDsaError, SlhDsaKeyPair, SlhDsaSignature};
44pub use sign::{keygen_seed, sign, verify};