2010-04-26 2 views

ответ

0
static { 
    Security.setProperty("ocsp.enable", "true"); 
} 

public boolean validate(X509Certificate certificate, CertPath certPath, 
     PKIXParameters parameters) throws GeneralSecurityException { 
    try { 
     CertPathValidator cpv = CertPathValidator.getInstance("PKIX"); 
     PKIXCertPathValidatorResult result = (PKIXCertPathValidatorResult) cpv 
       .validate(certPath, parameters); 
     Signature.LOG.debug("Validation result is: " + result); 
     return true; // if no exception is thrown 
    } catch (CertPathValidatorException cpve) { 

     // if the exception is (or is caused by) 
     // CertificateRevokedException, return false; 
     // otherwise re-throw, because this indicates a failure to perform 
     // the validation 
     Throwable cause = ExceptionUtils.getRootCause(cpve); 
     Class<? extends Throwable> exceptionClass = cause != null ? cause.getClass() 
       : cpve.getClass(); 
     if (exceptionClass.getSimpleName().equals("CertificateRevokedException")) { 
      return false; 
     } 
     throw cpve; 
    } 
} 
+0

Должен ли я заключить, что OCSP предоставляется предпочтение (когда включено) над CRL в CertPathValidator? – Deep

+0

есть, правильный. (Фактически - вам удалось провести проверку CRL с помощью провайдера Sun?) – Bozho

Смежные вопросы