mldsa-native-rs 0.0.1-alpha.6

FFI bindings and optional wrapper for the mldsa-native ML-DSA implementation
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use generic_array::{ArrayLength, GenericArray};
use rand::rand_core::{CryptoRng, Rng};

type ChosenRng = rand::rngs::StdRng;

// Compile-time check: fails to type-check if bounds aren’t met.
const _: () = {
    fn assert_impls<R: Rng + CryptoRng>() {}
    let _ = assert_impls::<ChosenRng>;
};

/// Returns a [`GenericArray`] filled with `N` random bytes.
pub(crate) fn random_generic_byte_array<N: ArrayLength>() -> GenericArray<u8, N> {
    let mut array: GenericArray<u8, N> = GenericArray::default();
    let mut rng: ChosenRng = rand::make_rng();
    rng.fill_bytes(&mut array);
    array
}