17#include "IllegalArgumentException.h"
31using namespace keyple::core::util;
34const std::map<const int, const std::shared_ptr<StatusProperties>>
35 CmdCardChangeKey::STATUS_TABLE = initStatusTable();
38 const uint8_t keyIndex,
39 const std::vector<uint8_t>& cryptogram)
42 const uint8_t cla = calypsoCard->getCardClass().getValue();
43 const uint8_t p1 = 0x00;
47 std::make_shared<ApduRequestAdapter>(
56const std::map<const int, const std::shared_ptr<StatusProperties>>
57 CmdCardChangeKey::initStatusTable()
59 std::map<const int, const std::shared_ptr<StatusProperties>> m =
63 std::make_shared<StatusProperties>(
"Lc value not supported (not 04h, 10h, 18h, 20h).",
66 std::make_shared<StatusProperties>(
"Transaction Counter is 0.",
67 typeid(CardTerminatedException))});
69 std::make_shared<StatusProperties>(
"Security conditions not fulfilled (Get " \
70 "Challenge not done: challenge unavailable).",
71 typeid(CardSecurityContextException))});
73 std::make_shared<StatusProperties>(
"Access forbidden (a session is open or DF is " \
75 typeid(CardAccessForbiddenException))});
77 std::make_shared<StatusProperties>(
"Incorrect Cryptogram.",
78 typeid(CardSecurityDataException))});
80 std::make_shared<StatusProperties>(
"Decrypted message incorrect (key algorithm not " \
81 "supported, incorrect padding, etc.).",
82 typeid(CardSecurityDataException))});
84 std::make_shared<StatusProperties>(
"Lc not compatible with P2.",
85 typeid(CardIllegalParameterException))});
87 std::make_shared<StatusProperties>(
"Incorrect P1, P2.",
88 typeid(CardIllegalParameterException))});
93const std::map<const int, const std::shared_ptr<StatusProperties>>&
static const std::map< const int, const std::shared_ptr< StatusProperties > > STATUS_TABLE
virtual void setApduRequest(const std::shared_ptr< ApduRequestAdapter > apduRequest) final
static const CalypsoCardCommand CHANGE_KEY
uint8_t getInstructionByte() const
CmdCardChangeKey(const std::shared_ptr< CalypsoCardAdapter > calypsoCard, const uint8_t keyIndex, const std::vector< uint8_t > &cryptogram)
bool isSessionBufferUsed() const override
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override