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

OriginatorInfoGenerator

using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; using Org.BouncyCastle.Utilities.Collections; using Org.BouncyCastle.X509; using System.Collections.Generic; namespace Org.BouncyCastle.Cms { public class OriginatorInfoGenerator { private readonly List<Asn1Encodable> origCerts; private readonly List<Asn1Encodable> origCrls; public OriginatorInfoGenerator(X509Certificate origCert) { origCerts = new List<Asn1Encodable> { origCert.CertificateStructure }; origCrls = null; } public OriginatorInfoGenerator(IStore<X509Certificate> x509Certs) : this(x509Certs, null, null, null) { } public OriginatorInfoGenerator(IStore<X509Certificate> x509Certs, IStore<X509Crl> x509Crls) : this(x509Certs, x509Crls, null, null) { } public OriginatorInfoGenerator(IStore<X509Certificate> x509Certs, IStore<X509Crl> x509Crls, IStore<X509V2AttributeCertificate> x509AttrCerts, IStore<OtherRevocationInfoFormat> otherRevocationInfos) { List<Asn1Encodable> result = null; if (x509Certs != null || x509AttrCerts != null) { result = new List<Asn1Encodable>(); if (x509Certs != null) CmsUtilities.CollectCertificates(result, x509Certs); if (x509AttrCerts != null) CmsUtilities.CollectAttributeCertificates(result, x509AttrCerts); } List<Asn1Encodable> result2 = null; if (x509Crls != null || otherRevocationInfos != null) { result2 = new List<Asn1Encodable>(); if (x509Crls != null) CmsUtilities.CollectCrls(result2, x509Crls); if (otherRevocationInfos != null) CmsUtilities.CollectOtherRevocationInfos(result2, otherRevocationInfos); } origCerts = result; origCrls = result2; } public virtual OriginatorInfo Generate() { Asn1Set certs = (origCerts == null) ? null : CmsUtilities.CreateDerSetFromList(origCerts); Asn1Set crls = (origCrls == null) ? null : CmsUtilities.CreateDerSetFromList(origCrls); return new OriginatorInfo(certs, crls); } } }