mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-16 04:24:45 -07:00
MRTD show auth failure message
This commit is contained in:
@@ -11,6 +11,7 @@ void nfc_scene_passport_read_widget_callback(GuiButtonType result, InputType typ
|
||||
void nfc_scene_passport_read_on_enter(void* context) {
|
||||
Nfc* nfc = context;
|
||||
FuriHalNfcDevData* data = &nfc->dev->dev_data.nfc_data;
|
||||
MrtdData* mrtd_data = &nfc->dev->dev_data.mrtd_data;
|
||||
|
||||
DOLPHIN_DEED(DolphinDeedNfcReadSuccess);
|
||||
|
||||
@@ -40,7 +41,11 @@ void nfc_scene_passport_read_on_enter(void* context) {
|
||||
furi_string_cat_printf(temp_str, " %02X", data->uid[i]);
|
||||
}
|
||||
furi_string_cat_printf(temp_str, "\nATQA: %02X %02X ", data->atqa[1], data->atqa[0]);
|
||||
furi_string_cat_printf(temp_str, " SAK: %02X", data->sak);
|
||||
furi_string_cat_printf(temp_str, " SAK: %02X\n", data->sak);
|
||||
|
||||
if(mrtd_data->auth.method != MrtdAuthMethodNone && !mrtd_data->auth_success) {
|
||||
furi_string_cat_printf(temp_str, "Auth failed. Wrong params?");
|
||||
}
|
||||
|
||||
widget_add_text_scroll_element(widget, 0, 0, 128, 52, furi_string_get_cstr(temp_str));
|
||||
furi_string_free(temp_str);
|
||||
@@ -82,4 +87,4 @@ void nfc_scene_passport_read_on_exit(void* context) {
|
||||
|
||||
// Clear view
|
||||
widget_reset(nfc->widget);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,11 +283,18 @@ static bool nfc_worker_read_mrtd(NfcWorker* nfc_worker, FuriHalNfcTxRxContext* t
|
||||
//TODO: try select eMRTDApp first, but when PACE, read CardAccess first!
|
||||
if(!mrtd_select_app(mrtd_app, AID.eMRTDApplication)) break; // Passport app not selected
|
||||
|
||||
// At least we're dealing with a passport. So return true.
|
||||
read_success = true;
|
||||
if(mrtd_data->auth.method == MrtdAuthMethodNone) {
|
||||
// Selected the passport app, but auth. not selected
|
||||
// Successfully read what we could
|
||||
read_success = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if(!mrtd_authenticate(mrtd_app, mrtd_data)) break; // Authentication failed
|
||||
//TODO: show auth failure screen
|
||||
if(!mrtd_authenticate(mrtd_app, mrtd_data)) {
|
||||
// At least we're reading an MRTD and should the app switch to the NFC scenes
|
||||
read_success = true;
|
||||
break; // Authentication failed
|
||||
}
|
||||
|
||||
mrtd_read_parse_file(mrtd_app, mrtd_data, EF.COM);
|
||||
mrtd_read_parse_file(mrtd_app, mrtd_data, EF.DG1);
|
||||
@@ -337,7 +344,6 @@ static bool nfc_worker_read_nfca(NfcWorker* nfc_worker, FuriHalNfcTxRxContext* t
|
||||
|
||||
furi_hal_nfc_sleep(); // Needed between checks
|
||||
FURI_LOG_D(TAG, "Try reading MRTD");
|
||||
//TODO: support NFC-B?
|
||||
if(nfc_worker_read_mrtd(nfc_worker, tx_rx)) {
|
||||
nfc_worker->dev_data->protocol = NfcDeviceProtocolMRTD;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user