Просмотр исходного кода

handle dynamic passport number length

Eric Betts 9 месяцев назад
Родитель
Сommit
633e3da57d
2 измененных файлов с 9 добавлено и 9 удалено
  1. 9 5
      secure_messaging.c
  2. 0 4
      secure_messaging.h

+ 9 - 5
secure_messaging.c

@@ -40,17 +40,21 @@ SecureMessaging* secure_messaging_alloc(
     memset(secure_messaging->rndIFD, 0x00, sizeof(secure_messaging->rndIFD));
     memset(secure_messaging->Kifd, 0x00, sizeof(secure_messaging->Kifd));
 
-    uint8_t mrz[10 + 7 + 7];
-    memcpy(mrz, passport_number, 10);
-    memcpy(mrz + 10, date_of_birth, 7);
-    memcpy(mrz + 10 + 7, date_of_expiry, 7);
+    uint8_t mrz[SECURE_MESSAGING_MAX_SIZE];
+    size_t mrz_index = 0;
+    strncpy((char*)mrz, (char*)passport_number, 12);
+    mrz_index += strlen((char*)passport_number);
+    strncpy((char*)mrz + mrz_index, (char*)date_of_birth, 8);
+    mrz_index += strlen((char*)date_of_birth);
+    strncpy((char*)mrz + mrz_index, (char*)date_of_expiry, 8);
+    mrz_index += strlen((char*)date_of_expiry);
     FURI_LOG_D(TAG, "secure_messaging_alloc mrz %s", mrz);
 
     uint8_t sha[20];
 
     mbedtls_sha1_init(&ctx);
     mbedtls_sha1_starts(&ctx);
-    mbedtls_sha1_update(&ctx, mrz, sizeof(mrz));
+    mbedtls_sha1_update(&ctx, mrz, mrz_index);
     mbedtls_sha1_finish(&ctx, sha);
 
     passy_log_buffer(TAG, "secure_messaging_alloc sha", sha, sizeof(sha));

+ 0 - 4
secure_messaging.h

@@ -14,10 +14,6 @@
 #define SECURE_MESSAGING_MAX_SIZE 128
 
 typedef struct {
-    uint8_t passport_number[10];
-    uint8_t date_of_birth[7];
-    uint8_t date_of_expiry[7];
-
     uint8_t KENC[16];
     uint8_t KMAC[16];