69                 X509Certificate issuer = issuers.get(0);
    70                 ValidationStatus status = 
new ValidationStatus(certificate, issuer, validationDate, ValidatorSourceType.OCSP, CertificateValidity.UNKNOWN);
    73                         Principal subjectX500Principal = certificate.getSubjectX500Principal();
    76                         if (ocspUrl == null) {
    77                                 log.error(
"OCSP URL for '" + subjectX500Principal + 
"' is empty");
    81                         log.debug(
"OCSP URL for '" + subjectX500Principal + 
"' is '" + ocspUrl + 
"'");
    83                         DigestCalculator digestCalculator = 
new JcaDigestCalculatorProviderBuilder().build().get(CertificateID.HASH_SHA1);
    84                         CertificateID certificateId = 
new CertificateID(digestCalculator, 
new JcaX509CertificateHolder(certificate), certificate.getSerialNumber());
    91                         if (ocspResp.getStatus() != OCSPRespBuilder.SUCCESSFUL) {
    92                                 log.error(
"OCSP response is invalid!");
    93                                 status.setValidity(CertificateValidity.INVALID);
    97                         boolean foundResponse = 
false;
    98                         BasicOCSPResp basicOCSPResp = (BasicOCSPResp) ocspResp.getResponseObject();
    99                         SingleResp[] singleResps = basicOCSPResp.getResponses();
   100                         for (SingleResp singleResp : singleResps) {
   101                                 CertificateID responseCertificateId = singleResp.getCertID();
   102                                 if (!certificateId.equals(responseCertificateId)) {
   106                                 foundResponse = 
true;
   108                                 log.debug(
"OCSP validationDate: " + validationDate);
   109                                 log.debug(
"OCSP thisUpdate: " + singleResp.getThisUpdate());
   110                                 log.debug(
"OCSP nextUpdate: " + singleResp.getNextUpdate());
   112                                 status.setRevocationObjectIssuingTime(basicOCSPResp.getProducedAt());
   114                                 Object certStatus = singleResp.getCertStatus();
   115                                 if (certStatus == CertificateStatus.GOOD) {
   116                                         log.debug(
"OCSP status is valid for '" + certificate.getSubjectX500Principal() + 
"'");
   117                                         status.setValidity(CertificateValidity.VALID);
   119                                         if (singleResp.getCertStatus() instanceof RevokedStatus) {
   120                                                 log.warn(
"OCSP status is revoked for: " + subjectX500Principal);
   121                                                 if (validationDate.before(((RevokedStatus) singleResp.getCertStatus()).getRevocationTime())) {
   122                                                         log.warn(
"OCSP revocation time after the validation date, the certificate '" + subjectX500Principal + 
"' was valid at " + validationDate);
   123                                                         status.setValidity(CertificateValidity.VALID);
   125                                                         Date revocationDate = ((RevokedStatus) singleResp.getCertStatus()).getRevocationTime();
   126                                                         log.info(
"OCSP for certificate '" + subjectX500Principal + 
"' is revoked since " + revocationDate);
   127                                                         status.setRevocationDate(revocationDate);
   128                                                         status.setRevocationObjectIssuingTime(singleResp.getThisUpdate());
   129                                                         status.setValidity(CertificateValidity.REVOKED);
   135                         if (!foundResponse) {
   136                                 log.error(
"There is no matching OCSP response entries");
   138                 } 
catch (Exception ex) {
   139                         log.error(
"OCSP exception: ", ex);
 String getOCSPUrl(X509Certificate certificate)
Definition: OCSPCertificateVerifier.java:155
 
OCSPReq generateOCSPRequest(CertificateID certificateId)
Definition: OCSPCertificateVerifier.java:145
 
static final Logger log
Definition: OCSPCertificateVerifier.java:61
 
OCSPResp requestOCSPResponse(String url, OCSPReq ocspReq)
Definition: OCSPCertificateVerifier.java:190