Class Ed448

java.lang.Object
org.bouncycastle.math.ec.rfc8032.Ed448

public abstract class Ed448 extends Object
A low-level implementation of the Ed448 and Ed448ph instantiations of the Edwards-Curve Digital Signature Algorithm specified in RFC 8032.

The implementation uses the "signed mult-comb" algorithm (for scalar multiplication by a fixed point) from Mike Hamburg, "Fast and compact elliptic-curve cryptography". Standard projective coordinates are used for most point arithmetic.

  • Field Details

  • Constructor Details

    • Ed448

      public Ed448()
  • Method Details

    • createPrehash

      public static Xof createPrehash()
    • encodePublicPoint

      public static void encodePublicPoint(Ed448.PublicPoint publicPoint, byte[] pk, int pkOff)
    • generatePrivateKey

      public static void generatePrivateKey(SecureRandom random, byte[] k)
    • generatePublicKey

      public static void generatePublicKey(byte[] sk, int skOff, byte[] pk, int pkOff)
    • generatePublicKey

      public static Ed448.PublicPoint generatePublicKey(byte[] sk, int skOff)
    • precompute

      public static void precompute()
    • scalarMultBaseXY

      public static void scalarMultBaseXY(X448.Friend friend, byte[] k, int kOff, int[] x, int[] y)
      NOTE: Only for use by X448
    • sign

      public static void sign(byte[] sk, int skOff, byte[] ctx, byte[] m, int mOff, int mLen, byte[] sig, int sigOff)
    • sign

      public static void sign(byte[] sk, int skOff, byte[] pk, int pkOff, byte[] ctx, byte[] m, int mOff, int mLen, byte[] sig, int sigOff)
    • signPrehash

      public static void signPrehash(byte[] sk, int skOff, byte[] ctx, byte[] ph, int phOff, byte[] sig, int sigOff)
    • signPrehash

      public static void signPrehash(byte[] sk, int skOff, byte[] pk, int pkOff, byte[] ctx, byte[] ph, int phOff, byte[] sig, int sigOff)
    • signPrehash

      public static void signPrehash(byte[] sk, int skOff, byte[] ctx, Xof ph, byte[] sig, int sigOff)
    • signPrehash

      public static void signPrehash(byte[] sk, int skOff, byte[] pk, int pkOff, byte[] ctx, Xof ph, byte[] sig, int sigOff)
    • validatePublicKeyFull

      public static boolean validatePublicKeyFull(byte[] pk, int pkOff)
    • validatePublicKeyFullExport

      public static Ed448.PublicPoint validatePublicKeyFullExport(byte[] pk, int pkOff)
    • validatePublicKeyPartial

      public static boolean validatePublicKeyPartial(byte[] pk, int pkOff)
    • validatePublicKeyPartialExport

      public static Ed448.PublicPoint validatePublicKeyPartialExport(byte[] pk, int pkOff)
    • verify

      public static boolean verify(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, byte[] m, int mOff, int mLen)
    • verify

      public static boolean verify(byte[] sig, int sigOff, Ed448.PublicPoint publicPoint, byte[] ctx, byte[] m, int mOff, int mLen)
    • verifyPrehash

      public static boolean verifyPrehash(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, byte[] ph, int phOff)
    • verifyPrehash

      public static boolean verifyPrehash(byte[] sig, int sigOff, Ed448.PublicPoint publicPoint, byte[] ctx, byte[] ph, int phOff)
    • verifyPrehash

      public static boolean verifyPrehash(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, Xof ph)
    • verifyPrehash

      public static boolean verifyPrehash(byte[] sig, int sigOff, Ed448.PublicPoint publicPoint, byte[] ctx, Xof ph)