ECARD_STATUS process_CA_Step_B(const RAPDU& rapdu) { if (rapdu.getSW() != RAPDU::ISO_SW_NORMAL) return EAC_CA_STEP_B_FAILED; return EAC_SUCCESS; }
void ICard::debug_RAPDU(const char *label, const RAPDU& rapdu) const { eCardCore_info(DEBUG_LEVEL_APDU, "%s%sR-APDU: SW=%04X Nr=%u", label, label ? " " : "", rapdu.getSW(), rapdu.getData().size()); if (!rapdu.getData().empty()) hexdump(DEBUG_LEVEL_APDU, NULL, DATA(rapdu.getData()), rapdu.getData().size()); }
ECARD_STATUS process_CA_Step_C(const RAPDU rapdu, std::vector<unsigned char>& GeneralAuthenticationResult) { if (rapdu.getSW() != RAPDU::ISO_SW_NORMAL) return EAC_CA_STEP_B_FAILED; GeneralAuthenticationResult = rapdu.getData(); return EAC_SUCCESS; }
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; }