Class AbstractIso7816FourCard
java.lang.Object
es.gob.jmulticard.card.AbstractSmartCard
es.gob.jmulticard.card.iso7816four.AbstractIso7816FourCard
- All Implemented Interfaces:
Card
- Direct Known Subclasses:
AbstractIso7816EightCard
,CardOS
,SmartCafePkcs15Applet
,StCard
,TuiR5
Tarjeta compatible ISO-7816-4.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Logger
Logger
por defecto.private static final int
Tamaño máximo de datos que se puede leer en una única APDU.private static final StatusWord
Se ha alcanzado prematuramente el final de fichero.private static final StatusWord
EF o DF no encontrado.private static final StatusWord
El offset sobrepasa el límite de tamaño del EF.private static final StatusWord
Condición de seguridad no satisfecha.Fields inherited from class es.gob.jmulticard.card.AbstractSmartCard
DEBUG
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractIso7816FourCard
(byte c, ApduConnection conn) Construye una tarjeta compatible ISO 7816-4. -
Method Summary
Modifier and TypeMethodDescriptionbyte[]
Lanza un desafío a la tarjeta para obtener un array de 8 bytes aleatorios.List
<byte[]> Lee todos los registros del binario actualmente seleccionado.private ResponseApdu
readBinary
(byte msbOffset, byte lsbOffset, byte readLength) Lee un contenido binario del fichero actualmente seleccionado.byte[]
readBinaryComplete
(int len) Lee por completo el contenido binario del fichero actualmente seleccionado.int
selectFileById
(byte[] id) Selecciona un fichero (DF o EF).byte[]
selectFileByIdAndRead
(byte[] id) Selecciona un fichero y lo lee por completo.int
selectFileByLocation
(Location location) Selecciona un fichero (DF o EF).byte[]
selectFileByLocationAndRead
(Location location) Selecciona un fichero y lo lee por completo.int
selectFileByName
(byte[] name) Selecciona un fichero por nombre.int
selectFileByName
(String name) Selecciona un fichero por nombre.protected abstract void
Selecciona el fichero maestro (directorio raíz de la tarjeta).void
setPublicKeyToVerification
(byte[] refPublicKey) Establece una clave pública para la la verificación posterior de un certificado emitido por otro al que pertenece esta clave.abstract void
verifyPin
(PasswordCallback pinPc) Verifica el PIN de la tarjeta.Methods inherited from class es.gob.jmulticard.card.AbstractSmartCard
getCardName, getCla, getConnection, sendArbitraryApdu, setConnection
-
Field Details
-
SW_UNSATISFIED_SECURITY_STATE
Condición de seguridad no satisfecha. -
SW_FILE_NOT_FOUND
EF o DF no encontrado. -
SW_EOF_REACHED
Se ha alcanzado prematuramente el final de fichero. -
SW_OFFSET_OUTSIDE_EF
El offset sobrepasa el límite de tamaño del EF. -
MAX_READ_CHUNK
private static final int MAX_READ_CHUNKTamaño máximo de datos que se puede leer en una única APDU.- See Also:
-
LOGGER
Logger
por defecto.
-
-
Constructor Details
-
AbstractIso7816FourCard
Construye una tarjeta compatible ISO 7816-4.- Parameters:
c
- Octeto de clase (CLA) de las APDU.conn
- Connexión con la tarjeta.
-
-
Method Details
-
readBinary
private ResponseApdu readBinary(byte msbOffset, byte lsbOffset, byte readLength) throws ApduConnectionException, RequiredSecurityStateNotSatisfiedException, OffsetOutsideEfException Lee un contenido binario del fichero actualmente seleccionado.- Parameters:
msbOffset
- Octeto más significativo del desplazamiento (offset) hasta el punto de inicio de la lectura desde el comienzo del fichero.lsbOffset
- Octeto menos significativo del desplazamiento (offset) hasta el punto de inicio de la lectura desde el comienzo del fichero.readLength
- Longitud de los datos a leer (en octetos).- Returns:
- APDU de respuesta.
- Throws:
ApduConnectionException
- Si hay problemas en el envío de la APDU.RequiredSecurityStateNotSatisfiedException
- Si la lectura requiere el cumplimiento de una condición de seguridad y esta no se ha satisfecho.OffsetOutsideEfException
- Si el desplazamiento indicado o el tamaño indicados para la lectura caen fuera de los límites del fichero.
-
readAllRecords
Lee todos los registros del binario actualmente seleccionado.- Returns:
- Lista de registros leidos del binario actualmente seleccionado.
- Throws:
ApduConnectionException
- Si hay problemas en el envío de la APDU.Iso7816FourCardException
- SI ocurren problemas durante la lectura de los registros.
-
readBinaryComplete
Lee por completo el contenido binario del fichero actualmente seleccionado.- Parameters:
len
- Longitud del fichero a leer.- Returns:
- APDU de respuesta.
- Throws:
ApduConnectionException
- Si hay problemas en el envío de la APDU.IOException
- Si hay problemas en el buffer de lectura.
-
selectFileByName
Selecciona un fichero por nombre.- Parameters:
name
- Nombre del fichero- Returns:
- Tamaño del fichero seleccionado.
- Throws:
ApduConnectionException
- Si ocurre algún problema durante la selecciónIso7816FourCardException
- Si el fichero no se puede seleccionar por cualquier otra causa
-
selectFileByName
public int selectFileByName(byte[] name) throws ApduConnectionException, FileNotFoundException, Iso7816FourCardException Selecciona un fichero por nombre.- Parameters:
name
- Nombre del fichero en hexadecimal- Returns:
- Tamaño del fichero seleccionado.
- Throws:
FileNotFoundException
- Si el fichero no existeApduConnectionException
- Si ocurre algún problema durante la selecciónIso7816FourCardException
- Si el fichero no se puede seleccionar por cualquier otra causa
-
selectFileById
Selecciona un fichero (DF o EF).- Parameters:
id
- Identificador del fichero a seleccionar.- Returns:
- Tamaño del fichero seleccionado.
- Throws:
ApduConnectionException
- Si hay problemas en el envío de la APDU.Iso7816FourCardException
- Si falla la selección de fichero.
-
selectFileByIdAndRead
Selecciona un fichero y lo lee por completo.- Parameters:
id
- Identificador del fichero a leer.- Returns:
- Contenido del fichero apuntado por la dirección
id
. - Throws:
ApduConnectionException
- Si hay problemas en el envío de la APDU.Iso7816FourCardException
- Si falla la selección de fichero.IOException
- Si hay problemas en el buffer de lectura.
-
selectFileByLocation
public int selectFileByLocation(Location location) throws ApduConnectionException, Iso7816FourCardException Selecciona un fichero (DF o EF).- Parameters:
location
- La ruta absoluta donde se encuentra el fichero a leer- Returns:
- Tamaño del fichero seleccionado
- Throws:
ApduConnectionException
- Si hay problemas en el envío de la APDUIso7816FourCardException
- Si falla la selección de fichero
-
selectFileByLocationAndRead
public byte[] selectFileByLocationAndRead(Location location) throws IOException, Iso7816FourCardException Selecciona un fichero y lo lee por completo.- Parameters:
location
- Ruta absoluta del fichero a leer.- Returns:
- Contenido del fichero apuntado por la ruta
location
. - Throws:
ApduConnectionException
- Si hay problemas en el envío de la APDU.Iso7816FourCardException
- Si falla la selección de fichero.IOException
- Si hay problemas en el buffer de lectura.
-
selectMasterFile
protected abstract void selectMasterFile() throws ApduConnectionException, FileNotFoundException, Iso7816FourCardExceptionSelecciona el fichero maestro (directorio raíz de la tarjeta).- Throws:
ApduConnectionException
- Si hay problemas en el envío de la APDU.FileNotFoundException
- Si no se encuentra el MF.Iso7816FourCardException
- Si no se puede seleccionar el fichero maestro por cualquier otra causa.
-
setPublicKeyToVerification
public void setPublicKeyToVerification(byte[] refPublicKey) throws SecureChannelException, ApduConnectionException Establece una clave pública para la la verificación posterior de un certificado emitido por otro al que pertenece esta clave.- Parameters:
refPublicKey
- Referencia a la clave pública para su carga.- Throws:
SecureChannelException
- Cuando ocurre un error durante la selección de la clave.ApduConnectionException
- Cuando ocurre un error en la comunicación con la tarjeta.
-
getChallenge
Lanza un desafío a la tarjeta para obtener un array de 8 bytes aleatorios.- Returns:
- Array de 8 bytes aleatorios.
- Throws:
ApduConnectionException
- Cuando ocurre un error en la comunicación con la tarjeta.
-
verifyPin
Verifica el PIN de la tarjeta. El método reintenta hasta que se introduce el PIN correctamente, se bloquea la tarjeta por exceso de intentos de introducción de PIN o se recibe una excepción (derivada deRuntimeException
o unaApduConnectionException
.- Parameters:
pinPc
- PIN de la tarjeta.- Throws:
ApduConnectionException
- Cuando ocurre un error en la comunicación con la tarjeta.PinException
- Si el PIN proporcionado en la PasswordCallback es incorrecto y no estaba habilitado el reintento automáticoAuthenticationModeLockedException
- Si está bloqueada la verificación de PIN (por ejemplo, por superar el número máximo de intentos).
-