示例#1
0
bool ICard::readFile(
	unsigned char sfid,
	size_t chunk_size,
	std::vector<unsigned char>& result)
{
	ReadBinary read = ReadBinary(0, sfid);
	read.setNe(chunk_size);
	RAPDU response = transceive(read);

	while (response.isOK() && response.getData().size() == chunk_size) {
		result.insert(result.end(), response.getData().begin(), response.getData().end());

		read = ReadBinary(result.size());
		read.setNe(chunk_size);
		response = transceive(read);
	}

	result.insert(result.end(), response.getData().begin(), response.getData().end());

	if (result.empty()) {
		return response.isOK();
	}

	return true;
}
示例#2
0
bool ICard::selectEF(
	unsigned short FID)
{
	SelectFile select(SelectFile::P1_SELECT_EF, SelectFile::P2_NO_RESPONSE, FID);
	RAPDU response = transceive(select);
	return response.isOK();
}
示例#3
0
bool ICard::selectMF(
	void)
{
	SelectFile select(SelectFile::P1_SELECT_FID, SelectFile::P2_NO_RESPONSE);
	RAPDU response = transceive(select);
	return response.isOK();
}
示例#4
0
bool ICard::readFile(
	std::vector<unsigned char>& result)
{
	ReadBinary read = ReadBinary();
	read.setNe(CAPDU::DATA_EXTENDED_MAX);
	RAPDU response = transceive(read);
	result = response.getData();
	return response.isOK();
}
示例#5
0
bool ICard::selectEF(
	unsigned short FID,
	std::vector<unsigned char>& fcp)
{
	SelectFile select(SelectFile::P1_SELECT_EF, SelectFile::P2_FCP_TEMPLATE, FID);
	select.setNe(CAPDU::DATA_SHORT_MAX);
	RAPDU response = transceive(select);
	fcp = response.getData();
	return response.isOK();
}