group: Return subtle::Choice from CurveAffine::is_identity

This commit is contained in:
Jack Grigg 2020-05-15 17:33:34 +12:00
parent b94d567076
commit 0941dddc13
7 changed files with 19 additions and 19 deletions

View File

@ -54,7 +54,7 @@ impl<E: Engine> Proof<E> {
.into_affine()
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))
.and_then(|e| {
if e.is_identity() {
if e.is_identity().into() {
Err(io::Error::new(
io::ErrorKind::InvalidData,
"point at infinity",
@ -69,7 +69,7 @@ impl<E: Engine> Proof<E> {
.into_affine()
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))
.and_then(|e| {
if e.is_identity() {
if e.is_identity().into() {
Err(io::Error::new(
io::ErrorKind::InvalidData,
"point at infinity",
@ -84,7 +84,7 @@ impl<E: Engine> Proof<E> {
.into_affine()
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))
.and_then(|e| {
if e.is_identity() {
if e.is_identity().into() {
Err(io::Error::new(
io::ErrorKind::InvalidData,
"point at infinity",
@ -198,7 +198,7 @@ impl<E: Engine> VerifyingKey<E> {
.into_affine()
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))
.and_then(|e| {
if e.is_identity() {
if e.is_identity().into() {
Err(io::Error::new(
io::ErrorKind::InvalidData,
"point at infinity",
@ -303,7 +303,7 @@ impl<E: Engine> Parameters<E> {
}
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))
.and_then(|e| {
if e.is_identity() {
if e.is_identity().into() {
Err(io::Error::new(
io::ErrorKind::InvalidData,
"point at infinity",
@ -325,7 +325,7 @@ impl<E: Engine> Parameters<E> {
}
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))
.and_then(|e| {
if e.is_identity() {
if e.is_identity().into() {
Err(io::Error::new(
io::ErrorKind::InvalidData,
"point at infinity",

View File

@ -295,7 +295,7 @@ where
);
let b_g2_aux = multiexp(&worker, b_g2_aux_source, b_aux_density, aux_assignment);
if vk.delta_g1.is_identity() || vk.delta_g2.is_identity() {
if bool::from(vk.delta_g1.is_identity() | vk.delta_g2.is_identity()) {
// If this element is zero, someone is trying to perform a
// subversion-CRS attack.
return Err(SynthesisError::UnexpectedIdentity);

View File

@ -471,8 +471,8 @@ impl CurveAffine for Fr {
<Fr as Field>::one()
}
fn is_identity(&self) -> bool {
<Fr as Field>::is_zero(self)
fn is_identity(&self) -> Choice {
Choice::from(if <Fr as Field>::is_zero(self) { 1 } else { 0 })
}
fn mul<S: Into<<Self::Scalar as PrimeField>::Repr>>(&self, other: S) -> Self::Projective {

View File

@ -55,7 +55,7 @@ impl<G: CurveAffine> Source<G> for (Arc<Vec<G>>, usize) {
.into());
}
if self.0[self.1].is_identity() {
if self.0[self.1].is_identity().into() {
return Err(SynthesisError::UnexpectedIdentity);
}

View File

@ -146,7 +146,7 @@ pub trait CurveAffine:
/// Determines if this point represents the point at infinity; the
/// additive identity.
fn is_identity(&self) -> bool;
fn is_identity(&self) -> Choice;
/// Performs scalar multiplication of this element with mixed addition.
fn mul<S: Into<<Self::Scalar as PrimeField>::Repr>>(&self, other: S) -> Self::Projective;

View File

@ -177,8 +177,8 @@ macro_rules! curve_impl {
Self::get_generator()
}
fn is_identity(&self) -> bool {
self.infinity
fn is_identity(&self) -> Choice {
Choice::from(if self.infinity { 1 } else { 0 })
}
fn mul<S: Into<<Self::Scalar as PrimeField>::Repr>>(&self, by: S) -> $projective {
@ -893,7 +893,7 @@ pub mod g1 {
fn from_affine(affine: G1Affine) -> Self {
let mut res = Self::empty();
if affine.is_identity() {
if affine.is_identity().into() {
// Set the second-most significant bit to indicate this point
// is at infinity.
res.0[0] |= 1 << 6;
@ -990,7 +990,7 @@ pub mod g1 {
fn from_affine(affine: G1Affine) -> Self {
let mut res = Self::empty();
if affine.is_identity() {
if affine.is_identity().into() {
// Set the second-most significant bit to indicate this point
// is at infinity.
res.0[0] |= 1 << 6;
@ -1070,7 +1070,7 @@ pub mod g1 {
impl G1Prepared {
pub fn is_identity(&self) -> bool {
self.0.is_identity()
self.0.is_identity().into()
}
pub fn from_affine(p: G1Affine) -> Self {
@ -1515,7 +1515,7 @@ pub mod g2 {
fn from_affine(affine: G2Affine) -> Self {
let mut res = Self::empty();
if affine.is_identity() {
if affine.is_identity().into() {
// Set the second-most significant bit to indicate this point
// is at infinity.
res.0[0] |= 1 << 6;
@ -1629,7 +1629,7 @@ pub mod g2 {
fn from_affine(affine: G2Affine) -> Self {
let mut res = Self::empty();
if affine.is_identity() {
if affine.is_identity().into() {
// Set the second-most significant bit to indicate this point
// is at infinity.
res.0[0] |= 1 << 6;

View File

@ -173,7 +173,7 @@ impl G2Prepared {
}
pub fn from_affine(q: G2Affine) -> Self {
if q.is_identity() {
if q.is_identity().into() {
return G2Prepared {
coeffs: vec![],
infinity: true,