Top Description Inners Fields Constructors Methods
org.bouncycastle.math.ec.rfc8032

public abstract Class Ed25519

extends Object
Class Inheritance
Imports
java.security.SecureRandom, org.bouncycastle.crypto.Digest, org.bouncycastle.crypto.digests.SHA512Digest, org.bouncycastle.math.ec.rfc7748.X25519, .X25519Field, org.bouncycastle.math.raw.Interleave, .Nat256

A low-level implementation of the Ed25519, Ed25519ctx, and Ed25519ph instantiations of the Edwards-Curve Digital Signature Algorithm specified in RFC 8032.

The implementation strategy is mostly drawn from Mike Hamburg, "Fast and compact elliptic-curve cryptography", notably the "signed multi-comb" algorithm (for scalar multiplication by a fixed point), the "half Niels coordinates" (for precomputed points), and the "extensible coordinates" (for accumulators). Standard extended coordinates are used during precomputations, needing only a single extra point addition formula.

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
private static class
private static class
private static class
private static class
private static class
private static class
private static class
public static class

Field Summary

Modifier and TypeField and Description
private static final int[]
private static final int[]
private static final int[]
private static final int[]
private static final int[]
private static final int[]
private static final int[]
private static final int
private static final byte[]
private static final int[]
private static final int[]
private static final int[]
P

private static final int
private static Ed25519.PointPrecomp[]
private static int[]
private static Ed25519.PointPrecomp[]
private static final int
private static final Object
private static final int
private static final int
private static final int
private static final int
private static final int
public static final int
public static final int
private static final int
private static final int
public static final int
public static final int
private static final int
private static final int

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static byte[]
calculateS(byte[] r, byte[] k, byte[] s)

private static boolean
checkContextVar(byte[] ctx, byte phflag)

private static int
private static int
private static boolean
private static boolean
private static boolean
checkPointVar(byte[] p)

private static byte[]
copy(byte[] buf, int off, int len)

private static Digest
public static Digest
private static boolean
decodePointVar(byte[] p, boolean negate, Ed25519.PointAffine r)

private static void
dom2(Digest d, byte phflag, byte[] ctx)

private static void
encodePoint(Ed25519.PointAffine p, byte[] r, int rOff)

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

private static int
encodeResult(Ed25519.PointAccum p, byte[] r, int rOff)

private static Ed25519.PublicPoint
public static void
generatePrivateKey(SecureRandom random, byte[] k)

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

public static Ed25519.PublicPoint
generatePublicKey(byte[] sk, int skOff)

private static int
getWindow4(int[] x, int n)

private static void
groupCombBits(int[] n)

private static void
implSign(Digest d, byte[] h, byte[] s, byte[] pk, int pkOff, byte[] ctx, byte phflag, byte[] m, int mOff, int mLen, byte[] sig, int sigOff)

private static void
implSign(byte[] sk, int skOff, byte[] ctx, byte phflag, byte[] m, int mOff, int mLen, byte[] sig, int sigOff)

private static void
implSign(byte[] sk, int skOff, byte[] pk, int pkOff, byte[] ctx, byte phflag, byte[] m, int mOff, int mLen, byte[] sig, int sigOff)

private static boolean
implVerify(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, byte phflag, byte[] m, int mOff, int mLen)

private static boolean
implVerify(byte[] sig, int sigOff, Ed25519.PublicPoint publicPoint, byte[] ctx, byte phflag, byte[] m, int mOff, int mLen)

private static void
private static void
private static boolean
private static void
private static void
private static void
private static void
private static void
private static void
private static void
private static void
private static void
private static void
pointLookup(int block, int index, Ed25519.PointPrecomp p)

private static void
pointLookupZ(int[] x, int n, int[] table, Ed25519.PointPrecompZ r)

private static void
pointPrecompute(Ed25519.PointAffine p, Ed25519.PointExtended[] points, int pointsOff, int pointsLen, Ed25519.PointTemp t)

private static int[]
private static void
private static void
public static void
private static void
pruneScalar(byte[] n, int nOff, byte[] r)

private static void
private static void
private static void
scalarMultBaseEncoded(byte[] k, byte[] r, int rOff)

public static void
scalarMultBaseYZ(X25519.Friend friend, byte[] k, int kOff, int[] y, int[] z)

Note

Only for use by X25519

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

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

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

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

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

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

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

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

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

public static Ed25519.PublicPoint
validatePublicKeyFullExport(byte[] pk, int pkOff)

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

public static Ed25519.PublicPoint
validatePublicKeyPartialExport(byte[] pk, int pkOff)

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

public static boolean
verify(byte[] sig, int sigOff, Ed25519.PublicPoint publicPoint, byte[] m, int mOff, int mLen)

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

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

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

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

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

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

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait