mirror of
https://github.com/arnaucube/ark-curves-cherry-picked.git
synced 2026-01-09 07:21:30 +01:00
Prepared G2 consistency test (#70)
* add the g2 check * fmt * fix * fix * fix * fix * changelog * test macos for curve tests * use macos only for mnt6-753 * fix * fix name consistency * adjust the order * mnt4 753 * fix Co-authored-by: Pratyush Mishra <pratyushmishra@berkeley.edu> Co-authored-by: onewayfunc <onewayfunc@gmail.com>
This commit is contained in:
36
curve-constraint-tests/src/lib.rs
Executable file → Normal file
36
curve-constraint-tests/src/lib.rs
Executable file → Normal file
@@ -514,7 +514,7 @@ pub mod curves {
|
||||
pub mod pairing {
|
||||
use ark_ec::{
|
||||
pairing::{Pairing, PairingOutput},
|
||||
CurveGroup,
|
||||
AffineRepr, CurveGroup,
|
||||
};
|
||||
use ark_ff::{BitIteratorLE, Field, PrimeField};
|
||||
use ark_r1cs_std::prelude::*;
|
||||
@@ -612,4 +612,38 @@ pub mod pairing {
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn g2_prepare_consistency_test<E: Pairing, P: PairingVar<E>>() -> Result<(), SynthesisError>
|
||||
{
|
||||
let test_g2_elem = E::G2Affine::generator();
|
||||
let test_g2_prepared = E::G2Prepared::from(test_g2_elem.clone());
|
||||
|
||||
let modes = [
|
||||
AllocationMode::Input,
|
||||
AllocationMode::Witness,
|
||||
AllocationMode::Constant,
|
||||
];
|
||||
for &mode in &modes {
|
||||
let cs = ConstraintSystem::new_ref();
|
||||
|
||||
let test_g2_gadget =
|
||||
P::G2Var::new_witness(cs.clone(), || Ok(test_g2_elem.clone())).unwrap();
|
||||
|
||||
let prepared_test_g2_gadget = P::prepare_g2(&test_g2_gadget).unwrap();
|
||||
let allocated_test_g2_gadget =
|
||||
P::G2PreparedVar::new_variable(cs.clone(), || Ok(test_g2_prepared.clone()), mode)
|
||||
.unwrap();
|
||||
|
||||
let prepared_test_g2_gadget_bytes = prepared_test_g2_gadget.to_bytes().unwrap();
|
||||
let allocated_test_g2_gadget_bytes = allocated_test_g2_gadget.to_bytes().unwrap();
|
||||
|
||||
prepared_test_g2_gadget_bytes
|
||||
.enforce_equal(&allocated_test_g2_gadget_bytes)
|
||||
.unwrap();
|
||||
|
||||
assert!(cs.is_satisfied().unwrap(), "cs is not satisfied");
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user