Class ApduEncrypterDes

    • 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.
    • 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 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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
    • Constructor Detail

      • ApduEncrypterDes

        public ApduEncrypterDes()
        Constructor de la clase para operaciones de cifrado cifrado DES.
    • 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 class AbstractApduEncrypter
        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 class AbstractApduEncrypter
        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 class AbstractApduEncrypter
        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.