RAPDU ICard::transceive(const CAPDU &cmd) { debug_CAPDU("Outgoing", cmd); RAPDU rapdu(m_subSystem->transceive(cmd.asBuffer())); debug_RAPDU("Incoming", rapdu); return rapdu; }
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; }
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; }