seos_reader.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include <storage/storage.h>
  3. #include <dialogs/dialogs.h>
  4. #include <lib/toolbox/path.h>
  5. #include <lib/nfc/protocols/nfc_generic_event.h>
  6. #include <lib/nfc/protocols/iso14443_4a/iso14443_4a_poller.h>
  7. #include <lib/nfc/helpers/iso14443_crc.h>
  8. #include <mbedtls/des.h>
  9. #include <mbedtls/aes.h>
  10. #include "secure_messaging.h"
  11. NfcCommand seos_worker_poller_callback(NfcGenericEvent event, void* context);
  12. typedef struct {
  13. Iso14443_4aPoller* iso14443_4a_poller;
  14. BitBuffer* tx_buffer;
  15. BitBuffer* rx_buffer;
  16. AuthParameters params;
  17. SecureMessaging* secure_messaging;
  18. SeosCredential* credential;
  19. } SeosReader;
  20. SeosReader* seos_reader_alloc(SeosCredential* credential, Iso14443_4aPoller* iso14443_4a_poller);
  21. void seos_reader_free(SeosReader* seos_reader);
  22. bool seos_reader_save(SeosReader* seos_reader, const char* dev_name);
  23. bool seos_reader_select_adf_response(
  24. BitBuffer* rx_buffer,
  25. size_t offset,
  26. SeosCredential* credential,
  27. AuthParameters* params);
  28. void seos_reader_generate_cryptogram(
  29. SeosCredential* credential,
  30. AuthParameters* params,
  31. uint8_t* cryptogram);
  32. bool seos_reader_verify_cryptogram(AuthParameters* params, const uint8_t* cryptogram);