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

CertificateStatus

public class CertificateStatus
using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cmp; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Cms; using Org.BouncyCastle.Math; using Org.BouncyCastle.Operators.Utilities; using Org.BouncyCastle.Utilities; using Org.BouncyCastle.X509; using System; namespace Org.BouncyCastle.Cmp { public class CertificateStatus { private readonly IDigestAlgorithmFinder m_digestAlgorithmFinder; private readonly CertStatus m_certStatus; public virtual PkiStatusInfo StatusInfo => m_certStatus.StatusInfo; public virtual DerInteger CertReqID => m_certStatus.CertReqID; [Obsolete("Use 'CertReqID' instead")] public virtual BigInteger CertRequestID { get { return m_certStatus.CertReqID.Value; } } [Obsolete("Use constructor taking 'IDigestAlgorithmFinder' instead")] public CertificateStatus(DefaultDigestAlgorithmIdentifierFinder digestAlgFinder, CertStatus certStatus) : this((IDigestAlgorithmFinder)digestAlgFinder, certStatus) { } public CertificateStatus(IDigestAlgorithmFinder digestAlgorithmFinder, CertStatus certStatus) { m_digestAlgorithmFinder = digestAlgorithmFinder; m_certStatus = certStatus; } public virtual bool IsVerified(X509Certificate cert) { return IsVerified(new CmpCertificate(cert.CertificateStructure), cert.SignatureAlgorithm); } public virtual bool IsVerified(CmpCertificate cmpCertificate, AlgorithmIdentifier signatureAlgorithm) { byte[] b = CmpUtilities.CalculateCertHash(cmpCertificate, signatureAlgorithm, m_digestAlgorithmFinder); return Arrays.FixedTimeEquals(m_certStatus.CertHash.GetOctets(), b); } } }