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);
101 bool createFile(
const uint8_t* fcp,
const uint16_t fcp_len);
114 bool createFile(
const uint16_t fid,
const uint16_t file_size);
175 bool selectByPath(
const uint8_t* path,
const uint8_t path_len,
const bool from_mf =
true,
202 bool verify(
const uint8_t* password,
const uint16_t pass_len,
const uint8_t param2);
209 inline bool verifyGlobal(
const uint8_t* password,
const uint16_t pass_len)
211 return verify(password, pass_len, 0x80);
221 return verify(password, pass_len, 0x00);
230 bool readBinary(std::vector<uint8_t>& out,
const uint16_t offset,
const uint16_t le );
238 bool updateBinary(
const uint16_t offset,
const uint8_t* data,
const uint16_t data_len);
247 return _last_select_fci;
252 std::vector<uint8_t> _last_select_fci{};
Application Protocol Data Unit (ISO/IEC 7816-4)
SelectBy
Select control for SELECT_FILE.
Definition apdu.hpp:137
SelectResponse
Response for SELECT_FILE.
Definition apdu.hpp:163
SelectOccurrence
Select occurrence for SELECT_FILE.
Definition apdu.hpp:152
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:219
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:190
FileSystem(m5::nfc::isodep::IsoDEP &isoDEP)
Constructor with IsoDEP.
Definition file_system.hpp:87
const std::vector< uint8_t > & lastSelectData() const
Last SELECT response data (SW excluded)
Definition file_system.hpp:245
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:209
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:240
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