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

SigningCertificateV2

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Ess { public class SigningCertificateV2 : Asn1Encodable { private readonly Asn1Sequence m_certs; private readonly Asn1Sequence m_policies; public static SigningCertificateV2 GetInstance(object o) { if (o == null) return null; SigningCertificateV2 signingCertificateV = o as SigningCertificateV2; if (signingCertificateV != null) return signingCertificateV; return new SigningCertificateV2(Asn1Sequence.GetInstance(o)); } public static SigningCertificateV2 GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SigningCertificateV2(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SigningCertificateV2 GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SigningCertificateV2(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private SigningCertificateV2(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 1 || count > 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_certs = Asn1Sequence.GetInstance(seq[sequencePosition++]); m_policies = Asn1Utilities.ReadOptional(seq, ref sequencePosition, Asn1Sequence.GetOptional); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public SigningCertificateV2(EssCertIDv2 cert) { m_certs = new DerSequence(cert); } public SigningCertificateV2(EssCertIDv2[] certs) { m_certs = DerSequence.FromElements(certs); } public SigningCertificateV2(EssCertIDv2[] certs, PolicyInformation[] policies) { m_certs = new DerSequence(certs); m_policies = DerSequence.FromElementsOptional(policies); } public EssCertIDv2[] GetCerts() { return m_certs.MapElements(EssCertIDv2.GetInstance); } public PolicyInformation[] GetPolicies() { return m_policies?.MapElements(PolicyInformation.GetInstance); } public override Asn1Object ToAsn1Object() { if (m_policies != null) return DerSequence.FromElements(m_certs, m_policies); return DerSequence.FromElement(m_certs); } } }