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

DsaValidationParameters

using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Crypto.Parameters { public class DsaValidationParameters { private readonly byte[] seed; private readonly int counter; private readonly int usageIndex; public virtual int Counter => counter; public virtual int UsageIndex => usageIndex; public DsaValidationParameters(byte[] seed, int counter) : this(seed, counter, -1) { } public DsaValidationParameters(byte[] seed, int counter, int usageIndex) { if (seed == null) throw new ArgumentNullException("seed"); this.seed = (byte[])seed.Clone(); this.counter = counter; this.usageIndex = usageIndex; } public virtual byte[] GetSeed() { return (byte[])seed.Clone(); } public override bool Equals(object obj) { if (obj == this) return true; DsaValidationParameters dsaValidationParameters = obj as DsaValidationParameters; if (dsaValidationParameters == null) return false; return Equals(dsaValidationParameters); } protected virtual bool Equals(DsaValidationParameters other) { if (counter == other.counter) return Arrays.AreEqual(seed, other.seed); return false; } public override int GetHashCode() { return counter.GetHashCode() ^ Arrays.GetHashCode(seed); } } }