14#include "keyple/card/calypso/CalypsoCardConstant.hpp"
18#include "keyple/core/util/HexUtil.hpp"
24using keyple::core::util::HexUtil;
26const int CalypsoCardConstant::SW_FILE_NOT_FOUND = 0x6A82;
27const int CalypsoCardConstant::SW_RECORD_NOT_FOUND = 0x6A83;
29const int CalypsoCardConstant::MASK_15_BITS = 0x7FFF;
30const int CalypsoCardConstant::MASK_3_BYTES = 0xFFFFFF;
33const int CalypsoCardConstant::SFI_MIN = 0;
34const int CalypsoCardConstant::SFI_MAX = 30;
37const int CalypsoCardConstant::NB_REC_MIN = 1;
38const int CalypsoCardConstant::NB_REC_MAX = 250;
41const int CalypsoCardConstant::NUM_CNT_MIN = 1;
44const int CalypsoCardConstant::CNT_VALUE_MIN = 0;
45const int CalypsoCardConstant::CNT_VALUE_MAX = MASK_3_BYTES;
48const int CalypsoCardConstant::OFFSET_MIN = 0;
49const int CalypsoCardConstant::OFFSET_MAX = 249;
50const int CalypsoCardConstant::OFFSET_BINARY_MAX = MASK_15_BITS;
53const int CalypsoCardConstant::DATA_LENGTH_MIN = 1;
56const int CalypsoCardConstant::SEL_SFI_OFFSET = 0;
57const int CalypsoCardConstant::SEL_TYPE_OFFSET = 1;
58const int CalypsoCardConstant::SEL_EF_TYPE_OFFSET = 2;
59const int CalypsoCardConstant::SEL_REC_SIZE_OFFSET = 3;
60const int CalypsoCardConstant::SEL_NUM_REC_OFFSET = 4;
61const int CalypsoCardConstant::SEL_AC_OFFSET = 5;
62const int CalypsoCardConstant::SEL_AC_LENGTH = 4;
63const int CalypsoCardConstant::SEL_NKEY_OFFSET = 9;
64const int CalypsoCardConstant::SEL_NKEY_LENGTH = 4;
65const int CalypsoCardConstant::SEL_DF_STATUS_OFFSET = 13;
66const int CalypsoCardConstant::SEL_KVCS_OFFSET = 14;
67const int CalypsoCardConstant::SEL_KIFS_OFFSET = 17;
68const int CalypsoCardConstant::SEL_DATA_REF_OFFSET = 14;
69const int CalypsoCardConstant::SEL_LID_OFFSET = 21;
70const int CalypsoCardConstant::SEL_LID_OFFSET_REV2 = 20;
73const int CalypsoCardConstant::PIN_LENGTH = 4;
76const uint8_t CalypsoCardConstant::STORED_VALUE_FILE_STRUCTURE_ID = 0x20;
77const uint8_t CalypsoCardConstant::SV_RELOAD_LOG_FILE_SFI = 0x14;
78const uint8_t CalypsoCardConstant::SV_RELOAD_LOG_FILE_NB_REC = 1;
79const uint8_t CalypsoCardConstant::SV_DEBIT_LOG_FILE_SFI = 0x15;
80const uint8_t CalypsoCardConstant::SV_DEBIT_LOG_FILE_NB_REC = 3;
81const uint8_t CalypsoCardConstant::SV_LOG_FILE_REC_LENGTH = 29;
84const int CalypsoCardConstant::SV_LOAD_MIN_VALUE
86const int CalypsoCardConstant::SV_LOAD_MAX_VALUE
88const int CalypsoCardConstant::SV_DEBIT_MIN_VALUE = 0;
89const int CalypsoCardConstant::SV_DEBIT_MAX_VALUE
92const int CalypsoCardConstant::DEFAULT_PAYLOAD_CAPACITY = 250;
94const int CalypsoCardConstant::LEGACY_REC_LENGTH = 29;
96const int CalypsoCardConstant::CARD_PUBLIC_KEY_SIZE = 64;
97const int CalypsoCardConstant::CARD_KEY_PAIR_SIZE = 96;
98const int CalypsoCardConstant::CARD_CERTIFICATE_SIZE = 316;
99const int CalypsoCardConstant::CA_CERTIFICATE_SIZE = 384;
102const int CalypsoCardConstant::TAG_FCP_FOR_CURRENT_FILE = 0x62;
103const std::uint8_t CalypsoCardConstant::TAG_FCP_FOR_CURRENT_FILE_LSB
104 = (TAG_FCP_FOR_CURRENT_FILE & 0xFF);
105const std::uint8_t CalypsoCardConstant::TAG_FCP_FOR_CURRENT_FILE_MSB
106 = ((TAG_FCP_FOR_CURRENT_FILE & 0xFF00) >> 8);
107const int CalypsoCardConstant::TAG_FCI_FOR_CURRENT_DF = 0x6F;
108const std::uint8_t CalypsoCardConstant::TAG_FCI_FOR_CURRENT_DF_LSB
109 = (TAG_FCI_FOR_CURRENT_DF & 0xFF);
110const std::uint8_t CalypsoCardConstant::TAG_FCI_FOR_CURRENT_DF_MSB
111 = ((TAG_FCI_FOR_CURRENT_DF & 0xFF00) >> 8);
112const int CalypsoCardConstant::TAG_EF_LIST = 0xC0;
113const std::uint8_t CalypsoCardConstant::TAG_EF_LIST_LSB = (TAG_EF_LIST & 0xFF);
114const std::uint8_t CalypsoCardConstant::TAG_EF_LIST_MSB
115 = ((TAG_EF_LIST & 0xFF00) >> 8);
116const int CalypsoCardConstant::TAG_TRACEABILITY_INFORMATION = 0x185;
117const std::uint8_t CalypsoCardConstant::TAG_TRACEABILITY_INFORMATION_LSB
118 = (TAG_TRACEABILITY_INFORMATION & 0xFF);
119const std::uint8_t CalypsoCardConstant::TAG_TRACEABILITY_INFORMATION_MSB
120 = ((TAG_TRACEABILITY_INFORMATION & 0xFF00) >> 8);
121const int CalypsoCardConstant::TAG_CARD_PUBLIC_KEY_HEADER_SIZE = 3;
122const int CalypsoCardConstant::TAG_CARD_PUBLIC_KEY = 0xDF2C;
123const std::uint8_t CalypsoCardConstant::TAG_CARD_PUBLIC_KEY_LSB
124 = (TAG_CARD_PUBLIC_KEY & 0xFF);
125const std::uint8_t CalypsoCardConstant::TAG_CARD_PUBLIC_KEY_MSB
126 = ((TAG_CARD_PUBLIC_KEY & 0xFF00) >> 8);
127const int CalypsoCardConstant::TAG_CARD_KEY_PAIR = 0xDF3C;
128const std::uint8_t CalypsoCardConstant::TAG_CARD_KEY_PAIR_LSB
129 = (TAG_CARD_KEY_PAIR & 0xFF);
130const std::uint8_t CalypsoCardConstant::TAG_CARD_KEY_PAIR_MSB
131 = ((TAG_CARD_KEY_PAIR & 0xFF00) >> 8);
132const int CalypsoCardConstant::TAG_CERTIFICATE_HEADER_SIZE = 5;
133const int CalypsoCardConstant::TAG_CARD_CERTIFICATE = 0xDF4C;
134const std::vector<std::uint8_t> CalypsoCardConstant::TAG_CARD_CERTIFICATE_HEADER
135 = HexUtil::toByteArray(
"DF4C82013C");
136const std::uint8_t CalypsoCardConstant::TAG_CARD_CERTIFICATE_LSB
137 = (TAG_CARD_CERTIFICATE & 0xFF);
138const std::uint8_t CalypsoCardConstant::TAG_CARD_CERTIFICATE_MSB
139 = ((TAG_CARD_CERTIFICATE & 0xFF00) >> 8);
140const int CalypsoCardConstant::TAG_CA_CERTIFICATE = 0xDF4A;
141const std::vector<std::uint8_t> CalypsoCardConstant::TAG_CA_CERTIFICATE_HEADER
142 = HexUtil::toByteArray(
"DF4A820180");
143const std::uint8_t CalypsoCardConstant::TAG_CA_CERTIFICATE_LSB
144 = (TAG_CA_CERTIFICATE & 0xFF);
145const std::uint8_t CalypsoCardConstant::TAG_CA_CERTIFICATE_MSB
146 = ((TAG_CA_CERTIFICATE & 0xFF00) >> 8);
148CalypsoCardConstant::CalypsoCardConstant()