es.caib.signatura.api
Interface Signer


public interface Signer

Interfaz que independiza las implementaciones de firma y verificación de cada entidad certificadora con una serie de métodos estándar, llevando a cabo la firma digital desacoplada (firma y documento original se mantienen por separado). Esta firma puede ser avanzada o avanzada con sello de tiempo. La firma se encapsula con la clase Signature.

Version:
1.0
Author:
Jesús Reyes (3dígits)
See Also:
Signature

Field Summary
static int PDF_SIGN_DEFAULT_SIGNATURE_APPERANCE
           
static int PDF_SIGN_PAGE_LAST
           
static int PDF_SIGN_POSITION_BOTTOM
          Indica que la firma se añadirá en la parte inferior del PDF.
static int PDF_SIGN_POSITION_LEFT
          Indica que la firma se añadirá en el lado izquierdo del PDF.
static int PDF_SIGN_POSITION_NONE
          Indica que no se añadirá ni código de barras ni información del firmante.
static int PDF_SIGN_POSITION_RIGHT
          Indica que la firma se añadirá en el lado derecho del PDF.
static int PDF_SIGN_POSITION_TOP
          Indica que la firma se añadirá en la parte superior del PDF.
 
Method Summary
 void generateSMIME(java.io.InputStream document, Signature signature, java.io.OutputStream smime)
          Obtiene el documento SMIME a partir del documento original y su firma digital
 void generateSMIMEParalell(java.io.InputStream document, Signature[] signatures, java.io.OutputStream smime)
          Obtiene el documento SMIME a partir del documento original y el conjunto de firmas digitales obtenidas de firmas el documento.
 java.lang.String getAPIVersion()
          Obtiene la versión del componente
 java.lang.String[] getCertList(java.lang.String contentType)
          Obtiene la lista de certificados disponibles en el almacén de certificados definido por la API de la entidad certificadora: disco duro, dispositivo USB, etc.
 java.util.Date getCurrentDate(java.lang.String certificateName, java.lang.String password, java.lang.String contentType)
          Obtiene la hora oficial que tendría un sello de tiempo generado en ese mismo instante
 SMIMEParser getSMIMEParser(java.io.InputStream smime)
          Devuelve el un SMIMEParser con el que se puede obtener información de un documento smime
 ParsedCertificate parseCertificate(java.security.cert.X509Certificate certificateChain)
          Devuelve un objeto con información acerca del certificado.
 Signature sign(java.io.InputStream contentStream, java.lang.String certificateName, java.lang.String password, java.lang.String contentType)
          Obtiene la firma digital de un documento pasado como InputStream y la encapsula en un objeto Signature sin sello de tiempo.
 Signature sign(java.lang.String fileName, java.lang.String certificateName, java.lang.String password, java.lang.String contentType)
          Obtiene la firma digital de un documento de disco y la encapsula en un objeto Signature sin sello de tiempo.
 Signature sign(java.net.URL url, java.lang.String certificateName, java.lang.String password, java.lang.String contentType)
          Obtiene la firma digital de un documento de una URL y la encapsula en un objeto Signature sin sello de tiempo.
 void signPDF(java.io.InputStream contentStream, java.io.OutputStream signedStream, java.lang.String certificateName, java.lang.String password, java.lang.String contentType, java.lang.String url, int position)
          Firma digitalmente de un documento PDF pasado como InputStream y devuelve el mismo PDF firmado y modificado de forma que, en uno de los bordes del documento que se le indique, aparezca el firmante, la url desde la que se puede consultar el PDF y una matriz de puntos en formato PDF417 que continene esa misma URL.
 java.io.OutputStream signPDF(java.io.InputStream contentStream, java.lang.String certificateName, java.lang.String password, java.lang.String contentType, java.lang.String url, int position)
          Deprecated.  
 boolean verify(java.io.InputStream contentStream, Signature signatureData)
          Verifica la firma digital de un documento pasado como stream de bytes a partir de la firma encapsulada en un objeto Signature La verificación es independiente de si la firma llevaba o no sello de tiempo
 boolean verify(java.lang.String fileName, Signature signatureData)
          Verifica la firma digital de un documento almacenado en un fichero de disco, a partir de la firma encapsulada en un objeto Signature La verificación es independiente de si la firma llevaba o no sello de tiempo
 boolean verify(java.net.URL url, Signature signatureData)
          Verifica la firma digital de un documento de una URL a partir de la firma encapsulada en un objeto Signature La verificación es independiente de si la firma llevaba o no sello de tiempo
 boolean verifyAPosterioriTimeStamp(java.io.InputStream contentStream, Signature signatureData)
          Verifica la firma digital de un documento pasado como stream de bytes a partir de la firma encapsulada en un objeto Signature Si la firma requiere sello de tiempo y no dispone de él, se intenta añadir el sello de tiempo
 boolean verifyAPosterioriTimeStamp(java.lang.String fileName, Signature signatureData)
          Verifica la firma digital de un documento pasado como stream de bytes a partir de la firma encapsulada en un objeto Signature Si la firma requiere sello de tiempo y no dispone de él, se intenta añadir el sello de tiempo
 boolean verifyAPosterioriTimeStamp(java.net.URL url, Signature signatureData)
          Verifica la firma digital de un documento pasado como stream de bytes a partir de la firma encapsulada en un objeto Signature Si la firma requiere sello de tiempo y no dispone de él, se intenta añadir el sello de tiempo
 

