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

Org.BouncyCastle.Pqc.Crypto.Crystals.Dilithium.DilithiumEngine

namespace Org.BouncyCastle.Pqc.Crypto.Crystals.Dilithium { internal class DilithiumEngine { public const int N = 256; public const int Q = 8380417; public const int QInv = 58728449; public const int D = 13; public const int RootOfUnity = 1753; public const int SeedBytes = 32; public const int CrhBytes = 64; public const int RndBytes = 32; public const int TrBytes = 64; public const int PolyT1PackedBytes = 320; public const int PolyT0PackedBytes = 416; public int Mode { get; } public int K { get; } public int L { get; } public int Eta { get; } public int Tau { get; } public int Beta { get; } public int Gamma1 { get; } public int Gamma2 { get; } public int Omega { get; } public int CTilde { get; } public int PolyVecHPackedBytes { get; } public int PolyZPackedBytes { get; } public int PolyW1PackedBytes { get; } public int PolyEtaPackedBytes { get; } public int CryptoPublicKeyBytes { get; } public int CryptoSecretKeyBytes { get; } public int CryptoBytes { get; } public int PolyUniformGamma1NBytes { get; } public Symmetric Symmetric { get; } public DilithiumEngine(int mode, SecureRandom random, bool usingAes); public void GenerateKeyPair(out byte[] rho, out byte[] key, out byte[] tr, out byte[] s1_, out byte[] s2_, out byte[] t0_, out byte[] encT1); public void SignSignature(byte[] sig, int siglen, byte[] msg, int msglen, byte[] rho, byte[] key, byte[] tr, byte[] t0Enc, byte[] s1Enc, byte[] s2Enc); public void Sign(byte[] sig, int siglen, byte[] msg, int mlen, byte[] rho, byte[] key, byte[] tr, byte[] t0, byte[] s1, byte[] s2); public bool SignVerify(byte[] sig, int siglen, byte[] msg, int msglen, byte[] rho, byte[] encT1); public bool SignOpen(byte[] msg, byte[] sig, int siglen, byte[] rho, byte[] t1); } }