mardi 5 novembre 2013

OCSP Validator

OCSP Validator

This implementation is using JDK's default OCSP feature to examine and reject the certificate used to validate the validation response. Default mechanism is using the OCSPAIA extension field. If the OCSPAIA extension is null, the OCSP responder Url is used.

import java.io.File;
import java.io.FileInputStream;
import java.net.URI;
import java.security.cert.X509Certificate;

import sun.security.provider.certpath.OCSP;
import sun.security.provider.certpath.OCSP.RevocationStatus;
import sun.security.x509.X509CertImpl;


public class OCSPValidator {

    public boolean checkIssuerUsingOCSP(X509Certificate cert, X509Certificate signer_issuerCert) {

        try {
            RevocationStatus revocationStatus = null;
            if ((OCSP.getResponderURI(cert)) != null) {// validate using OCSPAIA extension
                revocationStatus = OCSP.check(cert, signer_issuerCert);
            } else {// validate using OCSPResponder URL
                URI vesUri = new URI("http://OCSPresponderURL:8080");
                X509Certificate servercert = new X509CertImpl(new FileInputStream(new File("SigningCertificate")));
                revocationStatus = OCSP.check(cert, signer_issuerCert, vesUri, servercert, null);
            }
            if (revocationStatus != null
                    && revocationStatus.getCertStatus().equals(             sun.security.provider.certpath.OCSP.RevocationStatus.CertStatus.GOOD)) {
                return true;
            }
            return false;
        } catch (Exception e) {
            return false;
        }
    }
}