Establece las interfaces necesarias para la manipulación de estados de certificados y su acceso/almacenamiento.

Establece los interfaces y clases base para gestionar estados de certificados. Este módulo se divide en dos secciones principales:

Recuperación de elementos almacenados

La implementación de recuperadores de elementos de estado de certificados debe realizarse implementando el interfaz {@link es.mityc.javasign.certificate.IRecoverElements}. Mediante este interfaz se indica al recuperador identificadores del elemento buscado y la clase esperada como respuesta. Los errores esperados de recuperador son:

Ejemplo de uso

    public class ExampleRecoverOCSPElement {
    (...)
        public void method() {
            // Instanciación o recuperación de recoverer
            IRecoverElements recoverManager = (...);
        Map props = new HashMap();
        props.put(IRecoverElements.PROP_EMISSION_DATE, (... Date con la fecha de emisión de la respuesta OCSP buscada ...));
        props.put(IRecoverElements.PROP_DIGEST_ALGORITHM, (... String con el algoritmo de hash de la respuesta OCSP buscada...));
        props.put(IRecoverElements.PROP_DIGEST_VALUE, (... byte[] con el hash de la respuesta OCSP buscada ...));
        props.put(IRecoverElements.PROP_ISSUER_NAME, (... X500Princial con el nombre del emisor de la respuesta OCSP buscada ...));
        IOCSPCertStatus ocsp = null;
        try {
            ocsp = recoverManager.getElement(props, IOCSPCertStatus.class);
        } catch (ElementNotFoundException ex) {
            (... no se ha podido encontrar el elemento indicado ...)
        } catch (UnknownElementClassException ex) {
            (... no se reconoce el tipo de dato al que debe ajustarse la respuesta ...)
        }
            (...)
        }
    (...)
    }

Recuperación de estados de certificados

Si se implementa un consultar de estados de certificados se debe seguir las siguientes normas:

Para facilitar la labor de implementación se provee de una clase abstracta que puede servir de base de la clase que indica el tipo de estado: {@link es.mityc.javasign.certificate.AbstractCertStatus}.

Ejemplo de uso

    public class ExampleCertStatus {
    (...)
        public void method(X509Certificate certificate) {
            // Instanciación o recuperación de recoverer
            ICertStatusRecoverer recoverer = (...);
            try {
                List results = recoverer.getCertStatus(certificate);
                // El primer resultado es el del certificado consultado. En una comprobación debería tenerse en cuenta
                // el estado de todos los certificados de la cadena.
                ICertStatus certStatus = results.get(0);
                switch(certStatus.getStatus()) {
                    case valid:
                        System.out.println("El certificado es válido");
                        break;
                    case revoked:
                        System.out.println("El certificado está revocado");
                        System.out.println("Fecha de revocación: " + certStatus.getRevokedInfo().getRevokedDate());
                        break;
                    default:
                        System.out.println("Se desconoce el estado del certificado. Pruebe con otro validador.");
                }
            } catch (CertStatusException ex) {
                (... no se ha podido consultar el estado ...)
            }
            (...)
        }
    (...)
    }