curve: Use constant-time compressed edwards equality testing (#684)

This commit is contained in:
Aaron Feickert 2025-07-07 16:02:51 -05:00 committed by GitHub
parent d54b196d18
commit 9e4ec01fa2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -170,7 +170,8 @@ use alloc::vec::Vec;
///
/// The first 255 bits of a `CompressedEdwardsY` represent the
/// \\(y\\)-coordinate. The high bit of the 32nd byte gives the sign of \\(x\\).
#[derive(Copy, Clone, Eq, PartialEq, Hash)]
#[allow(clippy::derived_hash_with_manual_eq)]
#[derive(Copy, Clone, Hash)]
pub struct CompressedEdwardsY(pub [u8; 32]);
impl ConstantTimeEq for CompressedEdwardsY {
@ -179,6 +180,13 @@ impl ConstantTimeEq for CompressedEdwardsY {
}
}
impl Eq for CompressedEdwardsY {}
impl PartialEq for CompressedEdwardsY {
fn eq(&self, other: &Self) -> bool {
self.ct_eq(other).into()
}
}
impl Debug for CompressedEdwardsY {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
write!(f, "CompressedEdwardsY: {:?}", self.as_bytes())