mirror of
https://github.com/hanzoai/crypto.git
synced 2026-09-30 21:37:30 +00:00
e16365c5bdbe0aaadbade5602437fdf3393bb0ba
This repo shipped with no LICENSE, which makes it legally ambiguous the moment it is public: absent an explicit grant, default copyright reserves all rights, so a reader may look but not use — the opposite of what publishing it is for. Original Hanzo work (single initial commit, no upstream lineage), so the terms are ours to set, and the fleet already has one answer: the HIP-0137 dual offer carried verbatim from the canonical files rather than retyped. Co-authored-by: Hanzo Dev <[email protected]>
Hanzo Crypto
Modern post-quantum cryptography library with NIST-standardized algorithms, optimized for ARM compatibility including Apple Silicon (M1/M2/M3).
Features
Post-Quantum Cryptography
- ML-KEM (FIPS 203): Module Lattice Key Encapsulation (formerly Kyber)
- Pure Rust implementation - no AVX2 assembly issues!
- ML-KEM-512, ML-KEM-768, ML-KEM-1024
- ML-DSA (FIPS 204): Module Lattice Digital Signatures (formerly Dilithium)
- Pure Rust implementation
- ML-DSA-44, ML-DSA-65, ML-DSA-87
- HQC: Hamming Quasi-Cyclic code-based cryptography
- HQC-128, HQC-192, HQC-256
Symmetric Cryptography
- BLAKE3: Fast cryptographic hashing
- ChaCha20-Poly1305: Authenticated encryption
- AES-256-GCM: Authenticated encryption with associated data
- Argon2: Password hashing
Additional Algorithms
- X25519: Elliptic curve key exchange (transitional)
- Ed25519: Elliptic curve signatures (transitional)
- SHA-3: SHA3-256, SHA3-384, SHA3-512
Installation
[dependencies]
hanzo-crypto = "0.1.0"
Quick Start
use hanzo_crypto::prelude::*;
use hanzo_crypto::{ml_kem, ml_dsa, blake3};
fn main() -> Result<()> {
// Post-quantum key encapsulation
use ml_kem::{MlKem768, Encapsulate, Decapsulate};
let mut rng = rand::thread_rng();
let (dk, ek) = MlKem768::generate(&mut rng);
let (ct, ss_sender) = ek.encapsulate(&mut rng)?;
let ss_receiver = dk.decapsulate(&ct)?;
assert_eq!(ss_sender, ss_receiver);
// Post-quantum signatures
use ml_dsa::{Ml_Dsa65, SigningKey};
let signing_key = SigningKey::generate(&mut rng)?;
let message = b"Hello, quantum world!";
let signature = signing_key.try_sign_with_rng(&mut rng, message)?;
signing_key.verification_key().verify(message, &signature)?;
// BLAKE3 hashing
let hash = blake3::hash(b"Fast hashing with BLAKE3");
println!("Hash: {}", hash.to_hex());
Ok(())
}
ARM Compatibility
This library uses pure Rust implementations of ML-KEM and ML-DSA, ensuring full compatibility with ARM processors including Apple Silicon. No AVX2 assembly issues!
Testing
# Run all tests
cargo test
# Run examples
cargo run --example basic
# Run benchmarks
cargo bench
Security Levels
- Level 1: 128-bit classical security
- Level 3: 192-bit classical security (recommended)
- Level 5: 256-bit classical security
License
MIT OR Apache-2.0
Languages
Rust
100%