10#ifndef M5_UNIT_UNIFIED_NFC_NFC_ISODEP_FILE_SYSTEM_HPP
11#define M5_UNIT_UNIFIED_NFC_NFC_ISODEP_FILE_SYSTEM_HPP
38 std::vector<uint8_t> fcp;
49 fcp.push_back(
static_cast<uint8_t
>((
fid >> 8) & 0xFF));
50 fcp.push_back(
static_cast<uint8_t
>(
fid & 0xFF));
55 fcp.push_back(
static_cast<uint8_t
>((
file_size >> 8) & 0xFF));
56 fcp.push_back(
static_cast<uint8_t
>(
file_size & 0xFF));
59 std::vector<uint8_t> out;
60 out.reserve(fcp.size() + 2);
62 out.push_back(
static_cast<uint8_t
>(fcp.size()));
63 out.insert(out.end(), fcp.begin(), fcp.end());
75bool parseFCI(FCP& fcp,
const uint8_t* data,
const uint32_t len);
97 bool createFile(
const uint8_t* fcp,
const uint16_t fcp_len);
110 bool createFile(
const uint16_t fid,
const uint16_t file_size);
171 bool selectByPath(
const uint8_t* path,
const uint8_t path_len,
const bool from_mf =
true,
198 bool verify(
const uint8_t* password,
const uint16_t pass_len,
const uint8_t param2);
205 inline bool verifyGlobal(
const uint8_t* password,
const uint16_t pass_len)
207 return verify(password, pass_len, 0x80);
217 return verify(password, pass_len, 0x00);
226 bool readBinary(std::vector<uint8_t>& out,
const uint16_t offset,
const uint16_t le );
234 bool updateBinary(
const uint16_t offset,
const uint8_t* data,
const uint16_t data_len);
243 return _last_select_fci;
248 std::vector<uint8_t> _last_select_fci{};
Application Protocol Data Unit (ISO/IEC 7816-4)
SelectBy
Select control for SELECT_FILE.
Definition apdu.hpp:122
SelectResponse
Response for SELECT_FILE.
Definition apdu.hpp:148
SelectOccurrence
Select occurrence for SELECT_FILE.
Definition apdu.hpp:137
ISO/IEC 7816-4 file system.
Definition file_system.hpp:81
bool selectFileIdAuto(const uint16_t fid, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by File ID with auto response fallback (None->FCI->FCP)
Definition file_system.cpp:180
bool verifySpecific(const uint8_t *password, const uint16_t pass_len)
VERIFY specific reference data.
Definition file_system.hpp:215
bool selectDfNameAuto(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by DF Name with auto response fallback (FCI->None->FCP)
Definition file_system.cpp:194
bool selectMasterFile()
SELECT MF (Master File)
Definition file_system.hpp:186
const std::vector< uint8_t > & lastSelectData() const
Last SELECT response data (SW excluded)
Definition file_system.hpp:241
bool updateBinary(const uint16_t offset, const uint8_t *data, const uint16_t data_len)
UPDATE BINARY.
Definition file_system.cpp:296
bool verify(const uint8_t *password, const uint16_t pass_len, const uint8_t param2)
VERIFY (generic)
Definition file_system.cpp:238
bool selectByFileId(const uint16_t fid, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by File ID with explicit response type.
Definition file_system.cpp:170
bool selectParent(const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT parent DF.
Definition file_system.cpp:209
bool createFile(const uint8_t *fcp, const uint16_t fcp_len)
CREATE FILE.
Definition file_system.cpp:87
bool verifyGlobal(const uint8_t *password, const uint16_t pass_len)
VERIFY global reference data.
Definition file_system.hpp:205
bool selectByPath(const uint8_t *path, const uint8_t path_len, const bool from_mf=true, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by path (MF or current DF)
Definition file_system.cpp:202
bool selectFile(const m5::nfc::apdu::SelectBy by, const m5::nfc::apdu::SelectOccurrence occ, const m5::nfc::apdu::SelectResponse res, const uint8_t *param, const uint8_t param_len)
SELECT FILE (generic)
Definition file_system.cpp:121
bool selectByDfName(const uint8_t *aid, const uint8_t aid_len, const m5::nfc::apdu::SelectResponse res=m5::nfc::apdu::SelectResponse::FCI, const m5::nfc::apdu::SelectOccurrence occ=m5::nfc::apdu::SelectOccurrence::FirstOrOnly)
SELECT by DF Name with explicit response type.
Definition file_system.cpp:188
bool readBinary(std::vector< uint8_t > &out, const uint16_t offset, const uint16_t le)
READ BINARY.
Definition file_system.cpp:260
ISO Data Exchange Protocol.
Definition isoDEP.hpp:190
ISO Data Exchange Protocol.
Top level namespace of M5stack.
File Control Parameters.
Definition file_system.hpp:26
std::vector< uint8_t > to_tlv() const
Build FCP TLV (tag 0x62)
Definition file_system.hpp:36
uint16_t fid
File ID (FID)
Definition file_system.hpp:27
uint16_t file_size
File size in bytes.
Definition file_system.hpp:28
uint8_t file_descriptor
File descriptor (default: transparent EF)
Definition file_system.hpp:29
uint8_t file_size_tag
File size TLV tag (default: 0x80)
Definition file_system.hpp:30