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);
}
}
}