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 Details

    • TAG_SW_TLV

      private static final byte TAG_SW_TLV
      Tag del TLV de estado de respuesta de una APDU de respuesta.
      See Also:
    • 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:
    • MAC_LENGTH_4

      private static final byte MAC_LENGTH_4
      Longitud 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 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:
      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 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:
      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 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:
      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.