24#include "IllegalArgumentException.h"
31using namespace keyple::core::util;
32using namespace keyple::core::util::cpp;
33using namespace keyple::core::util::cpp::exception;
37const std::map<const int, const std::shared_ptr<StatusProperties>>
38 CmdSamDigestInit::STATUS_TABLE = initStatusTable();
41 const std::shared_ptr<CalypsoSamAdapter> calypsoSam,
42 const bool verificationMode,
43 const bool confidentialSessionMode,
44 const uint8_t workKif,
45 const uint8_t workKvc,
46 const std::vector<uint8_t>& digestData)
49 if (workKif == 0x00 || workKvc == 0x00) {
51 throw IllegalArgumentException(
"Bad kif or kvc!");
54 if (digestData.empty()) {
56 throw IllegalArgumentException(
"Digest data is null!");
62 if (verificationMode) {
67 if (confidentialSessionMode) {
72 const uint8_t p2 = 0xFF;
74 std::vector<uint8_t> dataIn(2 + digestData.size());
77 System::arraycopy(digestData, 0, dataIn, 2, digestData.size());
80 std::make_shared<ApduRequestAdapter>(
84const std::map<const int, const std::shared_ptr<StatusProperties>>
85 CmdSamDigestInit::initStatusTable()
87 std::map<const int, const std::shared_ptr<StatusProperties>> m =
91 std::make_shared<StatusProperties>(
"Incorrect Lc.",
94 std::make_shared<StatusProperties>(
"An event counter cannot be incremented.",
95 typeid(CalypsoSamCounterOverflowException))});
97 std::make_shared<StatusProperties>(
"Preconditions not satisfied.",
98 typeid(CalypsoSamAccessForbiddenException))});
100 std::make_shared<StatusProperties>(
"Incorrect P2.",
101 typeid(CalypsoSamIllegalParameterException))});
103 std::make_shared<StatusProperties>(
"Record not found: signing key not found.",
104 typeid(CalypsoSamDataAccessException))});
109const 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
static const CalypsoSamCommand DIGEST_INIT
uint8_t getInstructionByte() const override
CmdSamDigestInit(const std::shared_ptr< CalypsoSamAdapter > calypsoSam, const bool verificationMode, const bool confidentialSessionMode, const uint8_t workKif, const uint8_t workKvc, const std::vector< uint8_t > &digestData)
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
static uint8_t getClassByte(const ProductType productType)