#include #include #include #include "iccard/nesica.h" #include "iccard/mifare.h" #include "util/dprintf.h" HRESULT aime_card_populate( struct mifare *mifare, const uint8_t *card_sn, size_t nbytes) { uint8_t b; size_t i; assert(mifare != NULL); assert(card_sn != NULL); memset(mifare, 0, sizeof(*mifare)); if (nbytes != 16) { dprintf("Nesica IC: Card Serial must be 16 characters\n"); return E_INVALIDARG; } for (int i = 0; i < 16; i++) { mifare->sectors[0].blocks[0].bytes[i] = i; } memset(mifare->sectors[0].blocks[2].bytes, 0xff, 16); memset(mifare->sectors[0].blocks[3].bytes, 0xff, 16); mifare->sectors[0].blocks[0].bytes[14] = 'T'; mifare->sectors[0].blocks[0].bytes[15] = 'U'; memcpy_s(mifare->sectors[0].blocks[1].bytes, 4, (uint8_t *)"T053", 4); memcpy_s(mifare->sectors[0].blocks[1].bytes + 4, 12, card_sn, 12); memcpy_s(mifare->sectors[0].blocks[2].bytes, 16, card_sn + 12, 4); return S_OK; }