/** * LICENCIA LGPL: * * Esta librería es Software Libre; Usted puede redistribuirlo y/o modificarlo * bajo los términos de la GNU Lesser General Public License (LGPL) * tal y como ha sido publicada por la Free Software Foundation; o * bien la versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior. * * Esta librería se distribuye con la esperanza de que sea útil, pero SIN NINGUNA * GARANTÍA; tampoco las implícitas garantías de MERCANTILIDAD o ADECUACIÓN A UN * PROPÓSITO PARTICULAR. Consulte la GNU Lesser General Public License (LGPL) para más * detalles * * Usted debe recibir una copia de la GNU Lesser General Public License (LGPL) * junto con esta librería; si no es así, escriba a la Free Software Foundation Inc. * 51 Franklin Street, 5º Piso, Boston, MA 02110-1301, USA o consulte * <http://www.gnu.org/licenses/>. * * Copyright 2008 Ministerio de Industria, Turismo y Comercio * */ package es.mityc.firmaJava.ocsp; import java.security.cert.X509Certificate; import java.util.Date; import java.util.Vector; import javax.security.auth.x500.X500Principal; import org.bouncycastle.asn1.ASN1OctetString; import org.bouncycastle.asn1.ASN1TaggedObject; import org.bouncycastle.asn1.ocsp.ResponderID; import org.bouncycastle.asn1.x509.X509Name; import org.bouncycastle.jce.X509Principal; /** * Clase encargada de almacenar la informacion de las validaciones OCSP * * @author Ministerio de Industria, Turismo y Comercio * @version 0.9 beta */ public class RespuestaOCSP { public enum TIPOS_RESPONDER {BY_NAME, BY_KEY}; private int nroRespuesta; private String mensajeRespuesta; private byte[] respuesta; private Date tiempoRespuesta; private Vector<X509Certificate> refCerts; // private String respuestaID; private TIPOS_RESPONDER tipoResponder; private String valorResponder; /** * Constructor de la clase respuestaOCSP * @param nroRespuesta tipo de respuesta recibida del servidor OCSP * @param mensajeRespuesta mensaje que corresponde con el tipo de respuesta */ public RespuestaOCSP(int nroRespuesta, byte[] respuesta, String mensajeRespuesta, Date tiempoRespuesta, String respuestaID, Vector<X509Certificate> refCerts) { this.nroRespuesta = nroRespuesta; this.respuesta = respuesta.clone(); this.mensajeRespuesta = mensajeRespuesta; this.tiempoRespuesta = new Date(tiempoRespuesta.getTime()); this.refCerts = refCerts; } /** * Constructor de la clase respuestaOCSP * @param nroRespuesta tipo de respuesta recibida del servidor OCSP * @param mensajeRespuesta mensaje que corresponde con el tipo de respuesta */ public RespuestaOCSP(int nroRespuesta, String mensajeRespuesta) { this.nroRespuesta = nroRespuesta; this.mensajeRespuesta = mensajeRespuesta; } /** * Constructor vacío de la clase respuestaOCSP */ public RespuestaOCSP() { //No hace nada } /** * Obtiene el cuerpo de la respuesta del servidor OCSP * @return cuerpo de la respuesta */ public byte[] getRespuesta() { return respuesta.clone(); } /** * Establece el cuerpo de la respuesta del servidor OCSP * @param respuesta cuerpo de la respuesta */ public void setRespuesta(byte[] respuesta) { this.respuesta = respuesta.clone(); } /** * Obtiene el mensaje de la respuesta del servidor OCSP * @return mensaje de la respuesta */ public String getMensajeRespuesta() { return mensajeRespuesta; } /** * Establece el mensaje de la respuesta del servidor OCSP * @param mensajeRespuesta mensaje de la respuesta */ public void setMensajeRespuesta(String mensajeRespuesta) { this.mensajeRespuesta = mensajeRespuesta; } /** * Obtiene el tipo de respuesta que ha devuelto el servidor OCSP * @return tipo de respuesta */ public int getNroRespuesta() { return nroRespuesta; } /** * Establece el tipo de respuesta que ha devuelto el servidor OCSP * @param nroRespuesta tipo de respuesta */ public void setNroRespuesta(int nroRespuesta) { this.nroRespuesta = nroRespuesta; } /** * * @return */ public Vector<X509Certificate> getRefCerts() { return refCerts; } /** * * @param refCerts */ public void setRefCerts(Vector<X509Certificate> refCerts) { this.refCerts = refCerts; } /** * * @return */ public Date getTiempoRespuesta() { return new Date(tiempoRespuesta.getTime()); } /** * * @param tiempoRespuesta */ public void setTiempoRespuesta(Date tiempoRespuesta) { this.tiempoRespuesta = new Date(tiempoRespuesta.getTime()); } public TIPOS_RESPONDER getTipoResponder() { return tipoResponder; } public void setResponder(ResponderID responder) { ASN1TaggedObject tagged = (ASN1TaggedObject)responder.toASN1Object(); switch (tagged.getTagNo()) { case 1: valorResponder = X509Name.getInstance(tagged.getObject()).toString(); X509Principal certX509Principal = new X509Principal(valorResponder); X500Principal cerX500Principal = new X500Principal(certX509Principal.getDEREncoded()); valorResponder = cerX500Principal.getName(); tipoResponder = TIPOS_RESPONDER.BY_NAME; break; case 2: ASN1OctetString octect = (ASN1OctetString)tagged.getObject(); valorResponder = new String(Base64Coder.encode(octect.getOctets())); tipoResponder = TIPOS_RESPONDER.BY_KEY; break; } } public String getValorResponder() { return valorResponder; } }