17#include "IllegalArgumentException.h"
31using namespace keyple::core::util;
34const std::map<const int, const std::shared_ptr<StatusProperties>>
35 CmdCardChangePin::STATUS_TABLE = initStatusTable();
38 const std::vector<uint8_t>& newPinData)
41 if (newPinData.empty() || (newPinData.size() != 0x04 && newPinData.size() != 0x10)) {
42 throw IllegalArgumentException(
"Bad PIN data length.");
45 const uint8_t cla = calypsoCard->getCardClass().getValue();
46 const uint8_t p1 = 0x00;
47 const uint8_t p2 = 0xFF;
51 std::make_shared<ApduRequestAdapter>(
60const std::map<const int, const std::shared_ptr<StatusProperties>>
61 CmdCardChangePin::initStatusTable()
63 std::map<const int, const std::shared_ptr<StatusProperties>> m =
67 std::make_shared<StatusProperties>(
"Lc value not supported (not 04h, 10h, 18h, 20h).",
70 std::make_shared<StatusProperties>(
"Transaction Counter is 0.",
71 typeid(CardTerminatedException))});
73 std::make_shared<StatusProperties>(
"Security conditions not fulfilled (Get " \
74 "Challenge not done: challenge unavailable).",
75 typeid(CardSecurityContextException))});
77 std::make_shared<StatusProperties>(
"Access forbidden (a session is open or DF is " \
79 typeid(CardAccessForbiddenException))});
81 std::make_shared<StatusProperties>(
"Incorrect Cryptogram.",
82 typeid(CardSecurityDataException))});
84 std::make_shared<StatusProperties>(
"Decrypted message incorrect (key algorithm not " \
85 "supported, incorrect padding, etc.).",
86 typeid(CardSecurityDataException))});
88 std::make_shared<StatusProperties>(
"Lc not compatible with P2.",
89 typeid(CardIllegalParameterException))});
91 std::make_shared<StatusProperties>(
"Incorrect P1, P2.",
92 typeid(CardIllegalParameterException))});
97const 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_PIN
uint8_t getInstructionByte() const
bool isSessionBufferUsed() const override
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
CmdCardChangePin(const std::shared_ptr< CalypsoCardAdapter > calypsoCard, const std::vector< uint8_t > &newPinData)