Field Detail

PDF_SIGN_POSITION_TOP

static final int PDF_SIGN_POSITION_TOP
Indica que la firma se añadirá en la parte superior del PDF.

See Also:
Constant Field Values

PDF_SIGN_POSITION_BOTTOM

static final int PDF_SIGN_POSITION_BOTTOM
Indica que la firma se añadirá en la parte inferior del PDF.

See Also:
Constant Field Values

PDF_SIGN_POSITION_LEFT

static final int PDF_SIGN_POSITION_LEFT
Indica que la firma se añadirá en el lado izquierdo del PDF.

See Also:
Constant Field Values

PDF_SIGN_POSITION_RIGHT

static final int PDF_SIGN_POSITION_RIGHT
Indica que la firma se añadirá en el lado derecho del PDF.

See Also:
Constant Field Values

PDF_SIGN_POSITION_NONE

static final int PDF_SIGN_POSITION_NONE
Indica que no se añadirá ni código de barras ni información del firmante.

See Also:
Constant Field Values

PDF_SIGN_PAGE_LAST

static final int PDF_SIGN_PAGE_LAST
See Also:
Constant Field Values

PDF_SIGN_DEFAULT_SIGNATURE_APPERANCE

static final int PDF_SIGN_DEFAULT_SIGNATURE_APPERANCE
See Also:
Constant Field Values
Method Detail

getCertList

java.lang.String[] getCertList(java.lang.String contentType)
                               throws SignatureCertNotFoundException,
                                      SignaturePrivKeyException
Obtiene la lista de certificados disponibles en el almacén de certificados definido por la API de la entidad certificadora: disco duro, dispositivo USB, etc.

Returns:
lista de los nombres de certificado disponibles
Throws:
SignatureCertNotFoundException - si no se encuentra ningún certificado disponible
SignaturePrivKeyException - si no se pueden obtener las claves privadas de los certificados

sign

Signature sign(java.lang.String fileName,
               java.lang.String certificateName,
               java.lang.String password,
               java.lang.String contentType)
               throws java.io.IOException,
                      SignatureException
Obtiene la firma digital de un documento de disco y la encapsula en un objeto Signature sin sello de tiempo.

Parameters:
fileName - nombre del fichero que se desea firmar
certificateName - nombre del certificado que se usará para firmar
password - contraseña de la clave privada del usuario
contentType - tipo MIME del documento a firmar
Returns:
Signature firma del documento
Throws:
java.io.FileNotFoundException - si no se encuentra el fichero a firmar
java.io.IOException - si ha habido algún problema al abrir el fichero
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
SignatureSignException - si ha habido algún problema en el proceso de firma
java.security.UnrecoverableKeyException - si la contraseña de la clave privada no es correcta
SignatureException

