<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0" />

Org.BouncyCastle.Math.EC.Rfc8032.Ed448

public static class Ed448
A low-level implementation of the Ed448 and Ed448ph instantiations of the Edwards-Curve Digital Signature Algorithm specified in RFC 8032.
namespace Org.BouncyCastle.Math.EC.Rfc8032 { public static class Ed448 { public enum Algorithm { Ed448, Ed448ph } public sealed class PublicPoint { } public static readonly int PrehashSize; public static readonly int PublicKeySize; public static readonly int SecretKeySize; public static readonly int SignatureSize; public static IXof CreatePrehash(); public static void EncodePublicPoint(PublicPoint publicPoint, byte[] pk, int pkOff); public static void GeneratePrivateKey(SecureRandom random, byte[] k); public static void GeneratePublicKey(byte[] sk, int skOff, byte[] pk, int pkOff); public static PublicPoint GeneratePublicKey(byte[] sk, int skOff); public static void Precompute(); 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, IXof ph, byte[] sig, int sigOff); public static void SignPrehash(byte[] sk, int skOff, byte[] pk, int pkOff, byte[] ctx, IXof ph, byte[] sig, int sigOff); public static bool ValidatePublicKeyFull(byte[] pk, int pkOff); public static PublicPoint ValidatePublicKeyFullExport(byte[] pk, int pkOff); public static bool ValidatePublicKeyPartial(byte[] pk, int pkOff); public static PublicPoint ValidatePublicKeyPartialExport(byte[] pk, int pkOff); public static bool Verify(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, byte[] m, int mOff, int mLen); public static bool Verify(byte[] sig, int sigOff, PublicPoint publicPoint, byte[] ctx, byte[] m, int mOff, int mLen); public static bool VerifyPrehash(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, byte[] ph, int phOff); public static bool VerifyPrehash(byte[] sig, int sigOff, PublicPoint publicPoint, byte[] ctx, byte[] ph, int phOff); public static bool VerifyPrehash(byte[] sig, int sigOff, byte[] pk, int pkOff, byte[] ctx, IXof ph); public static bool VerifyPrehash(byte[] sig, int sigOff, PublicPoint publicPoint, byte[] ctx, IXof ph); } }