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 = calypsoCardClass.
getValue();
46 const uint8_t p1 = 0x00;
47 const uint8_t p2 = 0xFF;
50 std::make_shared<ApduRequestAdapter>(
59const std::map<const int, const std::shared_ptr<StatusProperties>>
60 CmdCardChangePin::initStatusTable()
62 std::map<const int, const std::shared_ptr<StatusProperties>> m =
66 std::make_shared<StatusProperties>(
"Lc value not supported (not 04h, 10h, 18h, 20h).",
69 std::make_shared<StatusProperties>(
"Transaction Counter is 0.",
70 typeid(CardTerminatedException))});
72 std::make_shared<StatusProperties>(
"Security conditions not fulfilled (Get " \
73 "Challenge not done: challenge unavailable).",
74 typeid(CardSecurityContextException))});
76 std::make_shared<StatusProperties>(
"Access forbidden (a session is open or DF is " \
78 typeid(CardAccessForbiddenException))});
80 std::make_shared<StatusProperties>(
"Incorrect Cryptogram.",
81 typeid(CardSecurityDataException))});
83 std::make_shared<StatusProperties>(
"Decrypted message incorrect (key algorithm not " \
84 "supported, incorrect padding, etc.).",
85 typeid(CardSecurityDataException))});
87 std::make_shared<StatusProperties>(
"Lc not compatible with P2.",
88 typeid(CardIllegalParameterException))});
90 std::make_shared<StatusProperties>(
"Incorrect P1, P2.",
91 typeid(CardIllegalParameterException))});
96const 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
CmdCardChangePin(const CalypsoCardClass calypsoCardClass, const std::vector< uint8_t > &newPinData)
bool isSessionBufferUsed() const override
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override