mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 21:18:35 -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) {
|
void nfc_scene_passport_read_on_enter(void* context) {
|
||||||
Nfc* nfc = context;
|
Nfc* nfc = context;
|
||||||
FuriHalNfcDevData* data = &nfc->dev->dev_data.nfc_data;
|
FuriHalNfcDevData* data = &nfc->dev->dev_data.nfc_data;
|
||||||
|
MrtdData* mrtd_data = &nfc->dev->dev_data.mrtd_data;
|
||||||
|
|
||||||
DOLPHIN_DEED(DolphinDeedNfcReadSuccess);
|
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, " %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, "\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));
|
widget_add_text_scroll_element(widget, 0, 0, 128, 52, furi_string_get_cstr(temp_str));
|
||||||
furi_string_free(temp_str);
|
furi_string_free(temp_str);
|
||||||
|
|||||||
@@ -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!
|
//TODO: try select eMRTDApp first, but when PACE, read CardAccess first!
|
||||||
if(!mrtd_select_app(mrtd_app, AID.eMRTDApplication)) break; // Passport app not selected
|
if(!mrtd_select_app(mrtd_app, AID.eMRTDApplication)) break; // Passport app not selected
|
||||||
|
|
||||||
// At least we're dealing with a passport. So return true.
|
if(mrtd_data->auth.method == MrtdAuthMethodNone) {
|
||||||
read_success = true;
|
// 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
|
if(!mrtd_authenticate(mrtd_app, mrtd_data)) {
|
||||||
//TODO: show auth failure screen
|
// 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.COM);
|
||||||
mrtd_read_parse_file(mrtd_app, mrtd_data, EF.DG1);
|
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_hal_nfc_sleep(); // Needed between checks
|
||||||
FURI_LOG_D(TAG, "Try reading MRTD");
|
FURI_LOG_D(TAG, "Try reading MRTD");
|
||||||
//TODO: support NFC-B?
|
|
||||||
if(nfc_worker_read_mrtd(nfc_worker, tx_rx)) {
|
if(nfc_worker_read_mrtd(nfc_worker, tx_rx)) {
|
||||||
nfc_worker->dev_data->protocol = NfcDeviceProtocolMRTD;
|
nfc_worker->dev_data->protocol = NfcDeviceProtocolMRTD;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user