Class Cwa14890OneV1Connection

java.lang.Object
es.gob.jmulticard.connection.cwa14890.Cwa14890OneV1Connection
All Implemented Interfaces:
ApduConnection, Cwa14890Connection
Direct Known Subclasses:
Cwa14890OneV2Connection

public class Cwa14890OneV1Connection extends Object implements Cwa14890Connection
Utilidad para el establecimiento y control del canal seguro CWA-14890 con cifrado DES y MAC de cuatro octetos.
Author:
Carlos Gamuci, Tomás García-Merás.
  • Field Details

    • cryptoHelper

      protected final transient CryptoHelper cryptoHelper
      Utilidad para la ejecución de funciones criptográficas.
    • subConnection

      protected transient ApduConnection subConnection
      Conexión subyacente para el envío de APDUs.
    • openState

      protected transient boolean openState
      Indica el estado de la conexión.
    • apduEncrypter

      protected final transient AbstractApduEncrypter apduEncrypter
      Clase de utilidad para encriptar las APDU.
  • Constructor Details

    • Cwa14890OneV1Connection

      public Cwa14890OneV1Connection(ApduConnection connection, CryptoHelper cryptoHlpr)
      Crea el canal seguro CWA-14890 para la comunicación de la tarjeta. Es necesario abrir el canal asociándolo a una conexión para poder trasmitir APDUs. Si no se indica una conexión se utilizaráa la conexión implícita de la tarjeta indicada.
      Parameters:
      connection - Conexión sobre la cual montar el canal seguro.
      cryptoHlpr - Motor de operaciones criptográficas.
    • Cwa14890OneV1Connection

      public Cwa14890OneV1Connection(Cwa14890Card connectedCard, ApduConnection connection, CryptoHelper cryptoHlpr, Cwa14890PublicConstants cwaConsts, Cwa14890PrivateConstants cwaPrivConsts)
      Crea el canal seguro CWA-14890 para la comunicación de la tarjeta. Es necesario abrir el canal asociándolo a una conexión para poder trasmitir APDUs. Si no se indica una conexión se utilizaráa la conexión implícita de la tarjeta indicada.
      Parameters:
      connectedCard - Tarjeta con la funcionalidad CWA-14890.
      connection - Conexión sobre la cual montar el canal seguro.
      cryptoHlpr - Motor de operaciones criptográficas.
      cwaConsts - Clase de claves públicas CWA-14890.
      cwaPrivConsts - Clase de claves privadas CWA-14890.
  • Method Details

    • instantiateApduEncrypter

      protected AbstractApduEncrypter instantiateApduEncrypter()
      Obtiene la clase de utilidad para encriptar las APDU.
      Returns:
      Clase de utilidad para encriptar las APDU.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • open

      public void open() throws ApduConnectionException
      Abre el canal seguro con la tarjeta. La conexión se reiniciará previamente a la apertura del canal.
      Specified by:
      open in interface ApduConnection
      Throws:
      ApduConnectionException - Cuando ocurre cualquier problema abriendo la conexión.
      See Also:
    • internalAuthGetInternalAuthenticateMessage

      public static byte[] internalAuthGetInternalAuthenticateMessage(Cwa14890Card card, Cwa14890PublicConstants pubConsts, byte[] randomIfd) throws ApduConnectionException
      Solicita a la tarjeta un mensaje firmado de autenticación interna.
      Parameters:
      card - Tarjeta que se desea autenticar.
      pubConsts - Constantes públicas para la apertura de canal CWA-14890.
      randomIfd - Aleatorio del desafío del terminal.
      Returns:
      Mensaje de autenticación interna firmado por la tarjeta con su clave privada de componente.
      Throws:
      ApduConnectionException - Si hay cualquier error durante el proceso.
    • internalAuthValidateInternalAuthenticateMessage

      public static byte[] internalAuthValidateInternalAuthenticateMessage(byte[] chrCCvIfd, byte[] sigMinCiphered, byte[] randomIfd, RSAPrivateKey ifdPrivateKey, int ifdKeyLength, Cwa14890PrivateConstants privConsts, Cwa14890PublicConstants pubConsts, RSAPublicKey iccPublicKey, CryptoHelper cryptoHelper) throws IOException
      Valida un mensaje de autenticación interna generado por una tarjeta.
      Parameters:
      chrCCvIfd - CHR de la clave pública del certificado de terminal.
      sigMinCiphered - Mensaje de autenticación generado por la tarjeta.
      randomIfd - Aleatorio del desafío del terminal.
      ifdPrivateKey - Clave privada del certificado de terminal.
      ifdKeyLength - Longitud, en octetos, de las claves RSA del certificado de componente del terminal.
      privConsts - Constantes privadas para la apertura de canal CWA-14890.
      pubConsts - Constantes públicas para la apertura de canal CWA-14890.
      iccPublicKey - Clave pública del certificado de componente.
      cryptoHelper - Utilidad para la ejecución de funciones criptográficas.
      Returns:
      Kicc para el cifrado de APDUs con esta tarjeta.
      Throws:
      IOException - Si el mensaje no es válido o no se ha podido validar.
    • close

      public void close() throws ApduConnectionException
      Description copied from interface: ApduConnection
      Cierra la conexión con la tarjeta inteligente actualmente insertada en el lector.
      Specified by:
      close in interface ApduConnection
      Throws:
      ApduConnectionException - Cuando ocurre cualquier problema cerrando la conexión.
      See Also:
    • transmit

      public ResponseApdu transmit(CommandApdu command) throws ApduConnectionException
      Description copied from interface: ApduConnection
      Envía un comando APDU a la tarjeta inteligente.
      Specified by:
      transmit in interface ApduConnection
      Parameters:
      command - APDU que se desea enviar a la tarjeta.
      Returns:
      APDU de respuesta de la tarjeta al envío.
      Throws:
      ApduConnectionException - Cuando ocurre cualquier problema con la conexión transmitiendo la APDU.
    • reset

      public byte[] reset() throws ApduConnectionException
      Description copied from interface: ApduConnection
      Reinicializa la conexión con la tarjeta inteligente.
      Specified by:
      reset in interface ApduConnection
      Returns:
      Respuesta al reset (ATR) de la tarjeta.
      Throws:
      ApduConnectionException - Cuando ocurre cualquier problema reinicializando la conexión.
    • addCardConnectionListener

      public void addCardConnectionListener(CardConnectionListener ccl)
      Description copied from interface: ApduConnection
      Añade un objeto al que se notificará cuando existan eventos en la conexión. Solo se notificarán las inserciones y las extracciones cuando la implementación subyacente lo soporte.
      Specified by:
      addCardConnectionListener in interface ApduConnection
      Parameters:
      ccl - Objeto al que se desea notificar los eventos de la conexión.
    • removeCardConnectionListener

      public void removeCardConnectionListener(CardConnectionListener ccl)
      Description copied from interface: ApduConnection
      Indica que ya no se desea notificar a un objeto cuando existan eventos en la conexión.
      Specified by:
      removeCardConnectionListener in interface ApduConnection
      Parameters:
      ccl - Objeto al que ya no se desea notificar los eventos de la conexión.
    • getTerminals

      public long[] getTerminals(boolean onlyWithCardPresent) throws ApduConnectionException
      Description copied from interface: ApduConnection
      Devuelve todos los lectores de tarjetas presentes en el sistema.
      Specified by:
      getTerminals in interface ApduConnection
      Parameters:
      onlyWithCardPresent - Para indicar que sólo devuelva lectores que tengan una tarjeta insertada.
      Returns:
      Una lista con los identificadores de lectores de tarjetas conectados.
      Throws:
      ApduConnectionException - Cuando ocurran problemas en la conexión con los lectores.
    • getTerminalInfo

      public String getTerminalInfo(int terminal) throws ApduConnectionException
      Description copied from interface: ApduConnection
      Devuelve información sobre un terminal.
      Specified by:
      getTerminalInfo in interface ApduConnection
      Parameters:
      terminal - Número de terminal que se desea obtener información.
      Returns:
      Una descripción del terminal especificado.
      Throws:
      ApduConnectionException - Cuando ocurren problemas en la conexión con los lectores.
    • setTerminal

      public void setTerminal(int t) throws ApduConnectionException
      Description copied from interface: ApduConnection
      Establece el lector de tarjetas que se usará para la conexión. Si se cambia el terminal estando la conexión ya abierta, se intentará reabrirla con el nuevo terminal.
      Specified by:
      setTerminal in interface ApduConnection
      Parameters:
      t - Número de terminal que se desea pase a ser el actual.
      Throws:
      ApduConnectionException - Cuando se especifica un número de terminal no válido.
    • isOpen

      public boolean isOpen()
      Description copied from interface: ApduConnection
      Indica si la conexión está abierta o no.
      Specified by:
      isOpen in interface ApduConnection
      Returns:
      true si la conexión esta abierta, false si está cerrada.
    • getSubConnection

      public ApduConnection getSubConnection()
      Description copied from interface: ApduConnection
      Recupera la conexión subyacente utilizada por la conexión.
      Specified by:
      getSubConnection in interface ApduConnection
      Returns:
      Conexión subyacente con la tarjeta o null si esta conexión es ya la de más bajo nivel.
    • setProtocol

      public void setProtocol(ApduConnectionProtocol p)
      Description copied from interface: ApduConnection
      Establece el Protocolo de conexión con la tarjeta.
      Specified by:
      setProtocol in interface ApduConnection
      Parameters:
      p - Protocolo de conexión con la tarjeta.
    • getKenc

      public byte[] getKenc()
      Description copied from interface: Cwa14890Connection
      Obtiene la clave para encriptar y desencriptar criptogramas.
      Specified by:
      getKenc in interface Cwa14890Connection
      Returns:
      Clave para encriptar y desencriptar criptogramas.
    • getKmac

      public byte[] getKmac()
      Description copied from interface: Cwa14890Connection
      Obtiene la clave para calcular y verificar checksums.
      Specified by:
      getKmac in interface Cwa14890Connection
      Returns:
      Clave para calcular y verificar checksums.
    • getSsc

      public byte[] getSsc()
      Description copied from interface: Cwa14890Connection
      Obtiene el contador de secuencia.
      Specified by:
      getSsc in interface Cwa14890Connection
      Returns:
      Contador de secuencia.