#pragma once #include #include #include #include #include #include #include "passy_common.h" #define SECURE_MESSAGING_MAX_SIZE 128 typedef struct { uint8_t KENC[16]; uint8_t KMAC[16]; uint8_t rndICC[8]; uint8_t rndIFD[8]; uint8_t Kifd[16]; uint8_t Kicc[16]; uint8_t KSenc[16]; uint8_t KSmac[16]; uint8_t SSC[8]; } SecureMessaging; SecureMessaging* secure_messaging_alloc( uint8_t* passport_number, uint8_t* date_of_birth, uint8_t* date_of_expiry); void secure_messaging_free(SecureMessaging* secure_messaging); void secure_messaging_calculate_session_keys(SecureMessaging* secure_messaging); void secure_messaging_wrap_apdu( SecureMessaging* secure_messaging, uint8_t* message, size_t message_len, BitBuffer* tx_buffer); void secure_messaging_unwrap_rapdu(SecureMessaging* secure_messaging, BitBuffer* rx_buffer);