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}