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

CertID

public class CertID : Asn1Encodable
using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Ocsp { public class CertID : Asn1Encodable { private readonly AlgorithmIdentifier hashAlgorithm; private readonly Asn1OctetString issuerNameHash; private readonly Asn1OctetString issuerKeyHash; private readonly DerInteger serialNumber; public AlgorithmIdentifier HashAlgorithm => hashAlgorithm; public Asn1OctetString IssuerNameHash => issuerNameHash; public Asn1OctetString IssuerKeyHash => issuerKeyHash; public DerInteger SerialNumber => serialNumber; public static CertID GetInstance(Asn1TaggedObject obj, bool explicitly) { return GetInstance(Asn1Sequence.GetInstance(obj, explicitly)); } public static CertID GetInstance(object obj) { if (obj == null) return null; CertID certID = obj as CertID; if (certID != null) return certID; return new CertID(Asn1Sequence.GetInstance(obj)); } public CertID(AlgorithmIdentifier hashAlgorithm, Asn1OctetString issuerNameHash, Asn1OctetString issuerKeyHash, DerInteger serialNumber) { this.hashAlgorithm = hashAlgorithm; this.issuerNameHash = issuerNameHash; this.issuerKeyHash = issuerKeyHash; this.serialNumber = serialNumber; } private CertID(Asn1Sequence seq) { if (seq.Count != 4) throw new ArgumentException("Wrong number of elements in sequence", "seq"); hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[0]); issuerNameHash = Asn1OctetString.GetInstance(seq[1]); issuerKeyHash = Asn1OctetString.GetInstance(seq[2]); serialNumber = DerInteger.GetInstance(seq[3]); } public override Asn1Object ToAsn1Object() { return new DerSequence(hashAlgorithm, issuerNameHash, issuerKeyHash, serialNumber); } } }