22#include "IllegalArgumentException.h"
29using namespace keyple::core::util;
30using namespace keyple::core::util::cpp;
31using namespace keyple::core::util::cpp::exception;
33const std::map<const int, const std::shared_ptr<StatusProperties>>
34 CmdSamSelectDiversifier::STATUS_TABLE = initStatusTable();
37 const std::shared_ptr<CalypsoSamAdapter> calypsoSam,
38 std::vector<uint8_t>& diversifier)
42 if (
static_cast<int>(diversifier.size()) != 4 &&
43 static_cast<int>(diversifier.size()) != 8) {
44 const int newLength =
static_cast<int>(diversifier.size()) < 4 ? 4 : 8;
45 std::vector<uint8_t> tmp(newLength);
46 System::arraycopy(diversifier, 0, tmp, newLength - diversifier.size(), diversifier.size());
51 std::make_shared<ApduRequestAdapter>(
59const std::map<const int, const std::shared_ptr<StatusProperties>>
60 CmdSamSelectDiversifier::initStatusTable()
62 std::map<const int, const std::shared_ptr<StatusProperties>> m =
66 std::make_shared<StatusProperties>(
"Incorrect Lc.",
69 std::make_shared<StatusProperties>(
"Preconditions not satisfied: the SAM is locked.",
70 typeid(CalypsoSamAccessForbiddenException))});
75const std::map<const int, const std::shared_ptr<StatusProperties>>&
virtual void setApduRequest(const std::shared_ptr< ApduRequestAdapter > apduRequest) final
static const std::map< const int, const std::shared_ptr< StatusProperties > > STATUS_TABLE
const CalypsoSamCommand & getCommandRef() const override
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
CmdSamSelectDiversifier(const std::shared_ptr< CalypsoSamAdapter > calypsoSam, std::vector< uint8_t > &diversifier)
static uint8_t getClassByte(const ProductType productType)