ed448_goldilocks/edwards.rs
1/// This module contains the code for the Goldilocks curve.
2/// The goldilocks curve is the (untwisted) Edwards curve with affine equation x^2 + y^2 = 1 - 39081x^2y^2
3/// Scalar Multiplication for this curve is pre-dominantly delegated to the Twisted Edwards variation using a (doubling) isogeny
4/// Passing the point back to the Goldilocks curve using the dual-isogeny clears the cofactor.
5/// The small remainder of the Scalar Multiplication is computed on the untwisted curve.
6/// See <https://www.shiftleft.org/papers/isogeny/isogeny.pdf> for details
7///
8/// This isogeny strategy does not clear the cofactor on the Goldilocks curve unless the Scalar is a multiple of 4.
9/// or the point is known to be in the q-torsion subgroup.
10/// Hence, one will need to multiply by the cofactor to ensure it is cleared when using the Goldilocks curve.
11/// If this is a problem, one can use a different isogeny strategy (Decaf)
12pub(crate) mod affine;
13pub(crate) mod extended;
14mod scalar;
15pub use affine::{AffinePoint, CompressedEdwardsY};
16pub use extended::EdwardsPoint;
17pub use scalar::{EdwardsScalar, EdwardsScalarBytes, WideEdwardsScalarBytes};