public RevocationValues(
            IEnumerable			crlVals,
            IEnumerable			ocspVals,
            OtherRevVals		otherRevVals)
        {
            if (crlVals != null)
            {
                if (!CollectionUtilities.CheckElementsAreOfType(crlVals, typeof(CertificateList)))
                    throw new ArgumentException("Must contain only 'CertificateList' objects", "crlVals");

                this.crlVals = new DerSequence(
                    Asn1EncodableVector.FromEnumerable(crlVals));
            }

            if (ocspVals != null)
            {
                if (!CollectionUtilities.CheckElementsAreOfType(ocspVals, typeof(BasicOcspResponse)))
                    throw new ArgumentException("Must contain only 'BasicOcspResponse' objects", "ocspVals");

                this.ocspVals = new DerSequence(
                    Asn1EncodableVector.FromEnumerable(ocspVals));
            }

            this.otherRevVals = otherRevVals;
        }
        public RevocationValues(
            CertificateList[]	crlVals,
            BasicOcspResponse[]	ocspVals,
            OtherRevVals		otherRevVals)
        {
            if (crlVals != null)
            {
                this.crlVals = new DerSequence(crlVals);
            }

            if (ocspVals != null)
            {
                this.ocspVals = new DerSequence(ocspVals);
            }

            this.otherRevVals = otherRevVals;
        }
        private RevocationValues(
            Asn1Sequence seq)
        {
            if (seq == null)
                throw new ArgumentNullException("seq");
            if (seq.Count > 3)
                throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");

            foreach (Asn1TaggedObject taggedObj in seq)
            {
                Asn1Object asn1Obj = taggedObj.GetObject();
                switch (taggedObj.TagNo)
                {
                    case 0:
                        Asn1Sequence crlValsSeq = (Asn1Sequence) asn1Obj;
                        foreach (Asn1Encodable ae in crlValsSeq)
                        {
                            CertificateList.GetInstance(ae.ToAsn1Object());
                        }
                        this.crlVals = crlValsSeq;
                        break;
                    case 1:
                        Asn1Sequence ocspValsSeq = (Asn1Sequence) asn1Obj;
                        foreach (Asn1Encodable ae in ocspValsSeq)
                        {
                            BasicOcspResponse.GetInstance(ae.ToAsn1Object());
                        }
                        this.ocspVals = ocspValsSeq;
                        break;
                    case 2:
                        this.otherRevVals = OtherRevVals.GetInstance(asn1Obj);
                        break;
                    default:
                        throw new ArgumentException("Illegal tag in RevocationValues", "seq");
                }
            }
        }