passy_reader.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include <lib/nfc/nfc.h>
  3. #include <nfc/nfc_listener.h>
  4. #include <nfc/nfc_poller.h>
  5. #include <nfc/nfc_device.h>
  6. #include <lib/nfc/protocols/nfc_generic_event.h>
  7. #include <lib/nfc/protocols/iso14443_4b/iso14443_4b_poller.h>
  8. #include <lib/nfc/protocols/iso14443_4a/iso14443_4a_poller.h>
  9. #include <lib/nfc/helpers/iso14443_crc.h>
  10. #include <mbedtls/des.h>
  11. #include <lib/toolbox/stream/stream.h>
  12. #include <lib/toolbox/stream/file_stream.h>
  13. #include "passy_i.h"
  14. #include "passy_common.h"
  15. #include "secure_messaging.h"
  16. #define PASSY_READER_MAX_BUFFER_SIZE 128
  17. NfcCommand passy_reader_poller_callback(NfcGenericEvent event, void* context);
  18. typedef struct {
  19. Passy* passy;
  20. Iso14443_4bPoller* iso14443_4b_poller;
  21. Iso14443_4aPoller* iso14443_4a_poller;
  22. BitBuffer* tx_buffer;
  23. BitBuffer* rx_buffer;
  24. BitBuffer* DG1;
  25. BitBuffer* COM;
  26. BitBuffer* dg_header;
  27. SecureMessaging* secure_messaging;
  28. uint16_t last_sw;
  29. } PassyReader;
  30. PassyReader* passy_reader_alloc(Passy* passy);
  31. void passy_reader_free(PassyReader* passy_reader);
  32. void passy_reader_mac(uint8_t* key, uint8_t* data, size_t data_length, uint8_t* mac);