From 5202eb8587e868bc0de777c8b5bbafb84cf21135 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 2 Oct 2020 14:30:15 +0200 Subject: [PATCH] broke out type prototyping from mifare.h --- include/iso14b.h | 43 +++++++++++++++++ include/iso15.h | 33 +++++++++++++ include/iso18.h | 119 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 195 insertions(+) create mode 100644 include/iso14b.h create mode 100644 include/iso15.h create mode 100644 include/iso18.h diff --git a/include/iso14b.h b/include/iso14b.h new file mode 100644 index 000000000..e1baf231a --- /dev/null +++ b/include/iso14b.h @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------------- +// (c) 2020 Iceman +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// ISO 14443B type prototyping +//----------------------------------------------------------------------------- + +#ifndef _ISO14B_H_ +#define _ISO14B_H_ + +#include "common.h" +typedef struct { + uint8_t uid[10]; + uint8_t uidlen; + uint8_t atqb[7]; + uint8_t chipid; + uint8_t cid; +} PACKED iso14b_card_select_t; + +typedef struct { + uint8_t uid[4]; + uint8_t pc; + uint8_t fc; +} PACKED iso14b_cts_card_select_t; + +typedef enum ISO14B_COMMAND { + ISO14B_CONNECT = (1 << 0), + ISO14B_DISCONNECT = (1 << 1), + ISO14B_APDU = (1 << 2), + ISO14B_RAW = (1 << 3), + ISO14B_REQUEST_TRIGGER = (1 << 4), + ISO14B_APPEND_CRC = (1 << 5), + ISO14B_SELECT_STD = (1 << 6), + ISO14B_SELECT_SR = (1 << 7), + ISO14B_SET_TIMEOUT = (1 << 8), + ISO14B_SEND_CHAINING = (1 << 9), + ISO14B_SELECT_CTS = (1 << 10), +} iso14b_command_t; + +#endif // _ISO14B_H_ \ No newline at end of file diff --git a/include/iso15.h b/include/iso15.h new file mode 100644 index 000000000..228669cda --- /dev/null +++ b/include/iso15.h @@ -0,0 +1,33 @@ +//----------------------------------------------------------------------------- +// (c) 2020 Iceman +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// ISO 15693 type prototyping +//----------------------------------------------------------------------------- + +#ifndef _ISO15_H_ +#define _ISO15_H_ + +#include "common.h" +typedef struct { + uint8_t uid[10]; + uint8_t uidlen; + uint8_t atqb[7]; + uint8_t chipid; + uint8_t cid; +} PACKED iso14b_card_select_t; + +typedef enum ISO15_COMMAND { + ISO15_CONNECT = (1 << 0), + ISO15_NO_DISCONNECT = (1 << 1), + ISO15_RAW = (1 << 2), + ISO15_APPEND_CRC = (1 << 3), + ISO15_HIGH_SPEED = (1 << 4), + ISO15_READ_RESPONSE = (1 << 5) +} iso15_command_t; + + +#endif // _ISO15_H_ \ No newline at end of file diff --git a/include/iso18.h b/include/iso18.h new file mode 100644 index 000000000..711bba495 --- /dev/null +++ b/include/iso18.h @@ -0,0 +1,119 @@ +//----------------------------------------------------------------------------- +// (c) 2020 Iceman +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// ISO 18002 / FeliCa type prototyping +//----------------------------------------------------------------------------- +#ifndef _ISO18_H_ +#define _ISO18_H_ + +#include "common.h" + +typedef enum FELICA_COMMAND { + FELICA_CONNECT = (1 << 0), + FELICA_NO_DISCONNECT = (1 << 1), + FELICA_RAW = (1 << 3), + FELICA_APPEND_CRC = (1 << 5), + FELICA_NO_SELECT = (1 << 6), +} felica_command_t; + +//----------------------------------------------------------------------------- +// FeliCa +//----------------------------------------------------------------------------- +// IDm = ID manufacturer +// mc = manufactureCode +// mc1 mc2 u1 u2 u3 u4 u5 u6 +// PMm = Product manufacturer +// icCode = +// ic1 = ROM +// ic2 = IC +// maximum response time = +// B3(request service) +// B4(request response) +// B5(authenticate) +// B6(read) +// B7(write) +// B8() + +// ServiceCode 2bytes (access-rights) +// FileSystem = 1 Block = 16 bytes + + +typedef struct { + uint8_t IDm[8]; + uint8_t code[2]; + uint8_t uid[6]; + uint8_t PMm[8]; + uint8_t iccode[2]; + uint8_t mrt[6]; + uint8_t servicecode[2]; +} PACKED felica_card_select_t; + +typedef struct { + uint8_t sync[2]; + uint8_t length[1]; + uint8_t cmd_code[1]; + uint8_t IDm[8]; +} PACKED felica_frame_response_t; + +typedef struct { + uint8_t status_flag1[1]; + uint8_t status_flag2[1]; +} PACKED felica_status_flags_t; + +typedef struct { + felica_frame_response_t frame_response; + uint8_t node_number[1]; + uint8_t node_key_versions[2]; +} PACKED felica_request_service_response_t; + +typedef struct { + felica_frame_response_t frame_response; + uint8_t mode[1]; +} PACKED felica_request_request_response_t; + +typedef struct { + felica_frame_response_t frame_response; + felica_status_flags_t status_flags; + uint8_t number_of_block[1]; + uint8_t block_data[16]; + uint8_t block_element_number[1]; +} PACKED felica_read_without_encryption_response_t; + +typedef struct { + felica_frame_response_t frame_response; + felica_status_flags_t status_flags; +} PACKED felica_status_response_t; + +typedef struct { + felica_frame_response_t frame_response; + uint8_t number_of_systems[1]; + uint8_t system_code_list[32]; +} PACKED felica_syscode_response_t; + +typedef struct { + felica_frame_response_t frame_response; + felica_status_flags_t status_flags; + uint8_t format_version[1]; + uint8_t basic_version[2]; + uint8_t number_of_option[1]; + uint8_t option_version_list[4]; +} PACKED felica_request_spec_response_t; + +typedef struct { + felica_frame_response_t frame_response; + uint8_t m2c[8]; + uint8_t m3c[8]; +} PACKED felica_auth1_response_t; + +typedef struct { + uint8_t code[1]; + uint8_t IDtc[8]; + uint8_t IDi[8]; + uint8_t PMi[8]; +} PACKED felica_auth2_response_t; + +#endif // _ISO18_H_ \ No newline at end of file