Expand description
§Rivide: Post-Quantum Cryptography Rust Crate
Official high-performance, zero-allocation, idiomatic Rust bindings for the Rivide Post-Quantum Cryptography (PQC) C99 library. Implements official NIST FIPS 203 (ML-KEM) and NIST FIPS 204 (ML-DSA) standards with automated RAII memory zeroization.
§Key Modules
kem: Key Encapsulation Mechanisms (ML-KEM-768 and ML-KEM-1024).dsa: Digital Signature Algorithms (ML-DSA-65 and ML-DSA-87).crypto: Symmetric cryptography primitives (SHA-3, SHAKE, AES-GCM AEAD).utils: Memory cleansing, entropy generation, constant-time comparisons, and SIMD CPU queries.
§Quick Start
§ML-KEM-768 Key Encapsulation (FIPS 203)
use rivide::kem::MlKem768;
// 1. Alice generates ML-KEM-768 keypair
let alice = MlKem768::keypair().expect("KeyGen failed");
// 2. Bob encapsulates shared secret using Alice's public key
let bob = MlKem768::encapsulate(&alice.public_key).expect("Encaps failed");
// 3. Alice decapsulates shared secret
let shared_secret = MlKem768::decapsulate(&bob.ciphertext, &alice.secret_key)
.expect("Decaps failed");
assert_eq!(shared_secret, bob.shared_secret);§ML-DSA-65 Digital Signatures (FIPS 204)
use rivide::dsa::MlDsa65;
// 1. Generate signing keypair
let signer = MlDsa65::keypair().expect("KeyGen failed");
// 2. Sign arbitrary message payload
let message = b"Quantum-Safe Signed Transaction Payload";
let signature = MlDsa65::sign(message, &signer.secret_key).expect("Sign failed");
// 3. Verify signature authenticity
let is_valid = MlDsa65::verify(&signature, message, &signer.public_key);
assert!(is_valid);Re-exports§
pub use crypto::AesGcm;pub use crypto::AesGcmResult;pub use crypto::Sha3;pub use dsa::MlDsa65;pub use dsa::MlDsa65KeyPair;pub use dsa::MlDsa65PublicKey;pub use dsa::MlDsa65SecretKey;pub use dsa::MlDsa65Signature;pub use dsa::MlDsa87;pub use dsa::MlDsa87KeyPair;pub use dsa::MlDsa87PublicKey;pub use dsa::MlDsa87SecretKey;pub use dsa::MlDsa87Signature;pub use error::RivideError;pub use kem::MlKem1024;pub use kem::MlKem1024EncapsResult;pub use kem::MlKem1024KeyPair;pub use kem::MlKem1024PublicKey;pub use kem::MlKem1024SecretKey;pub use kem::MlKem768;pub use kem::MlKem768EncapsResult;pub use kem::MlKem768KeyPair;pub use kem::MlKem768PublicKey;pub use kem::MlKem768SecretKey;pub use utils::cleanse;pub use utils::ct_memcmp;pub use utils::get_cpu_features;pub use utils::randombytes;pub use utils::randombytes_into;pub use utils::version;pub use utils::CpuFeatures;
Modules§
- crypto
- Symmetric cryptographic primitives (SHA-3, SHAKE, AES-GCM AEAD).
- dsa
- Module-Lattice-Based Digital Signature Algorithm (ML-DSA, NIST FIPS 204).
- error
- Strongly typed error definitions for the Rivide Rust crate.
- kem
- Module-Lattice-Based Key Encapsulation Mechanism (ML-KEM, NIST FIPS 203).
- sys
- Raw low-level
extern "C"FFI bindings to the Rivide C99 cryptographic library. - utils
- Cryptographic utilities, secure memory zeroization, and CPU feature detection.
Functions§
- init
- Initializes the underlying Rivide C library subsystem.