M5Unit-NFC 0.1.0 git rev:93745b5
Loading...
Searching...
No Matches
desfire_file_system.hpp File Reference

File system base using isoDEP for MIFARE DESFire. More...

#include "file_system.hpp"
#include "nfc/a/mifare.hpp"
#include "nfc/ndef/ndef.hpp"
#include <m5_utility/stl/expected.hpp>
#include <array>
#include <algorithm>
#include <limits>

Go to the source code of this file.

Classes

struct  m5::nfc::a::mifare::desfire::FileSettings
 DESFire file settings (minimal fields for StdDataFile) More...
 
struct  m5::nfc::a::mifare::desfire::desfire_aid_t
 24bit Application ID More...
 
struct  m5::nfc::a::mifare::desfire::NdefFormatOptions
 Options for formatting DESFire as Type4 NDEF. More...
 
struct  m5::nfc::a::mifare::desfire::FileRename
 File renaming parameters for DESFire Light SetConfiguration. More...
 
struct  m5::nfc::a::mifare::desfire::Ev2Context
 Session context for EV2 secure messaging. More...
 
class  m5::nfc::a::mifare::desfire::DESFireFileSystem
 File system for MIFARE DESFire. More...
 

Namespaces

namespace  m5
 Top level namespace of M5Stack.
 
namespace  desfire
 For MIFARE DESFire.
 

Enumerations

enum class  m5::nfc::a::mifare::desfire::AuthMode : uint8_t { Auto , DES , AES }
 Authentication mode. More...
 

Functions

bool m5::nfc::a::mifare::desfire::operator== (const desfire_aid_t &a, const desfire_aid_t &b) noexcept
 
bool m5::nfc::a::mifare::desfire::operator!= (const desfire_aid_t &a, const desfire_aid_t &b) noexcept
 
bool m5::nfc::a::mifare::desfire::operator< (const desfire_aid_t &a, const desfire_aid_t &b) noexcept
 
std::vector< uint8_t > m5::nfc::a::mifare::desfire::make_native_wrap_command (const uint8_t ins, const uint8_t *data=nullptr, const uint16_t data_len=0)
 Make native wrap command.
 
uint8_t m5::nfc::a::mifare::desfire::status_code (const uint8_t *rx, const uint16_t rx_len)
 DESFire status code (0x91xx)
 
bool m5::nfc::a::mifare::desfire::is_successful (const uint8_t *rx, const uint16_t rx_len)
 Is the status of the received data successful?
 
bool m5::nfc::a::mifare::desfire::is_more (const uint8_t *rx, const uint16_t rx_len)
 Is the received data still waiting for a response?
 
bool m5::nfc::a::mifare::desfire::is_duplicate (const uint8_t *rx, const uint16_t rx_len)
 Is duplicate error? (e.g. app/file already exists)
 

Variables

constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_APDU_CLA {0x90}
 
constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_INS_READ_DATA {0xAD}
 
constexpr uint8_t m5::nfc::a::mifare::desfire::DESFIRE_LIGHT_INS_WRITE_DATA {0x8D}
 
constexpr uint8_t m5::nfc::a::mifare::desfire::MAXIMUM_FILES {MAXIMUM_FILE_NO - MINIMUM_FILE_NO + 1}
 Files max.
 

File number

using m5::nfc::a::mifare::desfire::file_no_t = uint8_t
 Alias for file number.
 
constexpr file_no_t m5::nfc::a::mifare::desfire::MINIMUM_FILE_NO {0}
 Minimum file number.
 
constexpr file_no_t m5::nfc::a::mifare::desfire::MAXIMUM_FILE_NO {31}
 Maximum file number.
 

Detailed Description

File system base using isoDEP for MIFARE DESFire.

Enumeration Type Documentation

◆ AuthMode

enum class m5::nfc::a::mifare::desfire::AuthMode : uint8_t
strong

Authentication mode.

Enumerator
Auto 

Try DES then AES.

DES 

DES/3DES only.

AES 

AES only.

Function Documentation

◆ is_duplicate()

bool m5::nfc::a::mifare::desfire::is_duplicate ( const uint8_t * rx,
const uint16_t rx_len )
inline

Is duplicate error? (e.g. app/file already exists)

Parameters
rxReceive data
rx_lenReceive data length
Returns
True if the DESFire status code indicates duplicate application or file

◆ is_more()

bool m5::nfc::a::mifare::desfire::is_more ( const uint8_t * rx,
const uint16_t rx_len )
inline

Is the received data still waiting for a response?

Parameters
rxReceive data
rx_lenReceive data length
Returns
True if the DESFire status code indicates additional frame data

◆ is_successful()

bool m5::nfc::a::mifare::desfire::is_successful ( const uint8_t * rx,
const uint16_t rx_len )
inline

Is the status of the received data successful?

Parameters
rxReceive data
rx_lenReceive data length
Returns
True if the DESFire status code is success

◆ make_native_wrap_command()

std::vector< uint8_t > m5::nfc::a::mifare::desfire::make_native_wrap_command ( const uint8_t ins,
const uint8_t * data = nullptr,
const uint16_t data_len = 0 )

Make native wrap command.

Something similar to APDU but different

Parameters
insNative INS
dataData
data_lenData length
Returns
Constructed command data

◆ status_code()

uint8_t m5::nfc::a::mifare::desfire::status_code ( const uint8_t * rx,
const uint16_t rx_len )
inline

DESFire status code (0x91xx)

Parameters
rxReceive data
rx_lenReceive data length
Returns
DESFire status code, or 0xFF if the response is not a DESFire status response