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

OtherSigningCertificate

using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Utilities; using System; using System.Collections.Generic; namespace Org.BouncyCastle.Asn1.Esf { public class OtherSigningCertificate : Asn1Encodable { private readonly Asn1Sequence m_certs; private readonly Asn1Sequence m_policies; public static OtherSigningCertificate GetInstance(object obj) { if (obj == null) return null; OtherSigningCertificate otherSigningCertificate = obj as OtherSigningCertificate; if (otherSigningCertificate != null) return otherSigningCertificate; Asn1Sequence asn1Sequence = obj as Asn1Sequence; if (asn1Sequence != null) return new OtherSigningCertificate(asn1Sequence); throw new ArgumentException("Unknown object in 'OtherSigningCertificate' factory: " + Platform.GetTypeName(obj), "obj"); } private OtherSigningCertificate(Asn1Sequence seq) { if (seq == null) throw new ArgumentNullException("seq"); if (seq.Count < 1 || seq.Count > 2) throw new ArgumentException("Bad sequence size: " + seq.Count.ToString(), "seq"); m_certs = Asn1Sequence.GetInstance(seq[0].ToAsn1Object()); if (seq.Count > 1) m_policies = Asn1Sequence.GetInstance(seq[1].ToAsn1Object()); } public OtherSigningCertificate(params OtherCertID[] certs) : this(certs, (PolicyInformation[])null) { } public OtherSigningCertificate(OtherCertID[] certs, params PolicyInformation[] policies) { if (certs == null) throw new ArgumentNullException("certs"); m_certs = new DerSequence(certs); if (policies != null) m_policies = new DerSequence(policies); } public OtherSigningCertificate(IEnumerable<OtherCertID> certs) : this(certs, null) { } public OtherSigningCertificate(IEnumerable<OtherCertID> certs, IEnumerable<PolicyInformation> policies) { if (certs == null) throw new ArgumentNullException("certs"); m_certs = new DerSequence(Asn1EncodableVector.FromEnumerable(certs)); if (policies != null) m_policies = new DerSequence(Asn1EncodableVector.FromEnumerable(policies)); } public OtherCertID[] GetCerts() { return m_certs.MapElements((Asn1Encodable element) => OtherCertID.GetInstance(element.ToAsn1Object())); } public PolicyInformation[] GetPolicies() { return m_policies?.MapElements((Asn1Encodable element) => PolicyInformation.GetInstance(element.ToAsn1Object())); } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(m_certs); asn1EncodableVector.AddOptional(m_policies); return new DerSequence(asn1EncodableVector); } } }