secure_messaging.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdlib.h>
  4. #include <mbedtls/des.h>
  5. #include <mbedtls/aes.h>
  6. #include <mbedtls/sha1.h>
  7. #include <mbedtls/sha256.h>
  8. #include "seos_common.h"
  9. #include "aes_cmac.h"
  10. #include "des_cmac.h"
  11. #define SECURE_MESSAGING_MAX_SIZE 128
  12. typedef struct {
  13. uint8_t cipher;
  14. uint8_t PrivacyKey[16];
  15. uint8_t CMACKey[16];
  16. uint8_t aesContext[16];
  17. uint8_t desContext[8];
  18. } SecureMessaging;
  19. SecureMessaging* secure_messaging_alloc(AuthParameters* params);
  20. void secure_messaging_free(SecureMessaging* secure_messaging);
  21. void secure_messaging_wrap_apdu(
  22. SecureMessaging* secure_messaging,
  23. uint8_t* message,
  24. size_t message_len,
  25. BitBuffer* tx_buffer);
  26. void secure_messaging_unwrap_apdu(SecureMessaging* secure_messaging, BitBuffer* rx_buffer);
  27. void secure_messaging_unwrap_rapdu(SecureMessaging* secure_messaging, BitBuffer* rx_buffer);
  28. void secure_messaging_wrap_rapdu(
  29. SecureMessaging* secure_messaging,
  30. uint8_t* message,
  31. size_t message_len,
  32. BitBuffer* tx_buffer);