Update for scalar mul change

This commit is contained in:
Pratyush Mishra
2022-08-01 15:07:43 -07:00
parent e75546313a
commit 23d97681af
3 changed files with 7 additions and 9 deletions

View File

@@ -5,7 +5,7 @@ use ark_ec::{
short_weierstrass::{Affine, SWCurveConfig},
AffineCurve, ProjectiveCurve,
};
use ark_ff::{biginteger::BigInteger256, Field, MontFp, Zero};
use ark_ff::{Field, MontFp, Zero};
use ark_std::ops::Neg;
use crate::*;
@@ -50,17 +50,15 @@ impl SWCurveConfig for Parameters {
//
// Check that endomorphism_p(P) == -[X^2]P
let x = BigInteger256::new([crate::Parameters::X[0], 0, 0, 0]);
// An early-out optimization described in Section 6.
// If uP == P but P != point of infinity, then the point is not in the right
// subgroup.
let x_times_p = p.mul(x);
let x_times_p = p.mul_bigint(crate::Parameters::X);
if x_times_p.eq(p) && !p.infinity {
return false;
}
let minus_x_squared_times_p = x_times_p.mul(x).neg();
let minus_x_squared_times_p = x_times_p.mul_bigint(crate::Parameters::X).neg();
let endomorphism_p = endomorphism(p);
minus_x_squared_times_p.eq(&endomorphism_p)
}

View File

@@ -5,7 +5,7 @@ use ark_ec::{
short_weierstrass::{Affine, SWCurveConfig},
AffineCurve,
};
use ark_ff::{BigInt, Field, MontFp, Zero};
use ark_ff::{Field, MontFp, Zero};
use crate::*;
@@ -60,7 +60,7 @@ impl SWCurveConfig for Parameters {
//
// Checks that [p]P = [X]P
let mut x_times_point = point.mul(BigInt::new([crate::Parameters::X[0], 0, 0, 0]));
let mut x_times_point = point.mul_bigint(crate::Parameters::X);
if crate::Parameters::X_IS_NEGATIVE {
x_times_point = -x_times_point;
}

View File

@@ -39,7 +39,7 @@ fn test_g1_subgroup_non_membership_via_endomorphism() {
let greatest = rng.gen();
if let Some(p) = G1Affine::get_point_from_x(x, greatest) {
if !p.into_projective().mul(Fr::characteristic()).is_zero() {
if !p.into_projective().mul_bigint(Fr::characteristic()).is_zero() {
assert!(!p.is_in_correct_subgroup_assuming_on_curve());
return;
}
@@ -62,7 +62,7 @@ fn test_g2_subgroup_non_membership_via_endomorphism() {
let greatest = rng.gen();
if let Some(p) = G2Affine::get_point_from_x(x, greatest) {
if !p.into_projective().mul(Fr::characteristic()).is_zero() {
if !p.into_projective().mul_bigint(Fr::characteristic()).is_zero() {
assert!(!p.is_in_correct_subgroup_assuming_on_curve());
return;
}