Example #1
0
RAPDU ICard::transceive(const CAPDU &cmd)
{
	debug_CAPDU("Outgoing", cmd);
	
	RAPDU rapdu(m_subSystem->transceive(cmd.asBuffer()));
	debug_RAPDU("Incoming", rapdu);

	return rapdu;
}
Example #2
0
std::vector<RAPDU>
ICard::get_rapdus(std::vector<std::vector<unsigned char> > buffers)
{
	std::vector<RAPDU> rapdus;

	for (std::vector<std::vector<unsigned char> >::const_iterator i = buffers.begin(); i < buffers.end(); ++i) {
		RAPDU rapdu(*i);
		debug_RAPDU("Incoming", rapdu);
		rapdus.push_back(rapdu);
	}

	return rapdus;
}
Example #3
0
RAPDU ePACard::removeSM(const RAPDU &sm_rapdu)
{
	std::vector<unsigned char> response;
	std::vector<unsigned char> sm_rdata;

	sm_rdata = sm_rapdu.getData();

	m_ssc++;

	if (!verifyResponse_AES(m_kMac, sm_rdata, m_ssc))
		throw WrongSM();

	response = decryptResponse_AES(m_kEnc, sm_rdata, m_ssc);
	/* TODO compare DO99 with SW */
	RAPDU rapdu(response, sm_rapdu.getSW());

	debug_RAPDU("Decrypted", rapdu);

	return rapdu;
}