Naming and coding style convention, new linter tool. (#945)
* Makefile, Scripts: new linter * About: remove ID from IC * Firmware: remove double define for DIVC/DIVR * Scripts: check folder names too. Docker: replace syntax check with make lint. * Reformat Sources and Migrate to new file naming convention * Docker: symlink clang-format-12 to clang-format * Add coding style guide
This commit is contained in:
34
lib/nfc_protocols/emv_decoder.c
Executable file → Normal file
34
lib/nfc_protocols/emv_decoder.c
Executable file → Normal file
@@ -37,24 +37,22 @@ const PDOLValue* pdol_values[] = {
|
||||
&pdol_unpredict_number,
|
||||
};
|
||||
|
||||
static const uint8_t select_ppse_ans[] = {
|
||||
0x6F, 0x29, 0x84, 0x0E, 0x32, 0x50, 0x41, 0x59, 0x2E,
|
||||
0x53, 0x59, 0x53, 0x2E, 0x44, 0x44, 0x46, 0x30, 0x31,
|
||||
0xA5, 0x17, 0xBF, 0x0C, 0x14, 0x61, 0x12, 0x4F, 0x07,
|
||||
0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, 0x50, 0x04,
|
||||
0x56, 0x49, 0x53, 0x41, 0x87, 0x01, 0x01, 0x90, 0x00};
|
||||
static const uint8_t select_app_ans[] = {
|
||||
0x6F, 0x20, 0x84, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03,
|
||||
0x10, 0x10, 0xA5, 0x15, 0x50, 0x04, 0x56, 0x49, 0x53,
|
||||
0x41, 0x9F, 0x38, 0x0C, 0x9F, 0x66, 0x04, 0x9F, 0x02,
|
||||
0x06, 0x9F, 0x37, 0x04, 0x5F, 0x2A, 0x02, 0x90, 0x00};
|
||||
static const uint8_t pdol_ans[] = {
|
||||
0x77, 0x40, 0x82, 0x02, 0x20, 0x00, 0x57, 0x13, 0x55, 0x70, 0x73, 0x83,
|
||||
0x85, 0x87, 0x73, 0x31, 0xD1, 0x80, 0x22, 0x01, 0x38, 0x84, 0x77, 0x94,
|
||||
0x00, 0x00, 0x1F, 0x5F, 0x34, 0x01, 0x00, 0x9F, 0x10, 0x07, 0x06, 0x01,
|
||||
0x11, 0x03, 0x80, 0x00, 0x00, 0x9F, 0x26, 0x08, 0x7A, 0x65, 0x7F, 0xD3,
|
||||
0x52, 0x96, 0xC9, 0x85, 0x9F, 0x27, 0x01, 0x00, 0x9F, 0x36, 0x02, 0x06,
|
||||
0x0C, 0x9F, 0x6C, 0x02, 0x10, 0x00, 0x90, 0x00};
|
||||
static const uint8_t select_ppse_ans[] = {0x6F, 0x29, 0x84, 0x0E, 0x32, 0x50, 0x41, 0x59, 0x2E,
|
||||
0x53, 0x59, 0x53, 0x2E, 0x44, 0x44, 0x46, 0x30, 0x31,
|
||||
0xA5, 0x17, 0xBF, 0x0C, 0x14, 0x61, 0x12, 0x4F, 0x07,
|
||||
0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, 0x50, 0x04,
|
||||
0x56, 0x49, 0x53, 0x41, 0x87, 0x01, 0x01, 0x90, 0x00};
|
||||
static const uint8_t select_app_ans[] = {0x6F, 0x20, 0x84, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03,
|
||||
0x10, 0x10, 0xA5, 0x15, 0x50, 0x04, 0x56, 0x49, 0x53,
|
||||
0x41, 0x9F, 0x38, 0x0C, 0x9F, 0x66, 0x04, 0x9F, 0x02,
|
||||
0x06, 0x9F, 0x37, 0x04, 0x5F, 0x2A, 0x02, 0x90, 0x00};
|
||||
static const uint8_t pdol_ans[] = {0x77, 0x40, 0x82, 0x02, 0x20, 0x00, 0x57, 0x13, 0x55, 0x70,
|
||||
0x73, 0x83, 0x85, 0x87, 0x73, 0x31, 0xD1, 0x80, 0x22, 0x01,
|
||||
0x38, 0x84, 0x77, 0x94, 0x00, 0x00, 0x1F, 0x5F, 0x34, 0x01,
|
||||
0x00, 0x9F, 0x10, 0x07, 0x06, 0x01, 0x11, 0x03, 0x80, 0x00,
|
||||
0x00, 0x9F, 0x26, 0x08, 0x7A, 0x65, 0x7F, 0xD3, 0x52, 0x96,
|
||||
0xC9, 0x85, 0x9F, 0x27, 0x01, 0x00, 0x9F, 0x36, 0x02, 0x06,
|
||||
0x0C, 0x9F, 0x6C, 0x02, 0x10, 0x00, 0x90, 0x00};
|
||||
|
||||
static uint16_t emv_parse_TLV(uint8_t* dest, uint8_t* src, uint16_t* idx) {
|
||||
uint8_t len = src[*idx + 1];
|
||||
|
||||
@@ -13,7 +13,7 @@ uint16_t mf_ul_prepare_get_version(uint8_t* dest) {
|
||||
}
|
||||
|
||||
void mf_ul_parse_get_version_response(uint8_t* buff, MifareUlDevice* mf_ul_read) {
|
||||
MfUltralightVersion* version = (MfUltralightVersion*) buff;
|
||||
MfUltralightVersion* version = (MfUltralightVersion*)buff;
|
||||
memcpy(&mf_ul_read->data.version, version, sizeof(MfUltralightVersion));
|
||||
if(version->storage_size == 0x0B || version->storage_size == 0x00) {
|
||||
mf_ul_read->data.type = MfUltralightTypeUL11;
|
||||
@@ -70,7 +70,11 @@ uint16_t mf_ul_prepare_fast_read(uint8_t* dest, uint8_t start_page, uint8_t end_
|
||||
return 3;
|
||||
}
|
||||
|
||||
void mf_ul_parse_fast_read_response(uint8_t* buff, uint8_t start_page, uint8_t end_page, MifareUlDevice* mf_ul_read) {
|
||||
void mf_ul_parse_fast_read_response(
|
||||
uint8_t* buff,
|
||||
uint8_t start_page,
|
||||
uint8_t end_page,
|
||||
MifareUlDevice* mf_ul_read) {
|
||||
mf_ul_read->pages_readed = end_page - start_page + 1;
|
||||
mf_ul_read->data.data_size = mf_ul_read->pages_readed * 4;
|
||||
memcpy(mf_ul_read->data.data, buff, mf_ul_read->data.data_size);
|
||||
@@ -108,9 +112,9 @@ uint16_t mf_ul_prepare_inc_cnt(uint8_t* dest, uint8_t cnt_index, uint32_t value)
|
||||
}
|
||||
dest[0] = MF_UL_INC_CNT;
|
||||
dest[1] = cnt_index;
|
||||
dest[2] = (uint8_t) value;
|
||||
dest[3] = (uint8_t) (value >> 8);
|
||||
dest[4] = (uint8_t) (value >> 16);
|
||||
dest[2] = (uint8_t)value;
|
||||
dest[3] = (uint8_t)(value >> 8);
|
||||
dest[4] = (uint8_t)(value >> 16);
|
||||
dest[5] = 0;
|
||||
return 6;
|
||||
}
|
||||
@@ -124,7 +128,10 @@ uint16_t mf_ul_prepare_check_tearing(uint8_t* dest, uint8_t cnt_index) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
void mf_ul_parse_check_tearing_response(uint8_t* buff, uint8_t cnt_index, MifareUlDevice* mf_ul_read) {
|
||||
void mf_ul_parse_check_tearing_response(
|
||||
uint8_t* buff,
|
||||
uint8_t cnt_index,
|
||||
MifareUlDevice* mf_ul_read) {
|
||||
if(cnt_index < 2) {
|
||||
mf_ul_read->data.tearing[cnt_index] = buff[0];
|
||||
}
|
||||
@@ -136,10 +143,10 @@ uint16_t mf_ul_prepare_write(uint8_t* dest, uint16_t page_addr, uint32_t data) {
|
||||
}
|
||||
dest[0] = MF_UL_WRITE;
|
||||
dest[1] = page_addr;
|
||||
dest[2] = (uint8_t) (data >> 24);
|
||||
dest[3] = (uint8_t) (data >> 16);
|
||||
dest[4] = (uint8_t) (data >> 8);
|
||||
dest[5] = (uint8_t) data;
|
||||
dest[2] = (uint8_t)(data >> 24);
|
||||
dest[3] = (uint8_t)(data >> 16);
|
||||
dest[4] = (uint8_t)(data >> 8);
|
||||
dest[5] = (uint8_t)data;
|
||||
return 6;
|
||||
}
|
||||
|
||||
@@ -190,7 +197,11 @@ void mf_ul_protect_auth_data_on_read_command(
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t mf_ul_prepare_emulation_response(uint8_t* buff_rx, uint16_t len_rx, uint8_t* buff_tx, MifareUlDevice* mf_ul_emulate) {
|
||||
uint16_t mf_ul_prepare_emulation_response(
|
||||
uint8_t* buff_rx,
|
||||
uint16_t len_rx,
|
||||
uint8_t* buff_tx,
|
||||
MifareUlDevice* mf_ul_emulate) {
|
||||
uint8_t cmd = buff_rx[0];
|
||||
uint16_t page_num = mf_ul_emulate->data.data_size / 4;
|
||||
uint16_t tx_bytes = 0;
|
||||
@@ -223,7 +234,10 @@ uint16_t mf_ul_prepare_emulation_response(uint8_t* buff_rx, uint16_t len_rx, uin
|
||||
// Handle roll-over mechanism
|
||||
uint8_t end_pages_num = page_num - start_page;
|
||||
memcpy(buff_tx, &mf_ul_emulate->data.data[start_page * 4], end_pages_num * 4);
|
||||
memcpy(&buff_tx[end_pages_num * 4], mf_ul_emulate->data.data, (4 - end_pages_num) * 4);
|
||||
memcpy(
|
||||
&buff_tx[end_pages_num * 4],
|
||||
mf_ul_emulate->data.data,
|
||||
(4 - end_pages_num) * 4);
|
||||
} else {
|
||||
memcpy(buff_tx, &mf_ul_emulate->data.data[start_page * 4], tx_bytes);
|
||||
}
|
||||
@@ -235,8 +249,7 @@ uint16_t mf_ul_prepare_emulation_response(uint8_t* buff_rx, uint16_t len_rx, uin
|
||||
if(mf_ul_emulate->support_fast_read) {
|
||||
uint8_t start_page = buff_rx[1];
|
||||
uint8_t end_page = buff_rx[2];
|
||||
if((start_page < page_num) &&
|
||||
(end_page < page_num) && (start_page < (end_page + 1))) {
|
||||
if((start_page < page_num) && (end_page < page_num) && (start_page < (end_page + 1))) {
|
||||
tx_bytes = ((end_page + 1) - start_page) * 4;
|
||||
memcpy(buff_tx, &mf_ul_emulate->data.data[start_page * 4], tx_bytes);
|
||||
mf_ul_protect_auth_data_on_read_command(
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#define MF_UL_CHECK_TEARING (0x3E)
|
||||
#define MF_UL_READ_VCSL (0x4B)
|
||||
|
||||
|
||||
typedef enum {
|
||||
MfUltralightTypeUnknown,
|
||||
MfUltralightTypeUL11,
|
||||
@@ -46,13 +45,13 @@ typedef struct {
|
||||
} MfUltralightVersion;
|
||||
|
||||
typedef struct {
|
||||
uint8_t sn0[3];
|
||||
uint8_t btBCC0;
|
||||
uint8_t sn1[4];
|
||||
uint8_t btBCC1;
|
||||
uint8_t internal;
|
||||
uint8_t lock[2];
|
||||
uint8_t otp[4];
|
||||
uint8_t sn0[3];
|
||||
uint8_t btBCC0;
|
||||
uint8_t sn1[4];
|
||||
uint8_t btBCC1;
|
||||
uint8_t internal;
|
||||
uint8_t lock[2];
|
||||
uint8_t otp[4];
|
||||
} MfUltralightManufacturerBlock;
|
||||
|
||||
typedef struct {
|
||||
@@ -99,15 +98,26 @@ void mf_ul_parse_read_cnt_response(uint8_t* buff, uint8_t cnt_index, MifareUlDev
|
||||
uint16_t mf_ul_prepare_inc_cnt(uint8_t* dest, uint8_t cnt_index, uint32_t value);
|
||||
|
||||
uint16_t mf_ul_prepare_check_tearing(uint8_t* dest, uint8_t cnt_index);
|
||||
void mf_ul_parse_check_tearing_response(uint8_t* buff, uint8_t cnt_index, MifareUlDevice* mf_ul_read);
|
||||
void mf_ul_parse_check_tearing_response(
|
||||
uint8_t* buff,
|
||||
uint8_t cnt_index,
|
||||
MifareUlDevice* mf_ul_read);
|
||||
|
||||
uint16_t mf_ul_prepare_read(uint8_t* dest, uint8_t start_page);
|
||||
void mf_ul_parse_read_response(uint8_t* buff, uint16_t page_addr, MifareUlDevice* mf_ul_read);
|
||||
|
||||
uint16_t mf_ul_prepare_fast_read(uint8_t* dest, uint8_t start_page, uint8_t end_page);
|
||||
void mf_ul_parse_fast_read_response(uint8_t* buff, uint8_t start_page, uint8_t end_page, MifareUlDevice* mf_ul_read);
|
||||
void mf_ul_parse_fast_read_response(
|
||||
uint8_t* buff,
|
||||
uint8_t start_page,
|
||||
uint8_t end_page,
|
||||
MifareUlDevice* mf_ul_read);
|
||||
|
||||
uint16_t mf_ul_prepare_write(uint8_t* dest, uint16_t page_addr, uint32_t data);
|
||||
|
||||
void mf_ul_prepare_emulation(MifareUlDevice* mf_ul_emulate, MifareUlData* data);
|
||||
uint16_t mf_ul_prepare_emulation_response(uint8_t* buff_rx, uint16_t len_rx, uint8_t* buff_tx, MifareUlDevice* mf_ul_emulate);
|
||||
uint16_t mf_ul_prepare_emulation_response(
|
||||
uint8_t* buff_rx,
|
||||
uint16_t len_rx,
|
||||
uint8_t* buff_tx,
|
||||
MifareUlDevice* mf_ul_emulate);
|
||||
|
||||
Reference in New Issue
Block a user