// ======================================================================================================== // ======================================================================================================== // *********************************************** common.h *********************************************** // ======================================================================================================== // ======================================================================================================== #define _DEFAULT_SOURCE 1 #include #include #include #include #include #include #include #include #include #include #include #include #include #include "utility.h" // ===================================================================================================================== // ===================================================================================================================== // GPIO transfer size #define CHLNG_CHUNK_SIZE 16 // Test design parameters. 8 modules, each with 32-bits #define NUM_MODULES 24 #define NUM_CHALLENGE_BITS_PER_MODULE 32 #define NUM_DIRECTION_CHLNG_BITS 16 #define NUM_CHLNG_BITS (NUM_MODULES * NUM_CHALLENGE_BITS_PER_MODULE + NUM_DIRECTION_CHLNG_BITS) #define NUM_POS 32 // ============== // OUTPUTS TO PUF #define OUT_CP_RESET 31 #define OUT_CP_PUF_START 30 #define OUT_CP_NUM_SAM1 29 #define OUT_CP_NUM_SAM0 28 #define OUT_CP_REUSE_PNS_MODE 27 #define OUT_CP_LFSR_LOAD_SEED 26 #define OUT_CP_LM_ULM_DONE 25 #define OUT_CP_HANDSHAKE 24 // "000" DeviceAuthentication, "001" VerifierAuthentication, "010" SessionKeyGen, "011" Provisioning #define OUT_CP_MODE1 23 #define OUT_CP_MODE0 22 #define OUT_CP_KEK 21 #define OUT_CP_DTO_DATA_READY 20 #define OUT_CP_DTO_RESTART 19 #define OUT_CP_DTO_VEC_LOADED 18 #define OUT_CP_DO_CALIBRATION 16 // ============== // INPUTS FROM PUF #define IN_SM_READY 31 #define IN_SM_DTO_DONE_READING 29 #define IN_SM_HANDSHAKE 28 #define IN_CAL_ERR 27 #define IN_GPEVCAL_ERR 26 #define IN_PNDIFF_OVERFLOW_ERR 25 #define IN_MPS_3 24 #define IN_LOAD_VEC_PAIR_OR_MPS_2 23 #define IN_DONE_ALL_VECS_OR_MPS_1 22 #define IN_BG_SBS_DONE_OR_MPS_0 21 #define IN_FU_OUTPUT_END 20 #define IN_FU_OUTPUT_START 12 // GPIO 0 #define GPIO_0_BASE_ADDR 0x41200000 #define CTRL_DIRECTION_MASK 0x00 #define DATA_DIRECTION_MASK 0xFFFFFFFF // ===================================================================================================================== // ===================================================================================================================== int OpenSocketServer(int max_string_len, int *server_socket_desc_ptr, char *server_IP, int port_number, int *client_socket_desc_ptr, struct sockaddr_in *client_addr_ptr, int accept_only, int check_and_return); int OpenSocketClient(int max_string_len, char *server_IP, int port_number, int *server_socket_desc_ptr); int SockGetB(unsigned char *buffer, int buffer_size, int socket_desc); int SockSendB(unsigned char *buffer, int buffer_size, int socket_desc); void PrintHeaderAndHexVals(char *header_str, int num_vals, unsigned char *vals, int max_vals_per_row); void SendChlngsAndMasks(int max_string_len, int num_chlngs, int device_socket_desc, int num_rise_chlngs, int num_chlng_bits, unsigned char **challenges_b, int has_masks, int num_POs, unsigned char **masks); int ReadChlngAndMaskFilesBinary(int max_string_len, char *chlng_path, int num_chlng_bits, int *num_rise_chlngs_ptr, unsigned char ***challenges_b_ptr, int has_masks, char *mask_file_path, int num_POs, unsigned char ***masks_b_ptr, int num_direction_chlng_bits);