ed448_goldilocks/curve/edwards/mod.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/Ristretto)
12pub(crate) mod affine;
13pub(crate) mod extended;
14pub use extended::{CompressedEdwardsY, ExtendedPoint};
15
16// XXX: Instead of ExtendedPoint in the Goldilocks Curve, should we call it EdwardsPoint like Dalek.
17// This is favourable as we only allow the Goldilocks Curve to be a part of the public API.