From 3655dc723f91d7123fff0147beedcc001e7e73de Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Thu, 30 Jan 2025 00:13:55 -0500 Subject: [PATCH] Use clearer identity check in equality --- crypto/evrf/embedwards25519/src/point.rs | 3 ++- crypto/evrf/secq256k1/src/point.rs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/crypto/evrf/embedwards25519/src/point.rs b/crypto/evrf/embedwards25519/src/point.rs index e5a0ba51..19f95c6a 100644 --- a/crypto/evrf/embedwards25519/src/point.rs +++ b/crypto/evrf/embedwards25519/src/point.rs @@ -46,7 +46,8 @@ impl ConstantTimeEq for Point { let y1 = self.y * other.z; let y2 = other.y * self.z; - (self.x.is_zero() & other.x.is_zero()) | (x1.ct_eq(&x2) & y1.ct_eq(&y2)) + // Both identity or equivalent over their denominators + (self.z.is_zero() & other.z.is_zero()) | (x1.ct_eq(&x2) & y1.ct_eq(&y2)) } } diff --git a/crypto/evrf/secq256k1/src/point.rs b/crypto/evrf/secq256k1/src/point.rs index b7e51037..9b590cdf 100644 --- a/crypto/evrf/secq256k1/src/point.rs +++ b/crypto/evrf/secq256k1/src/point.rs @@ -40,7 +40,8 @@ impl ConstantTimeEq for Point { let y1 = self.y * other.z; let y2 = other.y * self.z; - (self.x.is_zero() & other.x.is_zero()) | (x1.ct_eq(&x2) & y1.ct_eq(&y2)) + // Identity or equivalent + (self.z.is_zero() & other.z.is_zero()) | (x1.ct_eq(&x2) & y1.ct_eq(&y2)) } }