zkhash/fields/
utils.rs

1use ark_ff::PrimeField;
2use hex::FromHex;
3// use rand::Rng; // unused import
4
5pub fn from_hex<F: PrimeField>(s: &str) -> F {
6    let a = Vec::from_hex(&s[2..]).expect("Invalid Hex String");
7    F::from_be_bytes_mod_order(&a as &[u8])
8}
9
10pub fn random_scalar<F: PrimeField>() -> F {
11    let mut rng = ark_std::rand::thread_rng();
12    F::rand(&mut rng)
13}
14
15pub fn random_scalar_without_0<F: PrimeField>() -> F {
16    loop {
17        let element = random_scalar::<F>();
18        if !element.is_zero() {
19            return element;
20        }
21    }
22}