curve: Impl Default ConstantTImeEq and ConditionallySelectable for SubgroupPoint (#672)

This commit is contained in:
Aaron Feickert 2024-07-30 01:05:52 -05:00 committed by GitHub
parent 79ab6c29bd
commit 83a57e591f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1335,7 +1335,7 @@ impl GroupEncoding for EdwardsPoint {
/// A `SubgroupPoint` represents a point on the Edwards form of Curve25519, that is
/// guaranteed to be in the prime-order subgroup.
#[cfg(feature = "group")]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub struct SubgroupPoint(EdwardsPoint);
#[cfg(feature = "group")]
@ -1510,6 +1510,20 @@ impl MulAssign<&Scalar> for SubgroupPoint {
#[cfg(feature = "group")]
define_mul_assign_variants!(LHS = SubgroupPoint, RHS = Scalar);
#[cfg(feature = "group")]
impl ConstantTimeEq for SubgroupPoint {
fn ct_eq(&self, other: &SubgroupPoint) -> Choice {
self.0.ct_eq(&other.0)
}
}
#[cfg(feature = "group")]
impl ConditionallySelectable for SubgroupPoint {
fn conditional_select(a: &SubgroupPoint, b: &SubgroupPoint, choice: Choice) -> SubgroupPoint {
SubgroupPoint(EdwardsPoint::conditional_select(&a.0, &b.0, choice))
}
}
#[cfg(feature = "group")]
impl group::Group for SubgroupPoint {
type Scalar = Scalar;