pub trait RandomMod: Sized + Zero {
    // Required method
    fn random_mod(
        rng: impl CryptoRng + RngCore,
        modulus: &NonZero<Self>
    ) -> Self;
}
Expand description

Modular random number generation support.

Required Methods§

source

fn random_mod(rng: impl CryptoRng + RngCore, modulus: &NonZero<Self>) -> Self

Generate a cryptographically secure random number which is less than a given modulus.

This function uses rejection sampling, a method which produces an unbiased distribution of in-range values provided the underlying CryptoRng is unbiased, but runs in variable-time.

The variable-time nature of the algorithm should not pose a security issue so long as the underlying random number generator is truly a CryptoRng, where previous outputs are unrelated to subsequent outputs and do not reveal information about the RNG’s internal state.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl RandomMod for Limb

source§

impl<const LIMBS: usize> RandomMod for UInt<LIMBS>