Skip to main content

hanzo_pqc/
lib.rs

1//! NIST Post-Quantum Cryptography implementation for Hanzo Node
2//! 
3//! Implements FIPS 203 (ML-KEM), FIPS 204 (ML-DSA), and FIPS 205 (SLH-DSA)
4//! with support for hybrid modes and privacy tiers.
5
6pub mod kem;
7pub mod signature;
8pub mod kdf;
9pub mod hybrid;
10pub mod privacy_tiers;
11pub mod cc_tier;
12pub mod ai_rewards;
13pub mod wire_protocol;
14pub mod attestation;
15pub mod config;
16pub mod errors;
17
18pub use kem::{Kem, KemAlgorithm, KemKeyPair, EncapsulationKey, DecapsulationKey};
19pub use signature::{Signature, SignatureAlgorithm, SigningKey, VerifyingKey};
20pub use kdf::{Kdf, KdfAlgorithm};
21pub use hybrid::{HybridKem, HybridMode};
22pub use privacy_tiers::{PrivacyTier, CapabilityMatrix, RuntimeRequirements};
23pub use cc_tier::{CCTier, TierAttestation, TierRequirement, TrustScoreInput, TrustScoreResult};
24pub use ai_rewards::{AIProvider, AIRewardPool, ModelingLevel, ParticipationRewardResult, TaskRewardResult};
25pub use config::PqcConfig;
26pub use errors::{PqcError, Result};
27
28// Re-export common types
29pub use oqs;
30
31/// Initialize the PQC subsystem with FIPS-compliant RNG
32pub fn init() -> Result<()> {
33    // Ensure we're using a FIPS-compliant RNG
34    #[cfg(feature = "fips-mode")]
35    {
36        verify_fips_rng()?;
37    }
38    
39    Ok(())
40}
41
42#[cfg(feature = "fips-mode")]
43fn verify_fips_rng() -> Result<()> {
44    // Verify SP 800-90A compliant RNG
45    use getrandom::getrandom;
46    let mut buf = [0u8; 32];
47    getrandom(&mut buf).map_err(|e| PqcError::RngError(e.to_string()))?;
48    Ok(())
49}