Class SmartcardIoConnection

java.lang.Object
es.gob.jmulticard.connection.AbstractApduConnectionIso7816
es.gob.jmulticard.jse.smartcardio.SmartcardIoConnection
All Implemented Interfaces:
ApduConnection

public final class SmartcardIoConnection extends AbstractApduConnectionIso7816
Conexión con lector de tarjetas inteligentes implementado sobre JSR-268 SmartCard I/O.
  • Field Details

    • DEBUG

      private static final boolean DEBUG
      See Also:
    • MAX_APDU_SIZE

      private static final int MAX_APDU_SIZE
      Tamaño máximo de las APDU. Por encima de este tamaño, se hace automáticamente una envoltura en varias APDU.
      See Also:
    • SCARD_W_RESET_CARD

      private static final String SCARD_W_RESET_CARD
      Constante para la indicación de que se ha detectado un reinicio del canal con la tarjeta.
      See Also:
    • LOGGER

      private static final Logger LOGGER
    • terminalNumber

      private int terminalNumber
    • cardChannel

      private javax.smartcardio.CardChannel cardChannel
    • card

      private javax.smartcardio.Card card
    • exclusive

      private boolean exclusive
    • protocol

      private ApduConnectionProtocol protocol
  • Constructor Details

    • SmartcardIoConnection

      public SmartcardIoConnection()
  • Method Details

    • toString

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

      public void addCardConnectionListener(CardConnectionListener ccl)
      JSR-268 no soporta eventos de inserción o extracción.
      Parameters:
      ccl - Objeto al que se desea notificar los eventos de la conexión.
    • close

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

      public String getTerminalInfo(int terminal) throws ApduConnectionException
      Devuelve información sobre un terminal.
      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.
    • getTerminals

      public long[] getTerminals(boolean onlyWithCardPresent) throws ApduConnectionException
      Description copied from interface: ApduConnection
      Devuelve todos los lectores de tarjetas presentes en el sistema.
      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.
    • isOpen

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

      public void open() throws ApduConnectionException
      Description copied from interface: ApduConnection
      Abre la conexión con la tarjeta inteligente actualmente insertada en el lector.
      Throws:
      ApduConnectionException - Cuando ocurre cualquier problema abriendo la conexión.
      See Also:
    • removeCardConnectionListener

      public void removeCardConnectionListener(CardConnectionListener ccl)
      JSR-268 no soporta eventos de inserción o extracción.
      Parameters:
      ccl - Objeto al que ya no se desea notificar los eventos de la conexión.
    • reset

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

      public void setExclusiveUse(boolean ex)
      Establece si la conexión se debe abrir en modo exclusivo. Solo puede establecerse si la conexión aun no ha sido abierta.
      Parameters:
      ex - true para abrir la conexión en modo exclusivo, false para abrirla en modo no exclusivo.
    • setProtocol

      public void setProtocol(ApduConnectionProtocol p)
      Establece el protocolo de conexión con la tarjeta. Por defecto, si no se establece ninguno, se indica * para que sea el API subyancente el que detecte el apropiado.
      Parameters:
      p - Protocolo de conexión con la tarjeta.
    • setTerminal

      public void setTerminal(int terminalN)
      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.
      Parameters:
      terminalN - Número de terminal que se desea pase a ser el actual.
    • internalTransmit

      public ResponseApdu internalTransmit(byte[] command) throws ApduConnectionException
      Description copied from class: AbstractApduConnectionIso7816
      Transmite una APDU.
      Specified by:
      internalTransmit in class AbstractApduConnectionIso7816
      Parameters:
      command - Comando APDU a transmitir.
      Returns:
      APDU de respuesta.
      Throws:
      ApduConnectionException - Si hay cualquier problema durante el envío.
    • getProtocol

      public ApduConnectionProtocol getProtocol()
      Devuelve el protocolo de conexión con la tarjeta usado actualmente.
      Returns:
      Un objeto de tipo enumerado ConnectionProtocol.
    • isExclusiveUse

      public boolean isExclusiveUse()
      Indica si la conexión con la tarjeta se ha establecido en modo exclusivo o no.
      Returns:
      true si la conexión está establecida en modo exclusivo.
    • getSubConnection

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

      public int getMaxApduSize()
      Description copied from class: AbstractApduConnectionIso7816
      Obtiene el tamaño máximo de APDU que se puede enviar sin necesidad de hacer una envoltura.
      Specified by:
      getMaxApduSize in class AbstractApduConnectionIso7816
      Returns:
      Tamaño máximo (en octetos) de APDU que se puede enviar sin necesidad de hacer una envoltura.