ark_msm/
utils.rs

1use ark_ec::{AffineCurve, ProjectiveCurve};
2use ark_ff::{PrimeField, UniformRand};
3
4pub fn generate_msm_inputs<A>(
5    size: usize,
6) -> (
7    Vec<<A::Projective as ProjectiveCurve>::Affine>,
8    Vec<<A::ScalarField as PrimeField>::BigInt>,
9)
10where
11    A: AffineCurve,
12{
13    let mut rng = ark_std::test_rng();
14    let scalar_vec = (0..size)
15        .map(|_| A::ScalarField::rand(&mut rng).into_repr())
16        .collect();
17    let point_vec = (0..size)
18        .map(|_| A::Projective::rand(&mut rng))
19        .collect::<Vec<_>>();
20    (
21        <A::Projective as ProjectiveCurve>::batch_normalization_into_affine(&point_vec),
22        scalar_vec,
23    )
24}