es.caib.signatura.provider.impl.common
Class SMIMESignatureImpl

java.lang.Object
  extended by es.caib.signatura.provider.impl.common.SMIMESignatureImpl
All Implemented Interfaces:
es.caib.signatura.api.Signature, es.caib.signatura.impl.SignatureProviderInterface

public class SMIMESignatureImpl
extends java.lang.Object
implements es.caib.signatura.impl.SignatureProviderInterface

Implementación de una firma de un documento smime. Las diferencias con los otros tipos de firmas es que no se puede serializar, no se puede obtener el pkcs7 que lo forma, y no se puede añadir un timestamp a posteriori.

Author:
u91940

Constructor Summary
SMIMESignatureImpl()
           
SMIMESignatureImpl(byte[] pkcs7, java.lang.String contentType, boolean isBinary)
           
 
Method Summary
 java.security.cert.X509Certificate getCert()
           
 java.lang.String getCertCaName()
          Obtiene el nombre de la entidad certificadora usada en la firma
 java.security.cert.X509Certificate[] getCertificateChain()
           
 java.lang.String getCertSubjectAlternativeNames()
           
 java.lang.String getCertSubjectCommonName()
          Obtiene el nombre del certificado usado en la firma
 java.lang.String getContentType()
           
 java.util.Date getDate()
           
 es.caib.signatura.api.ParsedCertificate getParsedCertificate()
           
 byte[] getPkcs7()
           
 byte[] getSignatureBytes()
           
 java.util.Date getTimeStamp()
           
protected  java.security.cert.X509Certificate[] getTimeStampCertificates(java.util.Collection certCollection)
           
 void setContentType(java.lang.String contentType)
           
 void setSignedData(byte[] pkcs7)
          Crea un nuevo objeto a partir de los atributos de la clase.
 boolean verify()
           
 boolean verify(java.io.InputStream contentStream)
           
 boolean verifyAPosterioriTimestamp(java.io.InputStream contentStream)
           
protected  boolean verifyAPosterioriTimestampRaw(java.io.InputStream contentStream)
           
protected  boolean verifyRaw(java.io.InputStream contentStream)
           
protected  boolean verifyTimestamp(org.bouncycastle.tsp.TimeStampToken tst, org.bouncycastle.cms.SignerInformation si, byte[] documentDigest)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SMIMESignatureImpl

public SMIMESignatureImpl()

SMIMESignatureImpl

public SMIMESignatureImpl(byte[] pkcs7,
                          java.lang.String contentType,
                          boolean isBinary)
                   throws java.lang.Exception
Throws:
java.lang.Exception
Method Detail

getCertificateChain

public java.security.cert.X509Certificate[] getCertificateChain()
Specified by:
getCertificateChain in interface es.caib.signatura.api.Signature
Specified by:
getCertificateChain in interface es.caib.signatura.impl.SignatureProviderInterface

getContentType

public java.lang.String getContentType()
Specified by:
getContentType in interface es.caib.signatura.api.Signature

getSignatureBytes

public byte[] getSignatureBytes()

getCertCaName

public java.lang.String getCertCaName()
Obtiene el nombre de la entidad certificadora usada en la firma

Specified by:
getCertCaName in interface es.caib.signatura.api.Signature
Returns:
nombre de la entidad certificadora

getCertSubjectCommonName

public java.lang.String getCertSubjectCommonName()
Obtiene el nombre del certificado usado en la firma

Specified by:
getCertSubjectCommonName in interface es.caib.signatura.api.Signature
Returns:
nombre del certificado (CommonName)

getCertSubjectAlternativeNames

public java.lang.String getCertSubjectAlternativeNames()
Specified by:
getCertSubjectAlternativeNames in interface es.caib.signatura.api.Signature

getTimeStampCertificates

protected java.security.cert.X509Certificate[] getTimeStampCertificates(java.util.Collection certCollection)
                                                                 throws java.lang.Exception
Throws:
java.lang.Exception

getDate

