MRTD display AIDs and DGs after auth

This commit is contained in:
Chris van Marle
2022-10-11 22:13:37 +02:00
parent 89d0c315b1
commit 74faab36d9
4 changed files with 26 additions and 6 deletions
@@ -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?
+1 -5
View File
@@ -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;
}
+1 -1
View File
@@ -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;
+2
View File
@@ -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);