1 //-----------------------------------------------------------------------------
2 // Copyright (C) 2018 Merlok
3 // Copyright (C) 2018 drHatson
5 // This code is licensed to you under the terms of the GNU GPL, version 2 or,
6 // at your option, any later version. See the LICENSE.txt file for the text of
8 //-----------------------------------------------------------------------------
9 // iso14443-4 mifare commands
10 //-----------------------------------------------------------------------------
41 const char *description
;
47 const char *Description
;
50 void mfpSetVerboseMode(bool verbose
);
51 const char *mfpGetErrorDescription(uint8_t errorCode
);
53 int CalculateMAC(mf4Session_t
*mf4session
, MACType_t mtype
, uint8_t blockNum
, uint8_t blockCount
, uint8_t *data
, int datalen
, uint8_t *mac
, bool verbose
);
54 int MifareAuth4(mf4Session_t
*mf4session
, uint8_t *keyn
, uint8_t *key
, bool activateField
, bool leaveSignalON
, bool dropFieldIfError
, bool verbose
, bool silentMode
);
56 int MFPWritePerso(uint8_t *keyNum
, uint8_t *key
, bool activateField
, bool leaveSignalON
, uint8_t *dataout
, int maxdataoutlen
, int *dataoutlen
);
57 int MFPCommitPerso(bool activateField
, bool leaveSignalON
, uint8_t *dataout
, int maxdataoutlen
, int *dataoutlen
);
58 int MFPReadBlock(mf4Session_t
*mf4session
, bool plain
, uint8_t blockNum
, uint8_t blockCount
, bool activateField
, bool leaveSignalON
, uint8_t *dataout
, int maxdataoutlen
, int *dataoutlen
, uint8_t *mac
);
59 int MFPWriteBlock(mf4Session_t
*mf4session
, uint8_t blockNum
, uint8_t *data
, bool activateField
, bool leaveSignalON
, uint8_t *dataout
, int maxdataoutlen
, int *dataoutlen
, uint8_t *mac
);
60 int mfpReadSector(uint8_t sectorNo
, uint8_t keyType
, uint8_t *key
, uint8_t *dataout
, bool verbose
);
62 int MFPGetSignature(bool activateField
, bool leaveSignalON
, uint8_t *dataout
, int maxdataoutlen
, int *dataoutlen
);
63 int MFPGetVersion(bool activateField
, bool leaveSignalON
, uint8_t *dataout
, int maxdataoutlen
, int *dataoutlen
);
65 const char *mfGetAccessConditionsDesc(uint8_t blockn
, uint8_t *data
);
67 uint8_t mfNumBlocksPerSector(uint8_t sectorNo
);
68 uint8_t mfFirstBlockOfSector(uint8_t sectorNo
);
69 uint8_t mfSectorTrailer(uint8_t blockNo
);
70 bool mfIsSectorTrailer(uint8_t blockNo
);
71 uint8_t mfSectorNum(uint8_t blockNo
);