sign

Signature sign(java.io.InputStream contentStream,
               java.lang.String certificateName,
               java.lang.String password,
               java.lang.String contentType)
               throws java.io.IOException,
                      SignatureException
Obtiene la firma digital de un documento pasado como InputStream y la encapsula en un objeto Signature sin sello de tiempo.

Parameters:
contentStream - flujo de bytes del documento a firmar
certificateName - nombre del certificado que se usará para firmar
password - contraseña de la clave privada del usuario
contentType - tipo MIME del documento a firmar
Returns:
Signature firma del documento
Throws:
java.io.IOException - si ha habido algún problema de comunicación al pasar el stream de bytes del documento
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
SignatureSignException - si ha habido algún problema en el proceso de firma
java.security.UnrecoverableKeyException - si la contraseña de la clave privada no es correcta
SignatureException

signPDF

void signPDF(java.io.InputStream contentStream,
             java.io.OutputStream signedStream,
             java.lang.String certificateName,
             java.lang.String password,
             java.lang.String contentType,
             java.lang.String url,
             int position)
             throws java.io.IOException,
                    SignatureException
Firma digitalmente de un documento PDF pasado como InputStream y devuelve el mismo PDF firmado y modificado de forma que, en uno de los bordes del documento que se le indique, aparezca el firmante, la url desde la que se puede consultar el PDF y una matriz de puntos en formato PDF417 que continene esa misma URL.

Parameters:
contentStream - flujo de bytes del documento PDF a firmar
certificateName - nombre del certificado que se usará para firmar
password - contraseña de la clave privada del usuario
contentType - tipo MIME del documento a firmar
url - URL que se sobreimpresiona sobre el documento firmado
position - Posición en la que se se sobreimpresionará la url en cada una de las hojas del documento firmado. Pueden ser PDF_SIGN_POSITION_TOP, PDF_SIGN_POSITION_BOTTOM, PDF_SIGN_POSITION_RIGHT o PDF_SIGN_POSITION_LEFT
Throws:
java.io.IOException - si ha habido algún problema de comunicación al pasar el stream de bytes del documento
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
SignatureSignException - si ha habido algún problema en el proceso de firma
java.security.UnrecoverableKeyException - si la contraseña de la clave privada no es correcta
SignatureException

signPDF

java.io.OutputStream signPDF(java.io.InputStream contentStream,
                             java.lang.String certificateName,
                             java.lang.String password,
                             java.lang.String contentType,
                             java.lang.String url,
                             int position)
                             throws java.io.IOException,
                                    SignatureException
Deprecated. 

Firma digitalmente de un documento PDF pasado como InputStream y devuelve el mismo PDF firmado y modificado de forma que, en uno de los bordes del documento que se le indique, aparezca el firmante, la url desde la que se puede consultar el PDF y una matriz de puntos en formato PDF417 que continene esa misma URL.

Parameters:
contentStream - flujo de bytes del documento PDF a firmar
certificateName - nombre del certificado que se usará para firmar
password - contraseña de la clave privada del usuario
contentType - tipo MIME del documento a firmar
url - URL que se sobreimpresiona sobre el documento firmado
position - Posición en la que se se sobreimpresionará la url en cada una de las hojas del documento firmado. Pueden ser PDF_SIGN_POSITION_TOP, PDF_SIGN_POSITION_BOTTOM, PDF_SIGN_POSITION_RIGHT o PDF_SIGN_POSITION_LEFT
Returns:
documento PDF firmado
Throws:
java.io.IOException - si ha habido algún problema de comunicación al pasar el stream de bytes del documento
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
SignatureSignException - si ha habido algún problema en el proceso de firma
java.security.UnrecoverableKeyException - si la contraseña de la clave privada no es correcta
SignatureException

sign

Signature sign(java.net.URL url,
               java.lang.String certificateName,
               java.lang.String password,
               java.lang.String contentType)
               throws java.io.IOException,
                      SignatureException
