| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #pragma once
- #include <stdint.h>
- #include <stdlib.h>
- #include <mbedtls/des.h>
- #include <mbedtls/aes.h>
- #include <mbedtls/sha1.h>
- #include <mbedtls/sha256.h>
- #include <furi.h>
- #include <lib/toolbox/bit_buffer.h>
- #include "passy_common.h"
- #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];
- 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);
|