Package es.gob.jmulticard.connection
Class ApduEncrypterDes
java.lang.Object
es.gob.jmulticard.connection.AbstractApduEncrypter
es.gob.jmulticard.connection.ApduEncrypterDes
- Direct Known Subclasses:
ApduEncrypterDesMac8
Cifrador de APDU según CWA-14890 mediante 3DES y MAC de 4 octetos.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final byte
Longitud de la MAC de las APDU cifradas.private static final byte
Tag del TLV de código de autenticación de mensaje (MAC) de una APDU de respuesta.private static final byte
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
ConstructorsConstructorDescriptionConstructor de la clase para operaciones de cifrado cifrado DES. -
Method Summary
Modifier and TypeMethodDescriptiondecryptResponseApdu
(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
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 Details
-
TAG_SW_TLV
private static final byte TAG_SW_TLVTag del TLV de estado de respuesta de una APDU de respuesta.- See Also:
-
TAG_MAC_TLV
private static final byte TAG_MAC_TLVTag del TLV de código de autenticación de mensaje (MAC) de una APDU de respuesta.- See Also:
-
MAC_LENGTH_4
private static final byte MAC_LENGTH_4Longitud de la MAC de las APDU cifradas.- See Also:
-
-
Constructor Details
-
ApduEncrypterDes
public ApduEncrypterDes()Constructor de la clase para operaciones de cifrado cifrado DES.
-
-
Method Details
-
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 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:
IOException
- En cualquier error.
-
generateMac
protected byte[] generateMac(byte[] dataPadded, byte[] ssc, byte[] kMac, CryptoHelper cryptoHelper) throws 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:
IOException
- Si hay errores de entrada / salida.
-
decryptResponseApdu
public ResponseApdu decryptResponseApdu(ResponseApdu responseApdu, byte[] keyCipher, byte[] ssc, byte[] kMac, CryptoHelper cryptoHelper) throws 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:
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.
-