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);
}
}
}