diff --git a/client/src/mifare/desfirecore.c b/client/src/mifare/desfirecore.c index b422f564d..63a2bbb34 100644 --- a/client/src/mifare/desfirecore.c +++ b/client/src/mifare/desfirecore.c @@ -1834,6 +1834,13 @@ int DesfireClearRecordFile(DesfireContext *dctx, uint8_t fnum) { return DesfireCommandTxData(dctx, MFDES_CLEAR_RECORD_FILE, &fnum, 1); } +int DesfireCommitReaderID(DesfireContext *dctx, uint8_t *readerid, size_t readeridlen, uint8_t *resp, size_t *resplen) { + uint8_t rid[16] = {0}; + // command use 16b reader id only + memcpy(rid, readerid, MIN(readeridlen, 16)); + return DesfireCommand(dctx, MFDES_COMMIT_READER_ID, rid, 16, resp, resplen, -1); +} + int DesfireCommitTransaction(DesfireContext *dctx, bool enable_options, uint8_t options) { if (enable_options) return DesfireCommandTxData(dctx, MFDES_COMMIT_TRANSACTION, &options, 1); diff --git a/client/src/mifare/desfirecore.h b/client/src/mifare/desfirecore.h index c19e19d1d..940a00ecf 100644 --- a/client/src/mifare/desfirecore.h +++ b/client/src/mifare/desfirecore.h @@ -229,6 +229,7 @@ void DesfirePrintCreateFileSettings(uint8_t filetype, uint8_t *data, size_t len) const char *GetDesfireFileType(uint8_t type); int DesfireCreateFile(DesfireContext *dctx, uint8_t ftype, uint8_t *fdata, size_t fdatalen, bool checklen); int DesfireDeleteFile(DesfireContext *dctx, uint8_t fnum); +int DesfireCommitReaderID(DesfireContext *dctx, uint8_t *readerid, size_t readeridlen, uint8_t *resp, size_t *resplen); int DesfireCommitTransaction(DesfireContext *dctx, bool enable_options, uint8_t options); int DesfireAbortTransaction(DesfireContext *dctx);