diff --git a/crypto/dalek-ff-group/src/field.rs b/crypto/dalek-ff-group/src/field.rs index 6f771ac3..f167c5df 100644 --- a/crypto/dalek-ff-group/src/field.rs +++ b/crypto/dalek-ff-group/src/field.rs @@ -117,9 +117,8 @@ impl Field for FieldElement { } fn invert(&self) -> CtOption { - const NEG_2: FieldElement = - FieldElement(ResidueType::new(&MODULUS.saturating_sub(&U256::from_u8(2)))); - CtOption::new(self.pow(NEG_2), !self.is_zero()) + let res = self.0.invert(); + CtOption::new(Self(res.0), res.1.into()) } // RFC-8032 sqrt8k5 diff --git a/crypto/helioselene/src/backend.rs b/crypto/helioselene/src/backend.rs index 62d7574d..9ae2547e 100644 --- a/crypto/helioselene/src/backend.rs +++ b/crypto/helioselene/src/backend.rs @@ -178,16 +178,15 @@ macro_rules! field { } fn square(&self) -> Self { - *self * self + Self(self.0.square()) } fn double(&self) -> Self { *self + self } fn invert(&self) -> CtOption { - const NEG_2: $FieldName = - Self($ResidueType::sub(&$ResidueType::ZERO, &$ResidueType::new(&U256::from_u8(2)))); - CtOption::new(self.pow(NEG_2), !self.is_zero()) + let res = self.0.invert(); + CtOption::new(Self(res.0), res.1.into()) } fn sqrt(&self) -> CtOption {