Obtiene la firma digital de un documento de una URL y la encapsula en un objeto Signature sin sello de tiempo.

Parameters:
url - dirección URL del fichero que se desea firmar
certificateName - nombre del certificado que se usará para firmar
password - contraseña de la clave privada del usuario
contentType - tipo MIME del documento a firmar
Returns:
Signature firma del documento
Throws:
java.io.FileNotFoundException - si no se encuentra el fichero a firmar
java.io.IOException - si ha habido algún problema al abrir el fichero
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
SignatureSignException - si ha habido algún problema en el proceso de firma
java.security.UnrecoverableKeyException - si la contraseña de la clave privada no es correcta
SignatureException

verifyAPosterioriTimeStamp

boolean verifyAPosterioriTimeStamp(java.io.InputStream contentStream,
                                   Signature signatureData)
                                   throws SignatureProviderException,
                                          java.io.IOException,
                                          SignatureVerifyException
Verifica la firma digital de un documento pasado como stream de bytes a partir de la firma encapsulada en un objeto Signature Si la firma requiere sello de tiempo y no dispone de él, se intenta añadir el sello de tiempo

Parameters:
contentStream - flujo de bytes del documento original
signatureData - objeto que contiene la firma
Returns:
true si la verificación es correcta y false en caso contrario
Throws:
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
java.io.IOException - si no se ha podido acceder al fichero o si no se ha podido contactar con el servidor de sello de tiempo
SignatureVerifyException - si no se ha podido realizar el proceso de verificación

verifyAPosterioriTimeStamp

boolean verifyAPosterioriTimeStamp(java.net.URL url,
                                   Signature signatureData)
                                   throws SignatureProviderException,
                                          java.io.IOException,
                                          SignatureVerifyException
Verifica la firma digital de un documento pasado como stream de bytes a partir de la firma encapsulada en un objeto Signature Si la firma requiere sello de tiempo y no dispone de él, se intenta añadir el sello de tiempo

Parameters:
url - del documento original
signatureData - objeto que contiene la firma
Returns:
true si la verificación es correcta y false en caso contrario
Throws:
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
java.io.IOException - si no se ha podido acceder al fichero o si no se ha podido contactar con el servidor de sello de tiempo
SignatureVerifyException - si no se ha podido realizar el proceso de verificación

verifyAPosterioriTimeStamp

boolean verifyAPosterioriTimeStamp(java.lang.String fileName,
                                   Signature signatureData)
                                   throws SignatureProviderException,
                                          java.io.IOException,
                                          SignatureVerifyException
Verifica la firma digital de un documento pasado como stream de bytes a partir de la firma encapsulada en un objeto Signature Si la firma requiere sello de tiempo y no dispone de él, se intenta añadir el sello de tiempo

Parameters:
nombre - del fichero del documento original
signatureData - objeto que contiene la firma
Returns:
true si la verificación es correcta y false en caso contrario
Throws:
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
java.io.IOException - si no se ha podido acceder al fichero o si no se ha podido contactar con el servidor de sello de tiempo
SignatureVerifyException - si no se ha podido realizar el proceso de verificación

verify

boolean verify(java.io.InputStream contentStream,
               Signature signatureData)
               throws SignatureProviderException,
                      java.io.IOException,
                      SignatureVerifyException
Verifica la firma digital de un documento pasado como stream de bytes a partir de la firma encapsulada en un objeto Signature La verificación es independiente de si la firma llevaba o no sello de tiempo

Parameters:
contentStream - flujo de bytes del documento original
signatureData - objeto que contiene la firma
Returns:
true si la verificación es correcta y false en caso contrario
Throws:
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
java.io.IOException - si no se ha podido acceder al fichero o si no se ha podido contactar con el servidor de sello de tiempo
SignatureVerifyException - si no se ha podido realizar el proceso de verificación

verify

boolean verify(java.lang.String fileName,
               Signature signatureData)
               throws java.io.FileNotFoundException,
                      SignatureProviderException,
                      java.io.IOException,
                      SignatureVerifyException
