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

DilithiumPrivateKeyParameters

using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Pqc.Crypto.Crystals.Dilithium { [Obsolete("Use ML-DSA instead")] public sealed class DilithiumPrivateKeyParameters : DilithiumKeyParameters { internal byte[] m_rho; internal byte[] m_k; internal byte[] m_tr; internal byte[] m_s1; internal byte[] m_s2; internal byte[] m_t0; private byte[] m_t1; public byte[] K => Arrays.Clone(m_k); public byte[] Rho => Arrays.Clone(m_rho); public byte[] S1 => Arrays.Clone(m_s1); public byte[] S2 => Arrays.Clone(m_s2); public byte[] T0 => Arrays.Clone(m_t0); public byte[] T1 => Arrays.Clone(m_t1); public byte[] Tr => Arrays.Clone(m_tr); public DilithiumPrivateKeyParameters(DilithiumParameters parameters, byte[] rho, byte[] K, byte[] tr, byte[] s1, byte[] s2, byte[] t0, byte[] t1) : base(true, parameters) { m_rho = Arrays.Clone(rho); m_k = Arrays.Clone(K); m_tr = Arrays.Clone(tr); m_s1 = Arrays.Clone(s1); m_s2 = Arrays.Clone(s2); m_t0 = Arrays.Clone(t0); m_t1 = Arrays.Clone(t1); } public DilithiumPrivateKeyParameters(DilithiumParameters parameters, byte[] encoding, DilithiumPublicKeyParameters pubKey) : base(true, parameters) { DilithiumEngine engine = parameters.GetEngine(null); int num = 0; m_rho = Arrays.CopyOfRange(encoding, 0, 32); num += 32; m_k = Arrays.CopyOfRange(encoding, num, num + 32); num += 32; m_tr = Arrays.CopyOfRange(encoding, num, num + 64); num += 64; int num2 = engine.L * engine.PolyEtaPackedBytes; m_s1 = Arrays.CopyOfRange(encoding, num, num + num2); num += num2; num2 = engine.K * engine.PolyEtaPackedBytes; m_s2 = Arrays.CopyOfRange(encoding, num, num + num2); num += num2; num2 = engine.K * 416; m_t0 = Arrays.CopyOfRange(encoding, num, num + num2); if (pubKey != null) m_t1 = Arrays.Clone(pubKey.GetT1()); } public byte[] GetEncoded() { return Arrays.ConcatenateAll(m_rho, m_k, m_tr, m_s1, m_s2, m_t0); } public byte[] GetPublicKey() { return DilithiumPublicKeyParameters.GetEncoded(m_rho, m_t1); } public DilithiumPublicKeyParameters GetPublicKeyParameters() { return new DilithiumPublicKeyParameters(base.Parameters, m_rho, m_t1); } } }