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

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)); } public static RevocationValues GetInstance(Asn1TaggedObject obj, bool explicitly) { return new RevocationValues(Asn1Sequence.GetInstance(obj, explicitly)); } public static RevocationValues GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RevocationValues(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private RevocationValues(Asn1Sequence seq) { int count = seq.Count; if (count < 0 || count > 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); int sequencePosition = 0; m_crlVals = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, true, Asn1Sequence.GetTagged); m_crlVals?.MapElements(CertificateList.GetInstance); m_ocspVals = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 1, true, Asn1Sequence.GetTagged); m_ocspVals?.MapElements(BasicOcspResponse.GetInstance); m_otherRevVals = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 2, true, OtherRevVals.GetTagged); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public RevocationValues(CertificateList[] crlVals, BasicOcspResponse[] ocspVals, OtherRevVals otherRevVals) { m_crlVals = DerSequence.FromElementsOptional(crlVals); m_ocspVals = DerSequence.FromElementsOptional(ocspVals); m_otherRevVals = otherRevVals; } public RevocationValues(IEnumerable<CertificateList> crlVals, IEnumerable<BasicOcspResponse> ocspVals, OtherRevVals otherRevVals) { if (crlVals != null) m_crlVals = DerSequence.FromVector(Asn1EncodableVector.FromEnumerable(crlVals)); if (ocspVals != null) m_ocspVals = DerSequence.FromVector(Asn1EncodableVector.FromEnumerable(ocspVals)); m_otherRevVals = otherRevVals; } public RevocationValues(IReadOnlyCollection<CertificateList> crlVals, IReadOnlyCollection<BasicOcspResponse> ocspVals, OtherRevVals otherRevVals) { if (crlVals != null) m_crlVals = DerSequence.FromCollection(crlVals); if (ocspVals != null) m_ocspVals = DerSequence.FromCollection(ocspVals); m_otherRevVals = otherRevVals; } public CertificateList[] GetCrlVals() { return m_crlVals?.MapElements(CertificateList.GetInstance); } public BasicOcspResponse[] GetOcspVals() { return m_ocspVals?.MapElements(BasicOcspResponse.GetInstance); } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3); asn1EncodableVector.AddOptionalTagged(true, 0, m_crlVals); asn1EncodableVector.AddOptionalTagged(true, 1, m_ocspVals); asn1EncodableVector.AddOptionalTagged(true, 2, m_otherRevVals); return DerSequence.FromVector(asn1EncodableVector); } } }