Verifica la firma digital de un documento almacenado en un fichero de disco, a partir de la firma encapsulada en un objeto Signature La verificación es independiente de si la firma llevaba o no sello de tiempo

Parameters:
fileName - nombre del fichero del documento original
signatureData - objeto que contiene la firma
Returns:
true si la verificación es correcta y false en caso contrario
Throws:
java.io.FileNotFoundException - si no existe el fichero del documento a verificar
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
java.io.IOException - si no se ha podido acceder al fichero o si no se ha podido contactar con el servidor de sello de tiempo
SignatureVerifyException - si no se ha podido realizar el proceso de verificación

verify

boolean verify(java.net.URL url,
               Signature signatureData)
               throws SignatureProviderException,
                      java.io.IOException,
                      SignatureVerifyException
Verifica la firma digital de un documento de una URL a partir de la firma encapsulada en un objeto Signature La verificación es independiente de si la firma llevaba o no sello de tiempo

Parameters:
url - dirección URL del fichero del documento original
signatureData - objeto que contiene la firma
Returns:
true si la verificación es correcta y false en caso contrario
Throws:
java.io.FileNotFoundException - si no existe el fichero del documento a verificar
SignatureProviderException - si no se ha podido acceder a la API del proveedor de firma electrónica
java.io.IOException - si no se ha podido acceder al fichero o si no se ha podido contactar con el servidor de sello de tiempo
SignatureVerifyException - si no se ha podido realizar el proceso de verificación

generateSMIME

void generateSMIME(java.io.InputStream document,
                   Signature signature,
                   java.io.OutputStream smime)
                   throws java.io.IOException
Obtiene el documento SMIME a partir del documento original y su firma digital

Parameters:
smime - OutputStream con el SMIME obtenido
signature - firma digital del documento
document - InputStream con el documento que se firmó
Throws:
java.io.IOException

generateSMIMEParalell

void generateSMIMEParalell(java.io.InputStream document,
                           Signature[] signatures,
                           java.io.OutputStream smime)
                           throws java.io.IOException,
                                  SignatureException
Obtiene el documento SMIME a partir del documento original y el conjunto de firmas digitales obtenidas de firmas el documento.

Parameters:
document - InputStream con el documento que se firmó
signatures - firmas digital del documento
smime - OutputStream con el SMIME obtenido
Throws:
java.io.IOException
SignatureException

getCurrentDate

java.util.Date getCurrentDate(java.lang.String certificateName,
                              java.lang.String password,
                              java.lang.String contentType)
                              throws SignatureTimestampException,
                                     SignatureException,
                                     java.io.IOException
Obtiene la hora oficial que tendría un sello de tiempo generado en ese mismo instante

Parameters:
certificateName - nombre del certificado que se usará para firmar
password - contraseña de la clave privada del usuario
contentType - tipo MIME del documento a firmar
Returns:
Hora Oficial
Throws:
java.io.IOException
SignatureException
SignatureTimestampException

getAPIVersion

java.lang.String getAPIVersion()
Obtiene la versión del componente

Returns:
versionNumber

getSMIMEParser

SMIMEParser getSMIMEParser(java.io.InputStream smime)
                           throws java.io.FileNotFoundException,
                                  java.lang.InstantiationException,
                                  java.lang.IllegalAccessException,
                                  java.io.IOException,
                                  SignatureException
Devuelve el un SMIMEParser con el que se puede obtener información de un documento smime

Parameters:
smime - el documento smime a interpretar
Returns:
El intérprete que nos permite obtener información del smime.
Throws:
java.io.FileNotFoundException
java.lang.InstantiationException
java.lang.IllegalAccessException
java.io.IOException
SignatureException

parseCertificate

ParsedCertificate parseCertificate(java.security.cert.X509Certificate certificateChain)
Devuelve un objeto con información acerca del certificado.

Parameters:
certificate - Certificado que se quiere parsear.
Returns:
Certificado parseado.


Copyright © 2009 Direcció General de Tecnologia i Comunicacions. Govern de les Illes Balears. All Rights Reserved.