public class AOCMSEnveloper
extends java.lang.Object
implements es.gob.afirma.core.envelopers.AOEnveloper
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CMS_CONTENTTYPE_AUTHENTICATEDDATA
Envoltario binario de tipo AuthenticatedData.
|
static java.lang.String |
CMS_CONTENTTYPE_AUTHENVELOPEDDATA
Envoltario binario de tipo AuthenticatedEnvelopedData.
|
static java.lang.String |
CMS_CONTENTTYPE_COMPRESSEDDATA
Envoltario binario de tipo AuthenticatedEnvelopedData.
|
static java.lang.String |
CMS_CONTENTTYPE_DATA
Envoltorio binario de tipo Data (datos envueltos en un envoltorio
PKCS#7).
|
static java.lang.String |
CMS_CONTENTTYPE_DIGESTEDDATA
Envoltorio binario de tipo Digest.
|
static java.lang.String |
CMS_CONTENTTYPE_ENCRYPTEDDATA
Firma binaria de tipo Encrypted Data
|
static java.lang.String |
CMS_CONTENTTYPE_ENVELOPEDDATA
Envoltorio binario de tipo Enveloped (sobre digital).
|
static java.lang.String |
CMS_CONTENTTYPE_SIGNEDANDENVELOPEDDATA
Envoltorio binario de tipo Signed and Enveloped.
|
static java.lang.String |
CMS_CONTENTTYPE_SIGNEDDATA
Firma binaria de tipo Signed Data
|
static java.lang.String |
DEFAULT_CMS_CONTENTTYPE
Envoltorio binario por defecto.
|
Constructor and Description |
---|
AOCMSEnveloper() |
Modifier and Type | Method and Description |
---|---|
static byte[] |
addOriginator(byte[] envelop,
java.security.KeyStore.PrivateKeyEntry ke)
Agrega un nuevo remitente a un envoltorio CMS compatible.
|
void |
addSignedAttribute(java.lang.String oid,
byte[] value)
Configura un atributo firmado para agregarlo a un envoltorio.
|
void |
addUnsignedAttribute(java.lang.String oid,
byte[] value)
Configura un atributo no firmado para agregarlo a un envoltorio.
|
byte[] |
createCMSAuthenticatedEnvelopedData(byte[] content,
java.security.KeyStore.PrivateKeyEntry ke,
es.gob.afirma.core.ciphers.AOCipherConfig cipherConfig,
java.security.cert.X509Certificate[] recipientsCerts,
java.lang.Integer keySize)
Crea un envoltorio CMS de tipo AuthenticatedEnvelopedData.
|
byte[] |
createCMSEncryptedData(byte[] content,
es.gob.afirma.core.ciphers.AOCipherConfig cipherConfig,
java.security.Key key)
Crea un envoltorio CMS de tipo EncryptedData.
|
byte[] |
createCMSEnvelopedData(byte[] content,
java.security.KeyStore.PrivateKeyEntry ke,
es.gob.afirma.core.ciphers.AOCipherConfig cipherConfig,
java.security.cert.X509Certificate[] recipientsCerts,
java.lang.Integer keySize)
Crea un envoltorio CMS de tipo EnvelopedData.
|
byte[] |
createCMSSignedAndEnvelopedData(byte[] content,
java.security.KeyStore.PrivateKeyEntry ke,
es.gob.afirma.core.ciphers.AOCipherConfig cipherConfig,
java.security.cert.X509Certificate[] recipientsCerts,
java.lang.Integer keySize)
Crea un envoltorio CMS de tipo SignedAndEnvelopedData.
|
byte[] |
encrypt(byte[] data,
java.lang.String digestAlgorithm,
java.lang.String key,
es.gob.afirma.core.ciphers.CipherConstants.AOCipherAlgorithm cipherAlgorithm,
java.lang.String dataType)
Cifra datos usando para ello una clave de cifrado.
|
byte[] |
envelop(byte[] data,
java.lang.String digestAlgorithm,
java.lang.String type,
java.security.KeyStore.PrivateKeyEntry keyEntry,
java.security.cert.X509Certificate[] certDest,
es.gob.afirma.core.ciphers.CipherConstants.AOCipherAlgorithm cipherAlgorithm,
java.lang.String dataType,
java.util.Properties extraParams)
Método para la generación de envolturas de datos.
|
java.lang.String |
getProcessedEnvelopType()
Recupera el tipo de envoltorio CMS identificado durante la operación de desensobrado.
|
byte[] |
getSignerCert()
Recupera el certificado del firmante del envoltorio.
|
byte[] |
recoverData(byte[] cmsEnvelop,
java.security.KeyStore.PrivateKeyEntry addresseePke)
Recupera el contenido de un envoltorio CMS.
|
void |
setCipherKey(java.lang.String keyPass)
Establece la contraseña o clave para la encriptación de los
datos.
|
void |
setSignatureAlgorithm(java.lang.String algorithm)
Algoritmo de firma que se utilizará internamente en el sobre.
|
public static final java.lang.String CMS_CONTENTTYPE_DATA
public static final java.lang.String CMS_CONTENTTYPE_SIGNEDDATA
public static final java.lang.String CMS_CONTENTTYPE_DIGESTEDDATA
public static final java.lang.String CMS_CONTENTTYPE_COMPRESSEDDATA
public static final java.lang.String CMS_CONTENTTYPE_ENCRYPTEDDATA
public static final java.lang.String CMS_CONTENTTYPE_ENVELOPEDDATA
public static final java.lang.String CMS_CONTENTTYPE_SIGNEDANDENVELOPEDDATA
public static final java.lang.String CMS_CONTENTTYPE_AUTHENTICATEDDATA
public static final java.lang.String CMS_CONTENTTYPE_AUTHENVELOPEDDATA
public static final java.lang.String DEFAULT_CMS_CONTENTTYPE
public byte[] envelop(byte[] data, java.lang.String digestAlgorithm, java.lang.String type, java.security.KeyStore.PrivateKeyEntry keyEntry, java.security.cert.X509Certificate[] certDest, es.gob.afirma.core.ciphers.CipherConstants.AOCipherAlgorithm cipherAlgorithm, java.lang.String dataType, java.util.Properties extraParams)
envelop
in interface es.gob.afirma.core.envelopers.AOEnveloper
data
- Datos que se desean envolver.digestAlgorithm
- Algoritmo a usar para la envoltura (SHA1withRSA, MD5withRSA,...)type
- Tipo de envoltura que se quiere hacer.keyEntry
- Clave privada a usar para firmar.certDest
- Certificados de los usuarios a los que va destinado el sobre digital.cipherAlgorithm
- Algoritmo utilizado para cifrar.extraParams
- Parámetros adicionales.public byte[] encrypt(byte[] data, java.lang.String digestAlgorithm, java.lang.String key, es.gob.afirma.core.ciphers.CipherConstants.AOCipherAlgorithm cipherAlgorithm, java.lang.String dataType)
encrypt
in interface es.gob.afirma.core.envelopers.AOEnveloper
data
- Datos a envolver.digestAlgorithm
- Algoritmo a usar para la envoltura (SHA1withRSA, MD5withRSA,...)key
- Puede ser una clave codificada o una contraseña usada
para cifrar el contenido.cipherAlgorithm
- Algoritmo a usar para los cifrados.dataType
- OID del tipo de datos a encriptar.public void addSignedAttribute(java.lang.String oid, byte[] value)
oid
- Object Identifier. Identificador del objeto a introducir.value
- Valor asignadopublic void addUnsignedAttribute(java.lang.String oid, byte[] value)
oid
- Object Identifier. Identificador del atributo a introducir.value
- Valor asignadopublic byte[] createCMSEncryptedData(byte[] content, es.gob.afirma.core.ciphers.AOCipherConfig cipherConfig, java.security.Key key) throws java.security.NoSuchAlgorithmException, java.io.IOException
content
- Contenido a envolvercipherConfig
- Configuración del cifrado del envoltoriokey
- Clave de envolturajava.security.NoSuchAlgorithmException
- Cuando el algoritmo de cifrado indicado no está
soportado.java.io.IOException
- Cuando se produce algun error al codificar los datos.public byte[] createCMSEnvelopedData(byte[] content, java.security.KeyStore.PrivateKeyEntry ke, es.gob.afirma.core.ciphers.AOCipherConfig cipherConfig, java.security.cert.X509Certificate[] recipientsCerts, java.lang.Integer keySize) throws java.security.NoSuchAlgorithmException, java.security.cert.CertificateEncodingException, java.io.IOException, java.security.InvalidKeyException, javax.crypto.NoSuchPaddingException, java.security.InvalidAlgorithmParameterException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
content
- Contenido que se desea ensobrar.ke
- Clave privada del remitente (sólo si se quiere indicar
remitente).cipherConfig
- Configuración para el cifrado de datos.recipientsCerts
- Destinatarios del sobre electrónico.keySize
- Tamaño de la clave AES de cifradojava.security.NoSuchAlgorithmException
- Cuando el algoritmo de cifrado indicado no está
soportado.java.io.IOException
- Error en la escritura de datos.java.security.cert.CertificateEncodingException
- Cuando el certificado del remitente no es válido.javax.crypto.BadPaddingException
- Si hay problemas estableciendo el relleno de los datosjavax.crypto.IllegalBlockSizeException
- Si no cuadran los tamaños de bloque de los algoritmos usadosjava.security.InvalidAlgorithmParameterException
- Si no se soporta algún parámetro necesario
para algún algoritmojavax.crypto.NoSuchPaddingException
- Si no se soporta algún método de rellenojava.security.InvalidKeyException
- Si la clave proporcionada no es válidapublic byte[] createCMSSignedAndEnvelopedData(byte[] content, java.security.KeyStore.PrivateKeyEntry ke, es.gob.afirma.core.ciphers.AOCipherConfig cipherConfig, java.security.cert.X509Certificate[] recipientsCerts, java.lang.Integer keySize) throws java.security.cert.CertificateEncodingException, java.security.NoSuchAlgorithmException, java.io.IOException, java.security.InvalidKeyException, javax.crypto.NoSuchPaddingException, java.security.InvalidAlgorithmParameterException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException, java.security.SignatureException
content
- Contenido que se desea ensobrar.ke
- Clave privada del remitente.cipherConfig
- Configuración para el cifrado de datos.recipientsCerts
- Destinatarios del sobre electrónico.keySize
- Tamaño de la clave AES de cifradojava.security.NoSuchAlgorithmException
- Cuando el algoritmo de cifrado indicado no está soportado.java.io.IOException
- Cuando se produce un error en la escritura de datos.java.security.cert.CertificateEncodingException
- Cuando el certificado del remitente no es válido.java.security.SignatureException
- CUando ocuren problemas firmando el sobre digitaljavax.crypto.BadPaddingException
- Si hay problemas estableciendo el relleno de los datosjavax.crypto.IllegalBlockSizeException
- Si no cuadran los tamaños de bloque de los algoritmos usadosjava.security.InvalidAlgorithmParameterException
- Si no se soporta algún parámetro necesario
para algún algoritmojavax.crypto.NoSuchPaddingException
- Si no se soporta algún método de rellenojava.security.InvalidKeyException
- Si la clave proporcionada no es válidapublic byte[] createCMSAuthenticatedEnvelopedData(byte[] content, java.security.KeyStore.PrivateKeyEntry ke, es.gob.afirma.core.ciphers.AOCipherConfig cipherConfig, java.security.cert.X509Certificate[] recipientsCerts, java.lang.Integer keySize) throws java.security.cert.CertificateEncodingException, java.security.NoSuchAlgorithmException, java.io.IOException, java.security.InvalidKeyException, javax.crypto.NoSuchPaddingException, java.security.InvalidAlgorithmParameterException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
content
- Contenido que se desea ensobrar.ke
- Clave privada del remitente.cipherConfig
- Configuración para el cifrado de datos.recipientsCerts
- Destinatarios del sobre electrónico.keySize
- Tamaño de la clave AES de cifradojava.security.NoSuchAlgorithmException
- Cuando el algoritmo de cifrado indicado no está
soportado.java.io.IOException
- Error en la escritura de datos.java.security.cert.CertificateEncodingException
- Cuando el certificado del remitente no es válido.java.security.InvalidKeyException
- Si la clave proporcionada no es válidajavax.crypto.BadPaddingException
- Si hay problemas estableciendo el relleno de los datosjavax.crypto.IllegalBlockSizeException
- Si no cuadran los tamaños de bloque de los algoritmos usadosjava.security.InvalidAlgorithmParameterException
- Si no se soporta algún parámetro necesario
para algún algoritmojavax.crypto.NoSuchPaddingException
- Si no se soporta algún método de rellenopublic static byte[] addOriginator(byte[] envelop, java.security.KeyStore.PrivateKeyEntry ke) throws es.gob.afirma.core.AOException, java.io.IOException, java.security.cert.CertificateEncodingException
envelop
- Envoltorio original.ke
- Referencia a la clave privada del certificado del remitente.es.gob.afirma.core.AOException
- Cuando se produce un error al agregar el nuevo remitente.java.io.IOException
- Cuando ocurre algún error en la lectura de los datos.java.security.cert.CertificateEncodingException
- Cuando el certificado del remitente es inválidoes.gob.afirma.core.AOInvalidFormatException
- Tipo de envoltorio no soportado.public void setSignatureAlgorithm(java.lang.String algorithm)
algorithm
- Algoritmo de firma.public void setCipherKey(java.lang.String keyPass)
keyPass
- Clave en Base64 o contraseña de cifrado.public byte[] recoverData(byte[] cmsEnvelop, java.security.KeyStore.PrivateKeyEntry addresseePke) throws java.security.InvalidKeyException, es.gob.afirma.core.AOException, java.io.IOException, java.security.spec.InvalidKeySpecException, java.util.zip.DataFormatException
recoverData
in interface es.gob.afirma.core.envelopers.AOEnveloper
cmsEnvelop
- Envoltorio CMS.addresseePke
- Clave privada del destinatario que desea desensobrar.java.security.InvalidKeyException
- Cuando la clave de descifrado configurada no sea válida o pertenezca a un destinatario.es.gob.afirma.core.AOException
- Cuando se produce un error al desenvolver los datos.java.security.spec.InvalidKeySpecException
- Cuando ocurren problemas relacionados con la estructura interna de las clavesjava.util.zip.DataFormatException
- Si hay errores en el formato de datos esperados.java.io.IOException
public java.lang.String getProcessedEnvelopType()
public byte[] getSignerCert()