From 2a22e88bab3b5a03cd037718f5d517a125baeb7a Mon Sep 17 00:00:00 2001 From: daxpedda Date: Wed, 9 Jul 2025 11:16:13 +0200 Subject: [PATCH] Move Edwards and Montgomary to their own modules --- ed448-goldilocks/src/curve.rs | 7 ------- ed448-goldilocks/src/curve/twedwards/extended.rs | 2 +- ed448-goldilocks/src/{curve => }/edwards.rs | 2 ++ ed448-goldilocks/src/{curve => }/edwards/affine.rs | 1 - ed448-goldilocks/src/{curve => }/edwards/extended.rs | 2 -- ed448-goldilocks/src/{curve => edwards}/scalar.rs | 0 ed448-goldilocks/src/field.rs | 2 +- ed448-goldilocks/src/lib.rs | 11 +++++++---- ed448-goldilocks/src/{curve => }/montgomery.rs | 2 +- ed448-goldilocks/src/sign/signing_key.rs | 2 +- ed448-goldilocks/src/sign/verifying_key.rs | 2 +- 11 files changed, 14 insertions(+), 19 deletions(-) rename ed448-goldilocks/src/{curve => }/edwards.rs (92%) rename ed448-goldilocks/src/{curve => }/edwards/affine.rs (98%) rename ed448-goldilocks/src/{curve => }/edwards/extended.rs (99%) rename ed448-goldilocks/src/{curve => edwards}/scalar.rs (100%) rename ed448-goldilocks/src/{curve => }/montgomery.rs (99%) diff --git a/ed448-goldilocks/src/curve.rs b/ed448-goldilocks/src/curve.rs index 8a4530574..372b2fca8 100644 --- a/ed448-goldilocks/src/curve.rs +++ b/ed448-goldilocks/src/curve.rs @@ -1,9 +1,2 @@ -pub mod edwards; -pub mod montgomery; -mod scalar; pub(crate) mod scalar_mul; pub(crate) mod twedwards; - -pub use edwards::{AffinePoint, CompressedEdwardsY, EdwardsPoint}; -pub use montgomery::{MontgomeryPoint, ProjectiveMontgomeryPoint}; -pub use scalar::{EdwardsScalar, EdwardsScalarBytes, WideEdwardsScalarBytes}; diff --git a/ed448-goldilocks/src/curve/twedwards/extended.rs b/ed448-goldilocks/src/curve/twedwards/extended.rs index 26ac01fa1..3b80966f0 100644 --- a/ed448-goldilocks/src/curve/twedwards/extended.rs +++ b/ed448-goldilocks/src/curve/twedwards/extended.rs @@ -1,9 +1,9 @@ #![allow(non_snake_case)] #![allow(dead_code)] -use crate::curve::edwards::EdwardsPoint as EdwardsExtendedPoint; use crate::curve::twedwards::affine::AffinePoint; use crate::curve::twedwards::extensible::ExtensiblePoint; +use crate::edwards::EdwardsPoint as EdwardsExtendedPoint; use crate::field::FieldElement; use subtle::{Choice, ConditionallySelectable, ConstantTimeEq}; diff --git a/ed448-goldilocks/src/curve/edwards.rs b/ed448-goldilocks/src/edwards.rs similarity index 92% rename from ed448-goldilocks/src/curve/edwards.rs rename to ed448-goldilocks/src/edwards.rs index 8a95a782c..1606fd740 100644 --- a/ed448-goldilocks/src/curve/edwards.rs +++ b/ed448-goldilocks/src/edwards.rs @@ -11,5 +11,7 @@ /// If this is a problem, one can use a different isogeny strategy (Decaf/Ristretto) pub(crate) mod affine; pub(crate) mod extended; +mod scalar; pub use affine::AffinePoint; pub use extended::{CompressedEdwardsY, EdwardsPoint}; +pub use scalar::{EdwardsScalar, EdwardsScalarBytes, WideEdwardsScalarBytes}; diff --git a/ed448-goldilocks/src/curve/edwards/affine.rs b/ed448-goldilocks/src/edwards/affine.rs similarity index 98% rename from ed448-goldilocks/src/curve/edwards/affine.rs rename to ed448-goldilocks/src/edwards/affine.rs index f9f46fedb..68f44931a 100644 --- a/ed448-goldilocks/src/curve/edwards/affine.rs +++ b/ed448-goldilocks/src/edwards/affine.rs @@ -1,4 +1,3 @@ -use crate::curve::edwards::EdwardsPoint; use crate::field::FieldElement; use crate::*; use core::ops::Mul; diff --git a/ed448-goldilocks/src/curve/edwards/extended.rs b/ed448-goldilocks/src/edwards/extended.rs similarity index 99% rename from ed448-goldilocks/src/curve/edwards/extended.rs rename to ed448-goldilocks/src/edwards/extended.rs index 35776aa95..104d35eb7 100644 --- a/ed448-goldilocks/src/curve/edwards/extended.rs +++ b/ed448-goldilocks/src/edwards/extended.rs @@ -4,8 +4,6 @@ use core::iter::Sum; use core::ops::{Add, AddAssign, Mul, MulAssign, Neg, Sub, SubAssign}; use crate::constants::EDWARDS_BASEPOINT_ORDER; -use crate::curve::edwards::affine::AffinePoint; -use crate::curve::montgomery::MontgomeryPoint; // XXX: need to fix this path use crate::curve::scalar_mul::variable_base; use crate::curve::twedwards::extended::ExtendedPoint as TwistedExtendedPoint; use crate::field::FieldElement; diff --git a/ed448-goldilocks/src/curve/scalar.rs b/ed448-goldilocks/src/edwards/scalar.rs similarity index 100% rename from ed448-goldilocks/src/curve/scalar.rs rename to ed448-goldilocks/src/edwards/scalar.rs diff --git a/ed448-goldilocks/src/field.rs b/ed448-goldilocks/src/field.rs index b0e1d42df..76c809640 100644 --- a/ed448-goldilocks/src/field.rs +++ b/ed448-goldilocks/src/field.rs @@ -7,8 +7,8 @@ pub use scalar::{ MODULUS_LIMBS, NZ_ORDER, ORDER, Scalar, ScalarBytes, WIDE_ORDER, WideScalarBytes, }; -use crate::curve::edwards::EdwardsPoint; use crate::curve::twedwards::extended::ExtendedPoint as TwExtendedPoint; +use crate::edwards::EdwardsPoint; use elliptic_curve::bigint::{ U448, const_monty_params, diff --git a/ed448-goldilocks/src/lib.rs b/ed448-goldilocks/src/lib.rs index 64da021e3..ea02e2fbf 100644 --- a/ed448-goldilocks/src/lib.rs +++ b/ed448-goldilocks/src/lib.rs @@ -43,22 +43,25 @@ pub use subtle; pub(crate) mod constants; pub(crate) mod curve; pub(crate) mod decaf; +pub(crate) mod edwards; pub(crate) mod field; +pub(crate) mod montgomery; pub(crate) mod ristretto; #[cfg(feature = "signing")] pub(crate) mod sign; pub(crate) use field::{GOLDILOCKS_BASE_POINT, TWISTED_EDWARDS_BASE_POINT}; -pub use curve::{ - AffinePoint, CompressedEdwardsY, EdwardsPoint, EdwardsScalar, EdwardsScalarBytes, - MontgomeryPoint, ProjectiveMontgomeryPoint, WideEdwardsScalarBytes, -}; pub use decaf::{ AffinePoint as DecafAffinePoint, CompressedDecaf, DecafPoint, DecafScalar, DecafScalarBytes, WideDecafScalarBytes, }; +pub use edwards::{ + AffinePoint, CompressedEdwardsY, EdwardsPoint, EdwardsScalar, EdwardsScalarBytes, + WideEdwardsScalarBytes, +}; pub use field::{MODULUS_LIMBS, ORDER, Scalar, WIDE_ORDER}; +pub use montgomery::{MontgomeryPoint, ProjectiveMontgomeryPoint}; pub use ristretto::{CompressedRistretto, RistrettoPoint}; #[cfg(feature = "signing")] pub use sign::*; diff --git a/ed448-goldilocks/src/curve/montgomery.rs b/ed448-goldilocks/src/montgomery.rs similarity index 99% rename from ed448-goldilocks/src/curve/montgomery.rs rename to ed448-goldilocks/src/montgomery.rs index 5633d47cd..5c4df6c6d 100644 --- a/ed448-goldilocks/src/curve/montgomery.rs +++ b/ed448-goldilocks/src/montgomery.rs @@ -12,7 +12,7 @@ // use crate::constants::A_PLUS_TWO_OVER_FOUR; use crate::EdwardsScalar; -use crate::curve::edwards::extended::EdwardsPoint; +use crate::edwards::extended::EdwardsPoint; use crate::field::FieldElement; use core::fmt; use core::ops::Mul; diff --git a/ed448-goldilocks/src/sign/signing_key.rs b/ed448-goldilocks/src/sign/signing_key.rs index 05f5daa70..b82953f54 100644 --- a/ed448-goldilocks/src/sign/signing_key.rs +++ b/ed448-goldilocks/src/sign/signing_key.rs @@ -14,7 +14,7 @@ use signature::Error; use subtle::{Choice, ConstantTimeEq}; #[cfg(feature = "pkcs8")] -use crate::{PUBLIC_KEY_LENGTH, curve::edwards::extended::PointBytes}; +use crate::{PUBLIC_KEY_LENGTH, edwards::extended::PointBytes}; /// Ed448 secret key as defined in [RFC8032 ยง 5.2.5] /// diff --git a/ed448-goldilocks/src/sign/verifying_key.rs b/ed448-goldilocks/src/sign/verifying_key.rs index e57c596fb..e3a73dafb 100644 --- a/ed448-goldilocks/src/sign/verifying_key.rs +++ b/ed448-goldilocks/src/sign/verifying_key.rs @@ -1,7 +1,7 @@ //! Much of this code is borrowed from Thomas Pornin's [CRRL Project](https://github.com/pornin/crrl/blob/main/src/ed448.rs) //! and adapted to mirror `ed25519-dalek`'s API. -use crate::curve::edwards::extended::PointBytes; +use crate::edwards::extended::PointBytes; use crate::sign::{HASH_HEAD, InnerSignature}; use crate::{ CompressedEdwardsY, Context, EdwardsPoint, EdwardsScalar, PreHash, Signature, SigningError,