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

OriginatorInfo

public class OriginatorInfo : Asn1Encodable
using System; namespace Org.BouncyCastle.Asn1.Cms { public class OriginatorInfo : Asn1Encodable { private Asn1Set certs; private Asn1Set crls; public Asn1Set Certificates => certs; public Asn1Set Crls => crls; public static OriginatorInfo GetInstance(object obj) { if (obj == null) return null; OriginatorInfo originatorInfo = obj as OriginatorInfo; if (originatorInfo != null) return originatorInfo; return new OriginatorInfo(Asn1Sequence.GetInstance(obj)); } public static OriginatorInfo GetInstance(Asn1TaggedObject obj, bool explicitly) { return new OriginatorInfo(Asn1Sequence.GetInstance(obj, explicitly)); } public OriginatorInfo(Asn1Set certs, Asn1Set crls) { this.certs = certs; this.crls = crls; } public OriginatorInfo(Asn1Sequence seq) { switch (seq.Count) { case 0: break; case 1: { Asn1TaggedObject asn1TaggedObject = (Asn1TaggedObject)seq[0]; switch (asn1TaggedObject.TagNo) { case 0: certs = Asn1Set.GetInstance(asn1TaggedObject, false); break; case 1: crls = Asn1Set.GetInstance(asn1TaggedObject, false); break; default: throw new ArgumentException("Bad tag in OriginatorInfo: " + asn1TaggedObject.TagNo.ToString()); } break; } case 2: certs = Asn1Set.GetInstance((Asn1TaggedObject)seq[0], false); crls = Asn1Set.GetInstance((Asn1TaggedObject)seq[1], false); break; default: throw new ArgumentException("OriginatorInfo too big"); } } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(2); asn1EncodableVector.AddOptionalTagged(false, 0, certs); asn1EncodableVector.AddOptionalTagged(false, 1, crls); return new DerSequence(asn1EncodableVector); } } }