Skip to main content

Crate rivide

Crate rivide 

Source
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.