use of es.gob.jmulticard.apdu.iso7816four.SelectFileByIdApduCommand in project jmulticard by ctt-gob-es.
the class Iso7816FourCard method selectFileById.
/**
* Selecciona un fichero (DF o EF).
* @param id Identificador del fichero a seleccionar.
* @return Tamaño del fichero seleccionado.
* @throws ApduConnectionException Si hay problemas en el envío de la APDU.
* @throws Iso7816FourCardException Si falla la selección de fichero.
*/
public int selectFileById(final byte[] id) throws ApduConnectionException, Iso7816FourCardException {
final CommandApdu selectCommand = new SelectFileByIdApduCommand(getCla(), id);
final ResponseApdu res = getConnection().transmit(selectCommand);
if (HexUtils.arrayEquals(res.getBytes(), new byte[] { (byte) 0x6a, (byte) 0x82 })) {
throw new FileNotFoundException(id);
}
final SelectFileApduResponse response = new SelectFileApduResponse(res);
if (response.isOk()) {
return response.getFileLength();
}
final StatusWord sw = response.getStatusWord();
if (sw.equals(new StatusWord((byte) 0x6A, (byte) 0x82))) {
throw new FileNotFoundException(id);
}
throw new Iso7816FourCardException(sw, selectCommand);
}
use of es.gob.jmulticard.apdu.iso7816four.SelectFileByIdApduCommand in project jmulticard by ctt-gob-es.
the class SmartCafePkcs15Applet method selectFileById.
/**
* Selecciona un fichero (DF o EF).
* @param id Identificador del fichero a seleccionar.
* @return Tamaño del fichero seleccionado.
* @throws ApduConnectionException Si hay problemas en el envío de la APDU.
* @throws Iso7816FourCardException Si falla la selección de fichero.
*/
@Override
public int selectFileById(final byte[] id) throws ApduConnectionException, Iso7816FourCardException {
final CommandApdu selectCommand = new SelectFileByIdApduCommand(getCla(), id);
final ResponseApdu res = getConnection().transmit(selectCommand);
if (HexUtils.arrayEquals(res.getBytes(), new byte[] { (byte) 0x6a, (byte) 0x82 })) {
throw new FileNotFoundException(id);
}
final SelectFileApduResponse response = new SelectFileApduResponse(res);
if (response.isOk()) {
return HexUtils.getUnsignedInt(new byte[] { response.getData()[4], response.getData()[5] }, // Offset
0);
}
final StatusWord sw = response.getStatusWord();
if (sw.equals(new StatusWord((byte) 0x6A, (byte) 0x82))) {
throw new FileNotFoundException(id);
}
throw new Iso7816FourCardException(sw, selectCommand);
}
Aggregations