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 Summary
Fields Modifier and Type Field Description private javax.smartcardio.Card
card
private javax.smartcardio.CardChannel
cardChannel
private static boolean
DEBUG
private boolean
exclusive
private static java.util.logging.Logger
LOGGER
private static int
MAX_APDU_SIZE
Tamaño máximo de las APDU.private ApduConnectionProtocol
protocol
private static java.lang.String
SCARD_W_RESET_CARD
Constante para la indicación de que se ha detectado un reinicio del canal con la tarjeta.private int
terminalNumber
-
Constructor Summary
Constructors Constructor Description SmartcardIoConnection()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addCardConnectionListener(CardConnectionListener ccl)
JSR-268 no soporta eventos de inserción o extracción.void
close()
Cierra la conexión con la tarjeta inteligente actualmente insertada en el lector.int
getMaxApduSize()
Obtiene el tamaño máximo de APDU que se puede enviar sin necesidad de hacer una envoltura.ApduConnectionProtocol
getProtocol()
Devuelve el protocolo de conexión con la tarjeta usado actualmente.ApduConnection
getSubConnection()
Recupera la conexión subyacente utilizada por la conexión.java.lang.String
getTerminalInfo(int terminal)
Devuelve información sobre un terminal.long[]
getTerminals(boolean onlyWithCardPresent)
Devuelve todos los lectores de tarjetas presentes en el sistema.ResponseApdu
internalTransmit(byte[] command)
Transmite una APDU.boolean
isExclusiveUse()
Indica si la conexión con la tarjeta se ha establecido en modo exclusivo o no.boolean
isOpen()
Indica si la conexión está abierta o no.void
open()
Abre la conexión con la tarjeta inteligente actualmente insertada en el lector.void
removeCardConnectionListener(CardConnectionListener ccl)
JSR-268 no soporta eventos de inserción o extracción.byte[]
reset()
Reinicializa la conexión con la tarjeta inteligente.void
setExclusiveUse(boolean ex)
Establece si la conexión se debe abrir en modo exclusivo.void
setProtocol(ApduConnectionProtocol p)
Establece el protocolo de conexión con la tarjeta.void
setTerminal(int terminalN)
Establece el lector de tarjetas que se usará para la conexión.java.lang.String
toString()
-
Methods inherited from class es.gob.jmulticard.connection.AbstractApduConnectionIso7816
transmit
-
-
-
-
Field Detail
-
DEBUG
private static final boolean DEBUG
- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
SCARD_W_RESET_CARD
private static final java.lang.String SCARD_W_RESET_CARD
Constante para la indicación de que se ha detectado un reinicio del canal con la tarjeta.- See Also:
- Constant Field Values
-
LOGGER
private static final java.util.logging.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
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.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:
ApduConnection.open()
-
getTerminalInfo
public java.lang.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:
ApduConnection.close()
-
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 classAbstractApduConnectionIso7816
- 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 classAbstractApduConnectionIso7816
- Returns:
- Tamaño máximo (en octetos) de APDU que se puede enviar sin necesidad de hacer una envoltura.
-
-