// ======================================================================================================== // ======================================================================================================== // ******************************************* verifier_common.h ****************************************** // ======================================================================================================== // ======================================================================================================== #include #include #include #include #include "commonDB.h" #ifndef HELPAlgoStruct typedef struct { int SBS_num_bits; int SBS_num_bytes; int SHD_num_bytes; unsigned char *SBS; unsigned char *SHD; } HelpBitstringStruct; typedef struct { char *MasterDB_name; sqlite3 *database_NAT; sqlite3 *database_RT; char *Netlist_name; char *Synthesis_name; int design_index; int num_PIs; int num_POs; char *ChallengeSetName_NAT; int gen_random_challenge; unsigned int Seed; int offset_mode; int offset_resolution_bits; int fix_params; float **PNR; float **PNF; float *fPND; float *fPNDc; float *fPNDco; float *fmodPNDco; float *MedianPNR; float *MedianPNF; int num_qualified_rise_PNs; int num_qualified_fall_PNs; int num_required_PNDiffs; unsigned char *Offsets_binary; unsigned char *verifier_SHD; unsigned char *verifier_SBS; unsigned char *device_SHD; unsigned char *device_SBS; int verifier_SHD_num_bytes; int verifier_SBS_num_bytes; int device_SHD_num_bytes; int device_SBS_num_bytes; int do_save_bitstrings_to_RT_DB; unsigned char *DHD_HD; unsigned char *verifier_DHD_SBS; unsigned char *device_DHD_SBS; int DHD_SBS_num_bits; unsigned char *verifier_n2; unsigned char *XOR_nonce; int nonce_base_address; int num_required_nonce_bytes; int dist_range; int range_low_limit; int range_high_limit; int vec_chunk_size; int SKE_3_or_5; int SE_target_num_key_bits; unsigned char *SE_final_key; int authen_min_bitstring_size; int KEK_target_num_key_bits; unsigned char *KEK_final_enroll_key; int num_chips; int num_vecs; int num_rise_vecs; int has_masks; unsigned char **first_vecs_b; unsigned char **second_vecs_b; unsigned char **masks_b; int KEK_num_vecs; int KEK_num_rise_vecs; int KEK_has_masks; unsigned char **KEK_first_vecs_b; unsigned char **KEK_second_vecs_b; unsigned char **KEK_masks_b; int chip_num; int fast_or_optimal_offset_methods[6]; unsigned int param_LFSR_seed_low; unsigned int param_LFSR_seed_high; float param_reference_mean; float param_reference_range; unsigned short param_Modulus; unsigned short param_Margin; TimingValCacheStruct *TVC_arr_NAT; int num_TVC_arr_NAT; int use_TVC_cache; HelpBitstringStruct *HBS_arr; int first_chip_num; int first_num_match_bits; int first_num_mismatch_bits; int second_chip_num; int second_num_match_bits; int second_num_mismatch_bits; int do_cobra; int DHD_SBS_AND_correlation; int DHD_SBS_XNOR_correlation; int DUMP_BITSTRINGS; int DEBUG_FLAG; } HELPAlgoParamsStruct; #define HELPAlgoStruct #endif // **************************** LABVIEW ********************************** // CoreSM0 is the Agilent B2910A #define InstrCoreSM0 "CoreSrcMeter0" // CoreSM1 is the Keithley 2400 #define InstrCoreSM1 "CoreSrcMeter1" #define InstrTC "TempChamber" #define CommandPwrUp "PUP" #define CommandPwrDwn "PWN" #define CommandReadCurrentAmplitude "ReadCurrConfigAmpl" #define CommandSetCurrentAmplitude "SetCurrConfigAmpl" #define CommandReadTemperature "ReadTemperature" #define CommandSetTemperature "SetTemperature" #define CommandSetTemperatureNB "SetTemperatureNB" // Unique to the verifier since we need to read and search a database. #define MAX_CHIPS 500 void SetTVCorner(int max_string_len, int TV_num, int max_TVs, int temperatures[max_TVs], float currents_uAs[max_TVs], int labview_socket_desc, int do_2nd_SMU); // FILE version -- DOES NOT EXIST any longer. void FindVecsInMaster(int max_string_len, int num_PIs, int num_PNR_and_PNF, int session_num_vecs, unsigned char **session_first_vecs_b, unsigned char **session_second_vecs_b, int session_has_masks, unsigned char **session_masks_b, int session_num_rise_vecs, int master_num_vecs, unsigned char **master_first_vecs_b, unsigned char **master_second_vecs_b, int master_has_masks, unsigned char **master_masks_b, int master_num_rise_vecs, int **session_vec_nums_ptr, int **session_PO_nums_ptr); int ReadDatabasePNsFromMaster(int max_string_len, char *database_path, int num_PNs, TimingValCacheStruct **TVC_arr_ptr, int *num_TVC_arr_ptr, int *session_vec_nums, int *session_PO_nums, int *tot_DB_PNs_ptr, int DEBUG);