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

SigningCertificate

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Ess { public class SigningCertificate : Asn1Encodable { private readonly Asn1Sequence m_certs; private readonly Asn1Sequence m_policies; public static SigningCertificate GetInstance(object o) { if (o == null) return null; SigningCertificate signingCertificate = o as SigningCertificate; if (signingCertificate != null) return signingCertificate; return new SigningCertificate(Asn1Sequence.GetInstance(o)); } public static SigningCertificate GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SigningCertificate(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SigningCertificate GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SigningCertificate(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } [Obsolete("Use 'GetInstance' instead")] public SigningCertificate(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 SigningCertificate(EssCertID essCertID) { m_certs = new DerSequence(essCertID); } public EssCertID[] GetCerts() { return m_certs.MapElements(EssCertID.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); } } }