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

DHDomainParameters

using System; namespace Org.BouncyCastle.Asn1.X9 { public class DHDomainParameters : Asn1Encodable { private readonly DerInteger m_p; private readonly DerInteger m_g; private readonly DerInteger m_q; private readonly DerInteger m_j; private readonly DHValidationParms m_validationParms; public DerInteger P => m_p; public DerInteger G => m_g; public DerInteger Q => m_q; public DerInteger J => m_j; public DHValidationParms ValidationParms => m_validationParms; public static DHDomainParameters GetInstance(object obj) { if (obj == null) return null; DHDomainParameters dHDomainParameters = obj as DHDomainParameters; if (dHDomainParameters != null) return dHDomainParameters; return new DHDomainParameters(Asn1Sequence.GetInstance(obj)); } public static DHDomainParameters GetInstance(Asn1TaggedObject obj, bool isExplicit) { return new DHDomainParameters(Asn1Sequence.GetInstance(obj, isExplicit)); } public static DHDomainParameters GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new DHDomainParameters(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private DHDomainParameters(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 3 || count > 5) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_p = DerInteger.GetInstance(seq[sequencePosition++]); m_g = DerInteger.GetInstance(seq[sequencePosition++]); m_q = DerInteger.GetInstance(seq[sequencePosition++]); m_j = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DerInteger.GetOptional); m_validationParms = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DHValidationParms.GetOptional); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public DHDomainParameters(DerInteger p, DerInteger g, DerInteger q, DerInteger j, DHValidationParms validationParms) { if (p == null) throw new ArgumentNullException("p"); m_p = p; if (g == null) throw new ArgumentNullException("g"); m_g = g; if (q == null) throw new ArgumentNullException("q"); m_q = q; m_j = j; m_validationParms = validationParms; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(5); asn1EncodableVector.Add(m_p, m_g, m_q); asn1EncodableVector.AddOptional(m_j, m_validationParms); return new DerSequence(asn1EncodableVector); } } }