Class Ed448
- Namespace
- Org.BouncyCastle.Math.EC.Rfc8032
- Assembly
- BouncyCastle.Cryptography.dll
A low-level implementation of the Ed448 and Ed448ph instantiations of the Edwards-Curve Digital Signature Algorithm specified in RFC 8032.
public static class Ed448
- Inheritance
-
Ed448
- Inherited Members
Remarks
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.
Fields
PrehashSize
public static readonly int PrehashSize
Field Value
PublicKeySize
public static readonly int PublicKeySize
Field Value
SecretKeySize
public static readonly int SecretKeySize
Field Value
SignatureSize
public static readonly int SignatureSize
Field Value
Methods
CreatePrehash()
public static IXof CreatePrehash()
Returns
EncodePublicPoint(PublicPoint, byte[], int)
public static void EncodePublicPoint(Ed448.PublicPoint publicPoint, byte[] pk, int pkOff)
Parameters
publicPointEd448.PublicPointpkbyte[]pkOffint
EncodePublicPoint(PublicPoint, Span<byte>)
public static void EncodePublicPoint(Ed448.PublicPoint publicPoint, Span<byte> pk)
Parameters
publicPointEd448.PublicPointpkSpan<byte>
GeneratePrivateKey(SecureRandom, byte[])
public static void GeneratePrivateKey(SecureRandom random, byte[] k)
Parameters
randomSecureRandomkbyte[]
GeneratePrivateKey(SecureRandom, Span<byte>)
public static void GeneratePrivateKey(SecureRandom random, Span<byte> k)
Parameters
randomSecureRandomkSpan<byte>
GeneratePublicKey(byte[], int)
public static Ed448.PublicPoint GeneratePublicKey(byte[] sk, int skOff)
Parameters
Returns
GeneratePublicKey(byte[], int, byte[], int)
public static void GeneratePublicKey(byte[] sk, int skOff, byte[] pk, int pkOff)
Parameters
GeneratePublicKey(ReadOnlySpan<byte>)
public static Ed448.PublicPoint GeneratePublicKey(ReadOnlySpan<byte> sk)
Parameters
skReadOnlySpan<byte>
Returns
GeneratePublicKey(ReadOnlySpan<byte>, Span<byte>)
public static void GeneratePublicKey(ReadOnlySpan<byte> sk, Span<byte> pk)
Parameters
skReadOnlySpan<byte>pkSpan<byte>
Precompute()
public static void Precompute()
Sign(byte[], int, byte[], byte[], int, int, byte[], int)
public static void Sign(byte[] sk, int skOff, byte[] ctx, byte[] m, int mOff, int mLen, byte[] sig, int sigOff)
Parameters
Sign(byte[], int, byte[], int, byte[], byte[], int, int, byte[], int)
public static void Sign(byte[] sk, int skOff, byte[] pk, int pkOff, byte[] ctx, byte[] m, int mOff, int mLen, byte[] sig, int sigOff)
Parameters
Sign(ReadOnlySpan<byte>, byte[], ReadOnlySpan<byte>, Span<byte>)
public static void Sign(ReadOnlySpan<byte> sk, byte[] ctx, ReadOnlySpan<byte> m, Span<byte> sig)
Parameters
skReadOnlySpan<byte>ctxbyte[]mReadOnlySpan<byte>sigSpan<byte>
Sign(ReadOnlySpan<byte>, ReadOnlySpan<byte>, byte[], ReadOnlySpan<byte>, Span<byte>)
public static void Sign(ReadOnlySpan<byte> sk, ReadOnlySpan<byte> pk, byte[] ctx, ReadOnlySpan<byte> m, Span<byte> sig)
Parameters
skReadOnlySpan<byte>pkReadOnlySpan<byte>ctxbyte[]mReadOnlySpan<byte>sigSpan<byte>
SignPrehash(byte[], int, byte[], IXof, byte[], int)
public static void SignPrehash(byte[] sk, int skOff, byte[] ctx, IXof ph, byte[] sig, int sigOff)
Parameters
SignPrehash(byte[], int, byte[], byte[], int, byte[], int)
public static void SignPrehash(byte[] sk, int skOff, byte[] ctx, byte[] ph, int phOff, byte[] sig, int sigOff)
Parameters
SignPrehash(byte[], int, byte[], int, byte[], IXof, byte[], int)
public static void SignPrehash(byte[] sk, int skOff, byte[] pk, int pkOff, byte[] ctx, IXof ph, byte[] sig, int sigOff)
Parameters
SignPrehash(byte[], int, byte[], int, byte[], byte[], int, byte[], int)
public static void SignPrehash(byte[] sk, int skOff, byte[] pk, int pkOff, byte[] ctx, byte[] ph, int phOff, byte[] sig, int sigOff)
Parameters
SignPrehash(ReadOnlySpan<byte>, byte[], IDigest, Span<byte>)
public static void SignPrehash(ReadOnlySpan<byte> sk, byte[] ctx, IDigest ph, Span<byte> sig)
Parameters
SignPrehash(ReadOnlySpan<byte>, byte[], ReadOnlySpan<byte>, Span<byte>)
public static void SignPrehash(ReadOnlySpan<byte> sk, byte[] ctx, ReadOnlySpan<byte> ph, Span<byte> sig)
Parameters
skReadOnlySpan<byte>ctxbyte[]phReadOnlySpan<byte>sigSpan<byte>
SignPrehash(ReadOnlySpan<byte>, ReadOnlySpan<byte>, byte[], IDigest, Span<byte>)
public static void SignPrehash(ReadOnlySpan<byte> sk, ReadOnlySpan<byte> pk, byte[] ctx, IDigest ph, Span<byte> sig)
Parameters
skReadOnlySpan<byte>pkReadOnlySpan<byte>ctxbyte[]phIDigestsigSpan<byte>
SignPrehash(ReadOnlySpan<byte>, ReadOnlySpan<byte>, byte[], ReadOnlySpan<byte>, Span<byte>)
public static void SignPrehash(ReadOnlySpan<byte> sk, ReadOnlySpan<byte> pk, byte[] ctx, ReadOnlySpan<byte> ph, Span<byte> sig)
Parameters
skReadOnlySpan<byte>pkReadOnlySpan<byte>ctxbyte[]phReadOnlySpan<byte>sigSpan<byte>
ValidatePublicKeyFull(byte[], int)
public static bool ValidatePublicKeyFull(byte[] pk, int pkOff)
Parameters
Returns
ValidatePublicKeyFull(ReadOnlySpan<byte>)
public static bool ValidatePublicKeyFull(ReadOnlySpan<byte> pk)
Parameters
pkReadOnlySpan<byte>
Returns
ValidatePublicKeyFullExport(byte[], int)
public static Ed448.PublicPoint ValidatePublicKeyFullExport(byte[] pk, int pkOff)
Parameters
Returns
ValidatePublicKeyFullExport(ReadOnlySpan<byte>)
public static Ed448.PublicPoint ValidatePublicKeyFullExport(ReadOnlySpan<byte> pk)
Parameters
pkReadOnlySpan<byte>
Returns
ValidatePublicKeyPartial(byte[], int)
public static bool ValidatePublicKeyPartial(byte[] pk, int pkOff)
Parameters
Returns
ValidatePublicKeyPartial(ReadOnlySpan<byte>)
public static bool ValidatePublicKeyPartial(ReadOnlySpan<byte> pk)
Parameters
pkReadOnlySpan<byte>
Returns
ValidatePublicKeyPartialExport(byte[], int)
public static Ed448.PublicPoint ValidatePublicKeyPartialExport(byte[] pk, int pkOff)
Parameters
Returns
ValidatePublicKeyPartialExport(ReadOnlySpan<byte>)
public static Ed448.PublicPoint ValidatePublicKeyPartialExport(ReadOnlySpan<byte> pk)
Parameters
pkReadOnlySpan<byte>
Returns
Verify(byte[], int, PublicPoint, byte[], byte[], int, int)
public static bool Verify(byte[] sig, int sigOff, Ed448.PublicPoint publicPoint, byte[] ctx, byte[] m, int mOff, int mLen)
Parameters
Returns
Verify(byte[], int, byte[], int, byte[], byte[], int, int)
public static bool Verify(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, byte[] m, int mOff, int mLen)
Parameters
Returns
Verify(ReadOnlySpan<byte>, PublicPoint, byte[], ReadOnlySpan<byte>)
public static bool Verify(ReadOnlySpan<byte> sig, Ed448.PublicPoint publicPoint, byte[] ctx, ReadOnlySpan<byte> m)
Parameters
sigReadOnlySpan<byte>publicPointEd448.PublicPointctxbyte[]mReadOnlySpan<byte>
Returns
Verify(ReadOnlySpan<byte>, ReadOnlySpan<byte>, byte[], ReadOnlySpan<byte>)
public static bool Verify(ReadOnlySpan<byte> sig, ReadOnlySpan<byte> pk, byte[] ctx, ReadOnlySpan<byte> m)
Parameters
sigReadOnlySpan<byte>pkReadOnlySpan<byte>ctxbyte[]mReadOnlySpan<byte>
Returns
VerifyPrehash(byte[], int, PublicPoint, byte[], IXof)
public static bool VerifyPrehash(byte[] sig, int sigOff, Ed448.PublicPoint publicPoint, byte[] ctx, IXof ph)
Parameters
Returns
VerifyPrehash(byte[], int, PublicPoint, byte[], byte[], int)
public static bool VerifyPrehash(byte[] sig, int sigOff, Ed448.PublicPoint publicPoint, byte[] ctx, byte[] ph, int phOff)
Parameters
Returns
VerifyPrehash(byte[], int, byte[], int, byte[], IXof)
public static bool VerifyPrehash(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, IXof ph)
Parameters
Returns
VerifyPrehash(byte[], int, byte[], int, byte[], byte[], int)
public static bool VerifyPrehash(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, byte[] ph, int phOff)
Parameters
Returns
VerifyPrehash(ReadOnlySpan<byte>, PublicPoint, byte[], IXof)
public static bool VerifyPrehash(ReadOnlySpan<byte> sig, Ed448.PublicPoint publicPoint, byte[] ctx, IXof ph)
Parameters
sigReadOnlySpan<byte>publicPointEd448.PublicPointctxbyte[]phIXof
Returns
VerifyPrehash(ReadOnlySpan<byte>, PublicPoint, byte[], ReadOnlySpan<byte>)
public static bool VerifyPrehash(ReadOnlySpan<byte> sig, Ed448.PublicPoint publicPoint, byte[] ctx, ReadOnlySpan<byte> ph)
Parameters
sigReadOnlySpan<byte>publicPointEd448.PublicPointctxbyte[]phReadOnlySpan<byte>
Returns
VerifyPrehash(ReadOnlySpan<byte>, ReadOnlySpan<byte>, byte[], IXof)
public static bool VerifyPrehash(ReadOnlySpan<byte> sig, ReadOnlySpan<byte> pk, byte[] ctx, IXof ph)
Parameters
sigReadOnlySpan<byte>pkReadOnlySpan<byte>ctxbyte[]phIXof
Returns
VerifyPrehash(ReadOnlySpan<byte>, ReadOnlySpan<byte>, byte[], ReadOnlySpan<byte>)
public static bool VerifyPrehash(ReadOnlySpan<byte> sig, ReadOnlySpan<byte> pk, byte[] ctx, ReadOnlySpan<byte> ph)
Parameters
sigReadOnlySpan<byte>pkReadOnlySpan<byte>ctxbyte[]phReadOnlySpan<byte>