Package es.gob.jmulticard.connection
Class ApduEncrypterDes
- java.lang.Object
-
- es.gob.jmulticard.connection.AbstractApduEncrypter
-
- es.gob.jmulticard.connection.ApduEncrypterDes
-
- Direct Known Subclasses:
ApduEncrypterDesMac8
public class ApduEncrypterDes extends AbstractApduEncrypter
Cifrador de APDU según CWA-14890 mediante 3DES y MAC de 4 octetos.
-
-
Field Summary
Fields Modifier and Type Field Description private static byte
MAC_LENGTH_4
Longitud de la MAC de las APDU cifradas.private static byte
TAG_MAC_TLV
Tag del TLV de código de autenticación de mensaje (MAC) de una APDU de respuesta.private static byte
TAG_SW_TLV
Tag del TLV de estado de respuesta de una APDU de respuesta.-
Fields inherited from class es.gob.jmulticard.connection.AbstractApduEncrypter
paddingLength, TAG_DATA_TLV
-
-
Constructor Summary
Constructors Constructor Description ApduEncrypterDes()
Constructor de la clase para operaciones de cifrado cifrado DES.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ResponseApdu
decryptResponseApdu(ResponseApdu responseApdu, byte[] keyCipher, byte[] ssc, byte[] kMac, CryptoHelper cryptoHelper)
Desencripta los datos de una APDU de respuesta protegida.protected byte[]
encryptData(byte[] data, byte[] key, byte[] ssc, CryptoHelper cryptoHelper)
Encripta los datos para una APDU cifrada.protected byte[]
generateMac(byte[] dataPadded, byte[] ssc, byte[] kMac, CryptoHelper cryptoHelper)
Aplica el algoritmo para la generación de la MAC del mensaje.protected int
getMacLength()
Devuelve la longitud de la MAC de las APDU cifradas.private void
verifyMac(byte[] verificableData, byte[] macTlvBytes, byte[] ssc, byte[] kMac, CryptoHelper cryptoHelper)
Comprueba que un código de verificación sea correcto con respecto a unos datos y el código de respuesta de una petición.-
Methods inherited from class es.gob.jmulticard.connection.AbstractApduEncrypter
addPadding7816, protectAPDU, removePadding7816
-
-
-
-
Field Detail
-
TAG_SW_TLV
private static final byte TAG_SW_TLV
Tag del TLV de estado de respuesta de una APDU de respuesta.- See Also:
- Constant Field Values
-
TAG_MAC_TLV
private static final byte TAG_MAC_TLV
Tag del TLV de código de autenticación de mensaje (MAC) de una APDU de respuesta.- See Also:
- Constant Field Values
-
MAC_LENGTH_4
private static final byte MAC_LENGTH_4
Longitud de la MAC de las APDU cifradas.- See Also:
- Constant Field Values
-
-
Method Detail
-
getMacLength
protected int getMacLength()
Devuelve la longitud de la MAC de las APDU cifradas.- Returns:
- Longitud de la MAC de las APDU cifradas.
-
encryptData
protected byte[] encryptData(byte[] data, byte[] key, byte[] ssc, CryptoHelper cryptoHelper) throws java.io.IOException
Description copied from class:AbstractApduEncrypter
Encripta los datos para una APDU cifrada.- Specified by:
encryptData
in classAbstractApduEncrypter
- Parameters:
data
- Datos de la APDU.key
- Clave de cifrado.ssc
- Contador de secuencia.cryptoHelper
- Clase con las funcionalidades de criptografía.- Returns:
- Datos enconcriptados.
- Throws:
java.io.IOException
- En cualquier error.
-
generateMac
protected byte[] generateMac(byte[] dataPadded, byte[] ssc, byte[] kMac, CryptoHelper cryptoHelper) throws java.io.IOException
Aplica el algoritmo para la generación de la MAC del mensaje.- Specified by:
generateMac
in classAbstractApduEncrypter
- Parameters:
dataPadded
- Datos sobre los que generar la MAC.ssc
- Contador de secuencia de la operación.kMac
- Clave Triple DES necesaria para la operación.cryptoHelper
- Manejador para la realización de las operaciones criptográficas.- Returns:
- Clave de autenticación de los datos.
- Throws:
java.io.IOException
- Si hay errores de entrada / salida.
-
decryptResponseApdu
public ResponseApdu decryptResponseApdu(ResponseApdu responseApdu, byte[] keyCipher, byte[] ssc, byte[] kMac, CryptoHelper cryptoHelper) throws java.io.IOException
Desencripta los datos de una APDU de respuesta protegida.- Specified by:
decryptResponseApdu
in classAbstractApduEncrypter
- Parameters:
responseApdu
- APDU de respuesta cifrada.keyCipher
- Clave para el descifrado de la respuesta.ssc
- Código de secuencia correspondiente a la respuesta.kMac
- Clave para la verificación de la respuesta.cryptoHelper
- Manejador para el desencriptado.- Returns:
- APDU con la respuesta descifrada.
- Throws:
java.io.IOException
- Cuando ocurre un error durante la desencriptación de los datos.
-
verifyMac
private void verifyMac(byte[] verificableData, byte[] macTlvBytes, byte[] ssc, byte[] kMac, CryptoHelper cryptoHelper)
Comprueba que un código de verificación sea correcto con respecto a unos datos y el código de respuesta de una petición.- Parameters:
verificableData
- Datos.macTlvBytes
- Código de verificación.ssc
- Código de secuencia.kMac
- Clave para la generación del MAC.cryptoHelper
- Manejador de operaciones criptográficas.
-
-