protected static String readString(byte[] response) { try { DataInputStream din = new DataInputStream(new ByteArrayInputStream(response)); int version = din.readInt(); if(version == VERSION) { int status = din.readInt(); if(status == STATUS_OK) { return din.readUTF(); } else { throw new AcrReaderException(din.readUTF()); } } else { throw new IllegalArgumentException("Unexpected version " + version); } } catch (IOException e) { Log.d(TAG, "Problem reading string length " + response.length + ": " + toHexString(response)); throw new AcrReaderException(e); } }
protected static byte[] readByteArray(byte[] response) { try { DataInputStream din = new DataInputStream(new ByteArrayInputStream(response)); int version = din.readInt(); if(version == VERSION) { int status = din.readInt(); if(status == STATUS_OK) { int length = din.readInt(); byte[] array = new byte[length]; din.readFully(array); return array; } else { throw new AcrReaderException(din.readUTF()); } } else { throw new IllegalArgumentException("Unexpected version " + version); } } catch (IOException e) { Log.d(TAG, "Problem reading string length " + response.length + ": " + toHexString(response)); throw new AcrReaderException(e); } } }