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

RevocationValues

using Org.BouncyCastle.Asn1.Ocsp; using Org.BouncyCastle.Asn1.X509; using System; using System.Collections.Generic; namespace Org.BouncyCastle.Asn1.Esf { public class RevocationValues : Asn1Encodable { private readonly Asn1Sequence m_crlVals; private readonly Asn1Sequence m_ocspVals; private readonly OtherRevVals m_otherRevVals; public OtherRevVals OtherRevVals => m_otherRevVals; public static RevocationValues GetInstance(object obj) { if (obj == null) return null; RevocationValues revocationValues = obj as RevocationValues; if (revocationValues != null) return revocationValues; return new RevocationValues(Asn1Sequence.GetInstance(obj)); } private RevocationValues(Asn1Sequence seq) { if (seq == null) throw new ArgumentNullException("seq"); int num; if (seq.Count > 3) { num = seq.Count; throw new ArgumentException("Bad sequence size: " + num.ToString(), "seq"); } foreach (Asn1Encodable item in seq) { Asn1TaggedObject instance = Asn1TaggedObject.GetInstance(item, 128); num = instance.TagNo; switch (num) { case 0: { Asn1Sequence asn1Sequence2 = (Asn1Sequence)instance.GetExplicitBaseObject(); asn1Sequence2.MapElements(CertificateList.GetInstance); m_crlVals = asn1Sequence2; break; } case 1: { Asn1Sequence asn1Sequence = (Asn1Sequence)instance.GetExplicitBaseObject(); asn1Sequence.MapElements(BasicOcspResponse.GetInstance); m_ocspVals = asn1Sequence; break; } case 2: m_otherRevVals = OtherRevVals.GetInstance(instance.GetExplicitBaseObject()); break; default: throw new ArgumentException("Illegal tag in RevocationValues", "seq"); } } } public RevocationValues(CertificateList[] crlVals, BasicOcspResponse[] ocspVals, OtherRevVals otherRevVals) { if (crlVals != null) m_crlVals = new DerSequence(crlVals); if (ocspVals != null) m_ocspVals = new DerSequence(ocspVals); m_otherRevVals = otherRevVals; } public RevocationValues(IEnumerable<CertificateList> crlVals, IEnumerable<BasicOcspResponse> ocspVals, OtherRevVals otherRevVals) { if (crlVals != null) m_crlVals = new DerSequence(Asn1EncodableVector.FromEnumerable(crlVals)); if (ocspVals != null) m_ocspVals = new DerSequence(Asn1EncodableVector.FromEnumerable(ocspVals)); m_otherRevVals = otherRevVals; } public CertificateList[] GetCrlVals() { return m_crlVals.MapElements((Asn1Encodable element) => CertificateList.GetInstance(element.ToAsn1Object())); } public BasicOcspResponse[] GetOcspVals() { return m_ocspVals.MapElements((Asn1Encodable element) => BasicOcspResponse.GetInstance(element.ToAsn1Object())); } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3); asn1EncodableVector.AddOptionalTagged(true, 0, m_crlVals); asn1EncodableVector.AddOptionalTagged(true, 1, m_ocspVals); if (m_otherRevVals != null) asn1EncodableVector.Add(new DerTaggedObject(true, 2, m_otherRevVals.ToAsn1Object())); return new DerSequence(asn1EncodableVector); } } }