public class AOCMSEnveloper extends java.lang.Object implements 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,
AOCipherConfig cipherConfig,
java.security.cert.X509Certificate[] recipientsCerts,
java.lang.Integer keySize)
Crea un envoltorio CMS de tipo AuthenticatedEnvelopedData.
|
byte[] |
createCMSEncryptedData(byte[] content,
AOCipherConfig cipherConfig,
java.security.Key key)
Crea un envoltorio CMS de tipo EncryptedData.
|
byte[] |
createCMSEnvelopedData(byte[] content,
java.security.KeyStore.PrivateKeyEntry ke,
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,
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,
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,
CipherConstants.AOCipherAlgorithm cipherAlgorithm,
java.lang.String dataType,
java.util.Properties extraParams)
Método para la generación de envolturas de datos.
|
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, CipherConstants.AOCipherAlgorithm cipherAlgorithm, java.lang.String dataType, java.util.Properties extraParams) throws AOException
envelop
in interface 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 digitalcipherAlgorithm
- Algoritmo utilizado para cifrarextraParams
- Parámetros adicionalesdataType
- OID del tipo de datos a encriptarAOException
- Cuando ocurre cualquier problema en el procesopublic byte[] encrypt(byte[] data, java.lang.String digestAlgorithm, java.lang.String key, CipherConstants.AOCipherAlgorithm cipherAlgorithm, java.lang.String dataType) throws AOException
encrypt
in interface 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 cifradosdataType
- OID del tipo de datos a encriptarAOException
- Cuando ocurre cualquier problema durante el procesopublic 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, 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, AOCipherConfig cipherConfig, java.security.cert.X509Certificate[] recipientsCerts, java.lang.Integer keySize) throws java.security.NoSuchAlgorithmException, java.security.cert.CertificateEncodingException, java.io.IOException, AOException, 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.AOException
- Cuando ocurre un error al generar el núcleo del envoltorio.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, AOCipherConfig cipherConfig, java.security.cert.X509Certificate[] recipientsCerts, java.lang.Integer keySize) throws java.security.cert.CertificateEncodingException, java.security.NoSuchAlgorithmException, java.io.IOException, AOException, 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.AOException
- Cuando ocurre un error al generar el núcleo del envoltorio.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, AOCipherConfig cipherConfig, java.security.cert.X509Certificate[] recipientsCerts, java.lang.Integer keySize) throws java.security.cert.CertificateEncodingException, java.security.NoSuchAlgorithmException, java.io.IOException, AOException, 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.AOException
- Cuando ocurre un error al generar el núcleo del envoltorio.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 AOException, java.io.IOException, java.security.cert.CertificateEncodingException
envelop
- Envoltorio original.ke
- Referencia a la clave privada del certificado del remitente.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álidoAOInvalidFormatException
- 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 base 64 o contraseña de cifrado.public byte[] recoverData(byte[] cmsEnvelop, java.security.KeyStore.PrivateKeyEntry addresseePke) throws java.security.InvalidKeyException, AOException, java.io.IOException, java.security.spec.InvalidKeySpecException
recoverData
in interface 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.AOException
- Cuando se produce un error durante al desenvolver los datos.java.security.spec.InvalidKeySpecException
- Cuando ocurren problemas relacionados con la estructura interna de las clavesjava.io.IOException
- Si hay problema de lectura / escritura de datos