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

IssuerSerial

public class IssuerSerial : Asn1Encodable
using System; namespace Org.BouncyCastle.Asn1.X509 { public class IssuerSerial : Asn1Encodable { private readonly GeneralNames m_issuer; private readonly DerInteger m_serial; private readonly DerBitString m_issuerUid; public GeneralNames Issuer => m_issuer; public DerInteger Serial => m_serial; public DerBitString IssuerUid => m_issuerUid; public static IssuerSerial GetInstance(object obj) { if (obj == null) return null; IssuerSerial issuerSerial = obj as IssuerSerial; if (issuerSerial != null) return issuerSerial; return new IssuerSerial(Asn1Sequence.GetInstance(obj)); } public static IssuerSerial GetInstance(Asn1TaggedObject obj, bool explicitly) { return new IssuerSerial(Asn1Sequence.GetInstance(obj, explicitly)); } public static IssuerSerial GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); IssuerSerial issuerSerial = element as IssuerSerial; if (issuerSerial != null) return issuerSerial; Asn1Sequence optional = Asn1Sequence.GetOptional(element); if (optional != null) return new IssuerSerial(optional); return null; } public static IssuerSerial GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new IssuerSerial(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private IssuerSerial(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 2 || count > 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_issuer = GeneralNames.GetInstance(seq[sequencePosition++]); m_serial = DerInteger.GetInstance(seq[sequencePosition++]); m_issuerUid = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DerBitString.GetOptional); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public IssuerSerial(X509Name issuer, DerInteger serial) : this(new GeneralNames(new GeneralName(issuer)), serial) { } public IssuerSerial(GeneralNames issuer, DerInteger serial) : this(issuer, serial, null) { } public IssuerSerial(GeneralNames issuer, DerInteger serial, DerBitString issuerUid) { if (issuer == null) throw new ArgumentNullException("issuer"); m_issuer = issuer; if (serial == null) throw new ArgumentNullException("serial"); m_serial = serial; m_issuerUid = issuerUid; } public override Asn1Object ToAsn1Object() { if (m_issuerUid != null) return new DerSequence(m_issuer, m_serial, m_issuerUid); return new DerSequence(m_issuer, m_serial); } } }