using System.Collections.Generic; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; using Org.BouncyCastle.Utilities.Collections; using Org.BouncyCastle.X509; namespace Org.BouncyCastle.Cms { public class OriginatorInfoGenerator { private readonly List origCerts; private readonly List origCrls; public OriginatorInfoGenerator(X509Certificate origCert) { this.origCerts = new List{ origCert.CertificateStructure }; this.origCrls = null; } public OriginatorInfoGenerator(IStore x509Certs) : this(x509Certs, null, null, null) { } public OriginatorInfoGenerator(IStore x509Certs, IStore x509Crls) : this(x509Certs, x509Crls, null, null) { } public OriginatorInfoGenerator(IStore x509Certs, IStore x509Crls, IStore x509AttrCerts, IStore otherRevocationInfos) { List certificates = null; if (x509Certs != null || x509AttrCerts != null) { certificates = new List(); if (x509Certs != null) { certificates.AddRange(CmsUtilities.GetCertificatesFromStore(x509Certs)); } if (x509AttrCerts != null) { certificates.AddRange(CmsUtilities.GetAttributeCertificatesFromStore(x509AttrCerts)); } } List revocations = null; if (x509Crls != null || otherRevocationInfos != null) { revocations = new List(); if (x509Crls != null) { revocations.AddRange(CmsUtilities.GetCrlsFromStore(x509Crls)); } if (otherRevocationInfos != null) { revocations.AddRange(CmsUtilities.GetOtherRevocationInfosFromStore(otherRevocationInfos)); } } this.origCerts = certificates; this.origCrls = revocations; } public virtual OriginatorInfo Generate() { Asn1Set certSet = origCerts == null ? null : CmsUtilities.CreateDerSetFromList(origCerts); Asn1Set crlSet = origCrls == null ? null : CmsUtilities.CreateDerSetFromList(origCrls); return new OriginatorInfo(certSet, crlSet); } } }