31using namespace keyple::core::util;
34const std::map<const int, const std::shared_ptr<StatusProperties>>
35 CmdCardUpdateRecord::STATUS_TABLE = initStatusTable();
39 const uint8_t recordNumber,
40 const std::vector<uint8_t>& newRecordData)
43 mRecordNumber(recordNumber),
46 const uint8_t cla = calypsoCardClass.
getValue();
47 const uint8_t p2 = (sfi == 0) ? 0x04 : sfi * 8 + 4;
50 std::make_shared<ApduRequestAdapter>(
58 std::stringstream extraInfo;
59 extraInfo <<
"SFI:" << sfi <<
"h, "
60 <<
"REC:" << recordNumber;
85const std::map<const int, const std::shared_ptr<StatusProperties>>
86 CmdCardUpdateRecord::initStatusTable()
88 std::map<const int, const std::shared_ptr<StatusProperties>> m =
92 std::make_shared<StatusProperties>(
"Too many modifications in session.",
95 std::make_shared<StatusProperties>(
"Lc value not supported.",
96 typeid(CardDataAccessException))});
98 std::make_shared<StatusProperties>(
"Command forbidden on cyclic files when the " \
99 "record exists and is not record 01h and on " \
101 typeid(CardDataAccessException))});
103 std::make_shared<StatusProperties>(
"Security conditions not fulfilled (no session, " \
104 "wrong key, encryption required).",
105 typeid(CardSecurityContextException))});
107 std::make_shared<StatusProperties>(
"Access forbidden (Never access mode, DF is " \
108 "invalidated, etc..).",
109 typeid(CardAccessForbiddenException))});
111 std::make_shared<StatusProperties>(
"Command not allowed (no current EF).",
112 typeid(CardDataAccessException))});
114 std::make_shared<StatusProperties>(
"Record is not found (record index is 0 or " \
116 typeid(CardDataAccessException))});
118 std::make_shared<StatusProperties>(
"P2 value not supported.",
119 typeid(CardIllegalParameterException))});
124const std::map<const int, const std::shared_ptr<StatusProperties>>&
static const std::map< const int, const std::shared_ptr< StatusProperties > > STATUS_TABLE
virtual void addSubName(const std::string &subName) final
virtual void setApduRequest(const std::shared_ptr< ApduRequestAdapter > apduRequest) final
static const CalypsoCardCommand UPDATE_RECORD
uint8_t getInstructionByte() const
uint8_t getRecordNumber() const
bool isSessionBufferUsed() const override
CmdCardUpdateRecord(const CalypsoCardClass calypsoCardClass, const uint8_t sfi, const uint8_t recordNumber, const std::vector< uint8_t > &newRecordData)
const std::vector< uint8_t > & getData() const
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override