private DHDomainParameters(Asn1Sequence seq)
        {
            if (seq.Count < 3 || seq.Count > 5)
            {
                throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
            }

            IEnumerator e = seq.GetEnumerator();

            this.p = DerInteger.GetInstance(GetNext(e));
            this.g = DerInteger.GetInstance(GetNext(e));
            this.q = DerInteger.GetInstance(GetNext(e));

            Asn1Encodable next = GetNext(e);

            if (next != null && next is DerInteger)
            {
                this.j = DerInteger.GetInstance(next);
                next   = GetNext(e);
            }

            if (next != null)
            {
                this.validationParms = DHValidationParms.GetInstance(next.ToAsn1Object());
            }
        }
        public DHDomainParameters(DerInteger p, DerInteger g, DerInteger q, DerInteger j,
                                  DHValidationParms validationParms)
        {
            if (p == null)
            {
                throw new ArgumentNullException("p");
            }
            if (g == null)
            {
                throw new ArgumentNullException("g");
            }
            if (q == null)
            {
                throw new ArgumentNullException("q");
            }

            this.p = p;
            this.g = g;
            this.q = q;
            this.j = j;
            this.validationParms = validationParms;
        }