mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-06-13 19:43:34 -07:00
MRTD display AIDs and DGs after auth
This commit is contained in:
@@ -26,6 +26,28 @@ void nfc_scene_passport_read_auth_on_enter(void* context) {
|
||||
uint32_t unicode_version = mrtd_data->files.EF_COM.unicode_version;
|
||||
string_cat_printf(temp_str, "Unicode version: %d.%d.%d\n", unicode_version/10000, unicode_version/100%100, unicode_version%100);
|
||||
|
||||
string_cat_printf(temp_str, "Avail.files: ");
|
||||
for(size_t i=0; i<MAX_EFCOM_TAGS; ++i) {
|
||||
uint8_t tag = mrtd_data->files.EF_COM.tag_list[i];
|
||||
const EFFile* file = mrtd_tag_to_file(tag);
|
||||
if(file->tag) {
|
||||
if(i > 0) string_cat_printf(temp_str, ", ");
|
||||
string_cat_printf(temp_str, "%s", file->name);
|
||||
}
|
||||
}
|
||||
string_cat_printf(temp_str, "\n");
|
||||
|
||||
EF_DIR_contents* EF_DIR = &mrtd_data->files.EF_DIR;
|
||||
if(EF_DIR->applications_count > 0) {
|
||||
string_cat_printf(temp_str, "Apps:\n");
|
||||
for(uint8_t i=0; i<EF_DIR->applications_count; ++i) {
|
||||
for(uint8_t n=0; n<sizeof(AIDValue); ++n) {
|
||||
string_cat_printf(temp_str, "%02X ", EF_DIR->applications[i][n]);
|
||||
}
|
||||
string_cat_printf(temp_str, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
char iso_type = FURI_BIT(data->sak, 5) ? '4' : '3';
|
||||
//TODO: NFC-B?
|
||||
|
||||
@@ -164,11 +164,7 @@ bool mrtd_external_authenticate(MrtdApplication* app, uint8_t* cmd_data, size_t
|
||||
bool mrtd_select_file(MrtdApplication* app, EFFile file) {
|
||||
uint8_t data[] = {file.file_id >> 8, file.file_id & 0xff};
|
||||
FURI_LOG_D(TAG, "Send select EF: %s (0x%04X)", file.name, file.file_id);
|
||||
uint8_t buffer[100];
|
||||
size_t buffer_written = 0;
|
||||
if(!mrtd_send_apdu(app, 0x00, 0xA4, 0x02, 0x0C, 0x02, data, -1, buffer, &buffer_written)) {
|
||||
FURI_LOG_D(TAG, "Buffer_written: %d", buffer_written);
|
||||
hexdump(FuriLogLevelDebug, "Buffer:", buffer, buffer_written);
|
||||
if(!mrtd_send_apdu(app, 0x00, 0xA4, 0x02, 0x0C, 0x02, data, -1, NULL, NULL)) {
|
||||
FURI_LOG_E(TAG, "Failed select EF 0x%04X", file.file_id);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
MrtdAuthData auth;
|
||||
bool auth_success;
|
||||
bool auth_success; //TODO: register (and display) method used BAC/PACE
|
||||
|
||||
struct {
|
||||
EF_DIR_contents EF_DIR;
|
||||
|
||||
@@ -165,3 +165,5 @@ static __inline uint64_t mrtd_ssc_from_data(const uint8_t* rnd_ic, const uint8_t
|
||||
size_t mrtd_protect_apdu(uint8_t cla, uint8_t ins, uint8_t p1, uint8_t p2, uint8_t lc, const void* data, int16_t le, const uint8_t* key_enc, const uint8_t* key_mac, uint64_t ssc, uint8_t* output);
|
||||
|
||||
int tlv_number(TlvInfo tlv);
|
||||
|
||||
const EFFile* mrtd_tag_to_file(uint8_t tag);
|
||||
|
||||
Reference in New Issue
Block a user