public java.util.Date getDate()
                       throws es.caib.signatura.api.SignatureTimestampException
Specified by:
getDate in interface es.caib.signatura.api.Signature
Throws:
es.caib.signatura.api.SignatureTimestampException

verify

public boolean verify()
               throws es.caib.signatura.api.SignatureVerifyException
Specified by:
verify in interface es.caib.signatura.api.Signature
Throws:
es.caib.signatura.api.SignatureVerifyException

getCert

public java.security.cert.X509Certificate getCert()
Specified by:
getCert in interface es.caib.signatura.api.Signature

verifyAPosterioriTimestamp

public boolean verifyAPosterioriTimestamp(java.io.InputStream contentStream)
                                   throws es.caib.signatura.api.SignatureProviderException,
                                          java.io.IOException,
                                          es.caib.signatura.api.SignatureVerifyException
Specified by:
verifyAPosterioriTimestamp in interface es.caib.signatura.api.Signature
Throws:
es.caib.signatura.api.SignatureProviderException
java.io.IOException
es.caib.signatura.api.SignatureVerifyException

verifyAPosterioriTimestampRaw

protected boolean verifyAPosterioriTimestampRaw(java.io.InputStream contentStream)
                                         throws es.caib.signatura.api.SignatureProviderException,
                                                java.io.IOException,
                                                es.caib.signatura.api.SignatureVerifyException
Throws:
es.caib.signatura.api.SignatureProviderException
java.io.IOException
es.caib.signatura.api.SignatureVerifyException

verify

public boolean verify(java.io.InputStream contentStream)
               throws es.caib.signatura.api.SignatureProviderException,
                      java.io.IOException,
                      es.caib.signatura.api.SignatureVerifyException
Specified by:
verify in interface es.caib.signatura.api.Signature
Throws:
es.caib.signatura.api.SignatureProviderException
java.io.IOException
es.caib.signatura.api.SignatureVerifyException

verifyRaw

protected boolean verifyRaw(java.io.InputStream contentStream)
                     throws es.caib.signatura.api.SignatureProviderException,
                            java.io.IOException,
                            es.caib.signatura.api.SignatureVerifyException
Throws:
es.caib.signatura.api.SignatureProviderException
java.io.IOException
es.caib.signatura.api.SignatureVerifyException

verifyTimestamp

protected boolean verifyTimestamp(org.bouncycastle.tsp.TimeStampToken tst,
                                  org.bouncycastle.cms.SignerInformation si,
                                  byte[] documentDigest)
                           throws es.caib.signatura.api.SignatureProviderException,
                                  java.io.IOException,
                                  es.caib.signatura.api.SignatureVerifyException
Throws:
es.caib.signatura.api.SignatureProviderException
java.io.IOException
es.caib.signatura.api.SignatureVerifyException

getParsedCertificate

public es.caib.signatura.api.ParsedCertificate getParsedCertificate()
Specified by:
getParsedCertificate in interface es.caib.signatura.api.Signature

getTimeStamp

public java.util.Date getTimeStamp()

setContentType

public void setContentType(java.lang.String contentType)
                    throws java.lang.Exception
Specified by:
setContentType in interface es.caib.signatura.impl.SignatureProviderInterface
Throws:
java.lang.Exception

setSignedData

public void setSignedData(byte[] pkcs7)
                   throws java.lang.Exception
Crea un nuevo objeto a partir de los atributos de la clase. Es el constructor que debe usar cada implementación de la interfaz Signature para crear una firma. Se extrae el certificado de la firma y se guarda en la propiedad transient certificate para usarla en los métodos que dan información concreta del certificado

Specified by:
setSignedData in interface es.caib.signatura.impl.SignatureProviderInterface
Parameters:
signatureBytes - array de bytes con la firma digital generada por la api del proveedor de firma electrónica
Throws:
java.lang.Exception

getPkcs7

public byte[] getPkcs7()
Specified by:
getPkcs7 in interface es.caib.signatura.api.Signature


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