use of es.gob.jmulticard.apdu.iso7816four.ReadBinaryApduCommand in project jmulticard by ctt-gob-es.
the class Iso7816FourCard method readBinary.
/**
* Lee un contenido binario del fichero actualmente seleccionado.
* @param msbOffset Octeto más significativo del desplazamiento
* (<i>offset</i>) hasta el punto de inicio de la lectura desde
* el comienzo del fichero.
* @param lsbOffset Octeto menos significativo del desplazamiento (<i>offset</i>)
* hasta el punto de inicio de la lectura desde el comienzo del
* fichero.
* @param readLength Longitud de los datos a leer (en octetos).
* @return APDU de respuesta.
* @throws ApduConnectionException Si hay problemas en el envío de la APDU.
* @throws RequiredSecurityStateNotSatisfiedException Si la lectura requiere el cumplimiento
* de una condición de seguridad y esta no se ha satisfecho.
* @throws OffsetOutsideEfException Si el desplazamiento indicado o el tamaño indicados
* para la lectura caen fuera de los límites del fichero.
*/
private ResponseApdu readBinary(final byte msbOffset, final byte lsbOffset, final byte readLength) throws ApduConnectionException, RequiredSecurityStateNotSatisfiedException, OffsetOutsideEfException {
final CommandApdu apdu = new ReadBinaryApduCommand(getCla(), msbOffset, lsbOffset, readLength);
final ResponseApdu res = getConnection().transmit(apdu);
if (res.isOk()) {
return res;
}
if (OFFSET_OUTSIDE_EF.equals(res.getStatusWord())) {
throw new OffsetOutsideEfException(OFFSET_OUTSIDE_EF, apdu);
}
if (UNSATISFIED_SECURITY_STATE.equals(res.getStatusWord())) {
throw new RequiredSecurityStateNotSatisfiedException(res.getStatusWord());
}
if (EOF_REACHED.equals(res.getStatusWord())) {
// $NON-NLS-1$
LOGGER.warning("Se ha alcanzado el final de fichero antes de poder leer los octetos indicados");
return res;
}
// $NON-NLS-1$
throw new ApduConnectionException("Respuesta invalida en la lectura de binario con el codigo: " + res.getStatusWord());
}
Aggregations