using Org.BouncyCastle.Asn1; using System; using System.Collections; using Org.BouncyCastle.Math; namespace Org.BouncyCastle.Asn1.Pkcs { public class DHParameter : Asn1Encodable { internal DerInteger p, g, l; public DHParameter( BigInteger p, BigInteger g, int l) { this.p = new DerInteger(p); this.g = new DerInteger(g); if (l != 0) { this.l = new DerInteger(l); } } public DHParameter( Asn1Sequence seq) { IEnumerator e = seq.GetEnumerator(); e.MoveNext(); p = (DerInteger)e.Current; e.MoveNext(); g = (DerInteger)e.Current; if (e.MoveNext()) { l = (DerInteger) e.Current; } } public BigInteger P { get { return p.PositiveValue; } } public BigInteger G { get { return g.PositiveValue; } } public BigInteger L { get { return l == null ? null : l.PositiveValue; } } public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(p, g); if (this.l != null) { v.Add(l); } return new DerSequence(v); } } }