Class MontgomeryCurve<E,F extends dk.jonaslindstrom.ruffini.common.abstractions.Field<E>>

java.lang.Object
dk.jonaslindstrom.ruffini.elliptic.structures.MontgomeryCurve<E,F>
All Implemented Interfaces:
dk.jonaslindstrom.ruffini.common.abstractions.AdditiveGroup<AffinePoint<E>>, dk.jonaslindstrom.ruffini.common.abstractions.CommutativeMonoid<AffinePoint<E>>, dk.jonaslindstrom.ruffini.common.abstractions.Set<AffinePoint<E>>
Direct Known Subclasses:
Curve25519

public class MontgomeryCurve<E,F extends dk.jonaslindstrom.ruffini.common.abstractions.Field<E>> extends Object implements dk.jonaslindstrom.ruffini.common.abstractions.AdditiveGroup<AffinePoint<E>>
Curve on Montgomery form By2 = x3 + Ax2 + x. The field should have characteristics not equal to 2, A ≠ ∓ 2 and B ≠ 0.
  • Field Details

    • A

      protected final E A
    • B

      protected final E B
    • field

      protected final F extends dk.jonaslindstrom.ruffini.common.abstractions.Field<E> field
  • Constructor Details

    • MontgomeryCurve

      public MontgomeryCurve(F field, E A, E B)
  • Method Details

    • getField

      public F getField()
    • discriminant

      public E discriminant()
    • jInvariant

      public E jInvariant()
    • toString

      public String toString(AffinePoint<E> a)
      Specified by:
      toString in interface dk.jonaslindstrom.ruffini.common.abstractions.Set<E>
    • equals

      public boolean equals(AffinePoint<E> a, AffinePoint<E> b)
      Specified by:
      equals in interface dk.jonaslindstrom.ruffini.common.abstractions.Set<E>
    • add

      public AffinePoint<E> add(AffinePoint<E> p, AffinePoint<E> q)
      Specified by:
      add in interface dk.jonaslindstrom.ruffini.common.abstractions.CommutativeMonoid<E>
    • negate

      public AffinePoint<E> negate(AffinePoint<E> p)
      Specified by:
      negate in interface dk.jonaslindstrom.ruffini.common.abstractions.AdditiveGroup<E>
    • getZero

      public AffinePoint<E> getZero()
      Specified by:
      getZero in interface dk.jonaslindstrom.ruffini.common.abstractions.CommutativeMonoid<E>
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getA

      public E getA()
    • getB

      public E getB()
    • getCorrespondingWeierstrassCurve

      public dk.jonaslindstrom.ruffini.common.util.Pair<ShortWeierstrassCurveAffine<E,F>,java.util.function.UnaryOperator<AffinePoint<E>>> getCorrespondingWeierstrassCurve()