Implement support for reading Opal card (Sydney, Australia) (#2683)

* Implement support for reading Opal card (Sydney, Australia)
* stub_parser_verify_read: used UNUSED macro
* furi_hal_rtc: expose calendaring as functions
* opal: use bit-packed struct to parse, rather than manually shifting about
* Update f18 api symbols

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
micolous
2023-05-29 21:55:55 +10:00
committed by GitHub
parent 66961dab06
commit 363f555ed7
15 changed files with 357 additions and 38 deletions
+24
View File
@@ -42,6 +42,30 @@ void mf_df_clear(MifareDesfireData* data) {
data->app_head = NULL;
}
MifareDesfireApplication* mf_df_get_application(MifareDesfireData* data, const uint8_t (*aid)[3]) {
if(!data) {
return NULL;
}
for(MifareDesfireApplication* app = data->app_head; app; app = app->next) {
if(memcmp(aid, app->id, 3) == 0) {
return app;
}
}
return NULL;
}
MifareDesfireFile* mf_df_get_file(MifareDesfireApplication* app, uint8_t id) {
if(!app) {
return NULL;
}
for(MifareDesfireFile* file = app->file_head; file; file = file->next) {
if(file->id == id) {
return file;
}
}
return NULL;
}
void mf_df_cat_data(MifareDesfireData* data, FuriString* out) {
mf_df_cat_card_info(data, out);
for(MifareDesfireApplication* app = data->app_head; app; app = app->next) {
+3
View File
@@ -130,6 +130,9 @@ void mf_df_cat_file(MifareDesfireFile* file, FuriString* out);
bool mf_df_check_card_type(uint8_t ATQA0, uint8_t ATQA1, uint8_t SAK);
MifareDesfireApplication* mf_df_get_application(MifareDesfireData* data, const uint8_t (*aid)[3]);
MifareDesfireFile* mf_df_get_file(MifareDesfireApplication* app, uint8_t id);
uint16_t mf_df_prepare_get_version(uint8_t* dest);
bool mf_df_parse_get_version_response(uint8_t* buf, uint16_t len, MifareDesfireVersion* out);