Package es.gob.jmulticard
Class CryptoHelper
java.lang.Object
es.gob.jmulticard.CryptoHelper
- Direct Known Subclasses:
BcCryptoHelper
Funcionalidades criptográficas de utilidad que pueden variar entre
JSE/JME/Dalvik.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
Tipos de manejo de bloques para cifrado.static enum
Algoritmo de huella digital.static enum
Nombres de curva elíptica.static class
Utilidades para el establecimiento de un canal PACE (Password Authenticated Connection Establishment).static enum
Tipos de relleno para cifrados. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final byte
private static final byte
private static final byte
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic final byte[]
addPkcs1PaddingForPrivateKeyOperation
(byte[] inByteArray, int keySize) Añade relleno PKCS#1 para operaciones con clave privada.abstract byte[]
aesDecrypt
(byte[] data, byte[] iv, byte[] key, CryptoHelper.BlockMode blockMode, CryptoHelper.Padding padding) Desencripta datos mediante AES.abstract byte[]
aesEncrypt
(byte[] data, byte[] iv, byte[] key, CryptoHelper.BlockMode blockMode, CryptoHelper.Padding padding) Encripta datos mediante AES.abstract byte[]
desDecrypt
(byte[] data, byte[] key) Desencripta datos mediante DES (modo ECB sin relleno).abstract byte[]
desedeDecrypt
(byte[] data, byte[] key) Desencripta datos mediante Triple DES (modo CBC sin relleno) y con una semilla (IV) de 8 bytes establecidos a cero.abstract byte[]
desedeEncrypt
(byte[] data, byte[] key) Encripta datos mediante Triple DES (modo CBC sin relleno) y con una semilla (IV) de 8 bytes establecidos a cero.abstract byte[]
desEncrypt
(byte[] data, byte[] key) Encripta datos mediante DES (modo ECB sin relleno).abstract byte[]
digest
(CryptoHelper.DigestAlgorithm algorithm, byte[] data) Realiza una huella digital de los datos proporcionados.abstract byte[]
doAesCmac
(byte[] data, byte[] key) Realiza un CMAC con AES.abstract X509Certificate
generateCertificate
(byte[] encoded) Genera un certificado a partir de su codificación binaria.abstract X509Certificate
Genera un certificado a partir de un flujo hacia su codificación binaria.abstract KeyPair
generateEcKeyPair
(CryptoHelper.EcCurve curveName) Genera un par de claves de tipo curva elíptica.abstract byte[]
generateRandomBytes
(int numBytes) Genera contenido aleatorio en un array de bytes.abstract byte[]
getCmsSignatureSignedContent
(byte[] signedDataBytes) Obtiene el contenido firmado de una firma CMS/PKCS#7.abstract AlgorithmParameterSpec
getEcPoint
(byte[] nonceS, byte[] sharedSecretH, CryptoHelper.EcCurve curveName) Obtiene un punto en una curva elíptica.abstract CryptoHelper.PaceChannelHelper
Obtiene las utilidades para el establecimiento de un canal PACE (Password Authenticated Connection Establishment).abstract RSAPublicKey
Obtiene una clave pública de un certificado.abstract byte[]
rsaDecrypt
(byte[] cipheredData, RSAKey key) Desencripta datos mediante RSA.abstract byte[]
rsaEncrypt
(byte[] data, RSAKey key) Encripta datos mediante RSA.abstract X509Certificate[]
validateCmsSignature
(byte[] signedDataBytes) Valida una firma CMS/PKCS#7.
-
Field Details
-
PKCS1_BLOCK_TYPE
private static final byte PKCS1_BLOCK_TYPE- See Also:
-
PKCS1_FILL
private static final byte PKCS1_FILL- See Also:
-
PKCS1_DELIMIT
private static final byte PKCS1_DELIMIT- See Also:
-
-
Constructor Details
-
CryptoHelper
public CryptoHelper()
-
-
Method Details
-
addPkcs1PaddingForPrivateKeyOperation
public static final byte[] addPkcs1PaddingForPrivateKeyOperation(byte[] inByteArray, int keySize) throws IOException Añade relleno PKCS#1 para operaciones con clave privada.- Parameters:
inByteArray
- Datos a los que se quiere añadir relleno PKCS#1.keySize
- Tamaño de la clave privada que operará posteriormente con estos datos con relleno.- Returns:
- Datos con el relleno PKCS#1 añadido.
- Throws:
IOException
- En caso de error el el tratamiento de datos.
-
digest
public abstract byte[] digest(CryptoHelper.DigestAlgorithm algorithm, byte[] data) throws IOException Realiza una huella digital de los datos proporcionados.- Parameters:
algorithm
- Algoritmo de huella digital que debe utilizarse.data
- Datos de entrada.- Returns:
- Huella digital de los datos.
- Throws:
IOException
- Si ocurre algún problema generando la huella digital.
-
desedeEncrypt
Encripta datos mediante Triple DES (modo CBC sin relleno) y con una semilla (IV) de 8 bytes establecidos a cero. Si se le indica una clave de 24 bytes, la utilizaráa tal cual. Si se le indica una clave de 16 bytes, duplicará los 8 primeros y los agregará al final para obtener una de 24.- Parameters:
data
- Datos a encriptar.key
- Clave 3DES de cifrado.- Returns:
- Datos cifrados.
- Throws:
IOException
- Si ocurre algún problema durante el encriptado.
-
desedeDecrypt
Desencripta datos mediante Triple DES (modo CBC sin relleno) y con una semilla (IV) de 8 bytes establecidos a cero. Si se le indica una clave de 24 bytes, la utilizaráa tal cual. Si se le indica una clave de 16 bytes, duplicará los 8 primeros y los agregará al final para obtener una de 24.- Parameters:
data
- Datos a desencriptar.key
- Clave 3DES de descifrado.- Returns:
- Datos descifrados.
- Throws:
IOException
- Si ocurre algún problema durante el desencriptado.
-
desEncrypt
Encripta datos mediante DES (modo ECB sin relleno).- Parameters:
data
- Datos a encriptar.key
- Clave DES de cifrado.- Returns:
- Datos cifrados.
- Throws:
IOException
- Si ocurre algún problema durante el encriptado.
-
desDecrypt
Desencripta datos mediante DES (modo ECB sin relleno).- Parameters:
data
- Datos a desencriptar.key
- Clave DES de descifrado.- Returns:
- Datos descifrados.
- Throws:
IOException
- Si ocurre algún problema durante el desencriptado.
-
aesDecrypt
public abstract byte[] aesDecrypt(byte[] data, byte[] iv, byte[] key, CryptoHelper.BlockMode blockMode, CryptoHelper.Padding padding) throws IOException Desencripta datos mediante AES.- Parameters:
data
- Datos a encriptar.iv
- Vector de inicialización. Si se proporcionanull
se usará un vector con valores aleatorios.key
- Clave AES de cifrado.blockMode
- Modo de gestión de bloques.padding
- Relleno a usar en los datos de entrada.- Returns:
- Datos cifrados.
- Throws:
IOException
- Si ocurre algún problema durante el encriptado.
-
aesEncrypt
public abstract byte[] aesEncrypt(byte[] data, byte[] iv, byte[] key, CryptoHelper.BlockMode blockMode, CryptoHelper.Padding padding) throws IOException Encripta datos mediante AES.- Parameters:
data
- Datos a encriptar.iv
- Vector de inicialización. Si se proporcionanull
se usará un vector con valores aleatorios.key
- Clave AES de cifrado.blockMode
- Modo de gestión de bloques.padding
- Relleno a usar en los datos de entrada.- Returns:
- Datos cifrados.
- Throws:
IOException
- Si ocurre algún problema durante el encriptado.
-
rsaDecrypt
Desencripta datos mediante RSA.- Parameters:
cipheredData
- Datos a desencriptar.key
- Clava RSA de descifrado.- Returns:
- Datos descifrados.
- Throws:
IOException
- Si ocurre algún problema durante el desencriptado.
-
rsaEncrypt
Encripta datos mediante RSA.- Parameters:
data
- Datos a encriptar.key
- Clava RSA de cifrado.- Returns:
- Datos encriptados.
- Throws:
IOException
- Si ocurre algún problema durante el encriptado.
-
generateRandomBytes
Genera contenido aleatorio en un array de bytes.- Parameters:
numBytes
- Número de bytes aleatorios que generar.- Returns:
- Array de bytes aleatorios.
- Throws:
IOException
- Si ocurre algún problema durante la generación del aleatorio.
-
generateEcKeyPair
public abstract KeyPair generateEcKeyPair(CryptoHelper.EcCurve curveName) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException Genera un par de claves de tipo curva elíptica.- Parameters:
curveName
- Tipo de curva elíptica a utilizar.- Returns:
- Par de claves generadas.
- Throws:
NoSuchAlgorithmException
- Si el sistema no soporta la generación de curvas elípticas.InvalidAlgorithmParameterException
- Si el sistema no soporta el tipo de curva elíptica indicada.
-
doAesCmac
public abstract byte[] doAesCmac(byte[] data, byte[] key) throws NoSuchAlgorithmException, InvalidKeyException Realiza un CMAC con AES.- Parameters:
data
- Datos (deben estar ya con el relleno adecuado).key
- Clave AES.- Returns:
- CMAC.
- Throws:
NoSuchAlgorithmException
- Si no se encuentra un proveedor que permita realizar CMAC con AES.InvalidKeyException
- Si la clave proporcionada no es una clave AES válida.
-
getEcPoint
public abstract AlgorithmParameterSpec getEcPoint(byte[] nonceS, byte[] sharedSecretH, CryptoHelper.EcCurve curveName) Obtiene un punto en una curva elíptica.- Parameters:
nonceS
- Aleatorio de un solo uso.sharedSecretH
- Secreto compartido.curveName
- Nombre de la curva.- Returns:
- Punto encapsulado.
-
getCmsSignatureSignedContent
Obtiene el contenido firmado de una firma CMS/PKCS#7.- Parameters:
signedDataBytes
- Firma CMS/PKCS#7.- Returns:
- Contenido firmado de una firma CMS/PKCS#7.
- Throws:
IOException
- Si los datos proporcionados no son una firma CMS/PKCS#7 bien formada.
-
validateCmsSignature
public abstract X509Certificate[] validateCmsSignature(byte[] signedDataBytes) throws SignatureException, IOException, CertificateException Valida una firma CMS/PKCS#7. No comprueba la validez de los certificados de firma.- Parameters:
signedDataBytes
- Firma CMS/PKCS#7.- Returns:
- Cadena de certificados del firmante (para validación externa).
- Throws:
SignatureException
- Si la firma es inválida o está mal formada.IOException
- Si los datos proporcionados no son una firma CMS/PKCS#7 bien formada.CertificateException
- Si hay problemas relacionados con los certificados de firma.
-
generateCertificate
Genera un certificado a partir de su codificación binaria.- Parameters:
encoded
- Codificación binaria del certificado.- Returns:
- Certificado.
- Throws:
CertificateException
- Si la codificación binaria no correspondía a un certificado.
-
generateCertificate
Genera un certificado a partir de un flujo hacia su codificación binaria.- Parameters:
is
- Flujo de lectura hacia la Codificación binaria del certificado.- Returns:
- Certificado.
- Throws:
CertificateException
- Si la codificación binaria no correspondía a un certificado o no se pudo leer del flujo de entrada.
-
getRsaPublicKey
Obtiene una clave pública de un certificado. La razón de tener este método en vez de invocar directamente alinvalid input: '<'getPublicKey()
del certificado es evitar problemas por la interpretaci&oaccute;n del signo delBigInteger
en ciertos entornos (como J2Obc).- Parameters:
cert
- Certificado de origen.- Returns:
- Clave pública RSA del certificado.
-
getPaceChannelHelper
Obtiene las utilidades para el establecimiento de un canal PACE (Password Authenticated Connection Establishment).- Returns:
- Utilidades para el establecimiento de un canal PACE
-