#ifndef __STRUCTURES__H_ #define __STRUCTURES__H_ // Version 2.0628 // Algo codes #define rs_algo_GSII64 5 #define rs_algo_HASH64 6 #define rs_algo_RND64 7 #define rs_algo_PI 8 #define rs_algo_Sim64Encode 10 #define rs_algo_Sim64Decode 11 #define rs_algo_ECC160 12 #define rs_algo_AES128 13 #define rs_algo_LoadableCode 14 #define rs_algo_SHA256 15 #define rs_algo_AES128Encode 16 #define rs_algo_AES128Decode 17 // Low Flags #define nsafl_ID 1 // Not used in S/N III #define nsafl_GP_dec 2 // Decrement counter #define nsafl_GP 4 // Not used in S/N III #define nsafl_ST_III 8 // Must be enabled in case S/N III #define nsafl_ActivationSrv 16 // Enable activation service #define nsafl_DeactivationSrv 32 // Enable deactivation service #define nsafl_UpdateSrv 64 // Enable update-by-psswd service #define nsafl_InactiveFlag 128 // Deactivated item // High Flags #define nsafh_ReadSrv 1 // Enable read-service of rs_K[] #define nsafh_ReadPwd 2 // Check password for read-service #define nsafh_BirthTime 4 // Use BirthTime mechanism #define nsafh_DeadTime 8 // Use DeadTime mechanism #define nsafh_LifeTime 16 // Use LifeTime mechanism #define nsafh_FlipTime 32 // Use FlipTime mechanism // Global Flags #define grdgf_ProtectTime 1 // Protect dongle time #define grdgf_HID 2 // Use dongle in HID mode #define grdgf_OnlyOneSessKey 4 #define grdgf_2ndSessKey 8 // LMS Flags #define LMS_FLAG_LSIZE_2BYTES 0x0001 // LMS Table module record's size is 2 bytes #define GrdHASH64_CONTEXT_SIZE 8 #define GrdADS_SHA256 0 #define GrdARS_SHA256 0 // Guardant HASH64 DEMO Algorithm default passwords #define GrdAP_DEMO_ACTIVATION 0xAAAAAAAA #define GrdAP_DEMO_DEACTIVATION 0xDDDDDDDD #define GrdAP_DEMO_READ 0xBBBBBBBB #define GrdAP_DEMO_UPDATE 0xCCCCCCCC #pragma pack(push,1) typedef struct{ BYTE bSeconds; // Seconds 0 - 59 BYTE bMinute; // Minutes 0 - 59 BYTE bHour; // Hours 0 - 23 BYTE bDay; // Days 1 - 31 BYTE bMonth; // Months 1 - 12 BYTE bYear; // Years 0 - 99 from 2000 (i.e. 0 is 2000 , 1 is 2001 etc...) } TGrdTime; #pragma pack(pop) #pragma pack(push,1) typedef struct{ TGrdTime LifeTime; // Difference of dates is Life Time BYTE State; // 0 - has not been activated, 1 - activated BYTE ReservedForEven; } TGrdLifeTime; #pragma pack(pop) #pragma pack(push,1) typedef struct{ TGrdTime rs_ChangeFlipTimeStart; // Date and Time to start count BYTE rs_DaysGap; // Changes every 'rs_DaysGap' days from. Must be 1 - 255 BYTE ReservedForEven; } TGrdFlipTime; #pragma pack(pop) typedef struct _SBMAPFILE{ DWORD dwRes; DWORD dwFlashStart; // Start FLASH DWORD dwFlashSize; // FLASH size DWORD dwFlashSizeReal; // Really used FLASH size DWORD dwRamStart; // Start RAM DWORD dwRamSize; // RAM size DWORD dwRamSizeReal; // Really used RAM size DWORD dwMaptblOffset; // MAP-file ranges table offset DWORD dwMaptblSize; // MAP-file ranges table size } SBMAPFILE, *LPSBMAPFILE; #pragma pack(push,1) typedef struct{ BYTE byLoFlags; // LoFlags BYTE byAlgorithmCode; // Algorithm code DWORD dwGP_Counter; // GP counter BYTE byKeyLength; // Size of algorithm's key BYTE byBlockLength; // Request Block length } TStealthII_FixedHeader; #pragma pack(pop) #pragma pack(push,1) typedef struct{ BYTE byLoFlags; // LoFlags WORD wHiFlags; // HiFlags BYTE byAlgorithmCode; // Algorithm code BYTE byKeyLength; // Size of algorithm's key BYTE byBlockLength; // Request Block length } TStealthIII_FixedHeader; #pragma pack(pop) #pragma pack(push,1) typedef struct{ BYTE byLoFlags; // LoFlags BYTE byAlgorithmCode; // Algorithm's code BYTE rs_res[2]; // 2 bytes are reserved for even DWORD dwHiFlags; // HiFlags DWORD dwKeyLength; // Size of algorithm's key DWORD dwBlockLength; // Request Block length BYTE rs_hash[8]; // 8 bytes are reserved for even DWORD dwActivatePwd; // Activation service password DWORD dwDeactivatePwd; // Deactivation service password DWORD dwReadPwd; // Read service password DWORD dwUpdatePwd; // Update service password BYTE pBirthTime[sizeof(TGrdTime)]; BYTE pDeadTime[sizeof(TGrdTime)]; BYTE pLifeTime[sizeof(TGrdLifeTime)]; BYTE pFlipTime[sizeof(TGrdFlipTime)]; DWORD dwGP_Counter; // Backward GP counter DWORD dwErrorCounter; // Permissible incorrect password attempts } TSignTimeCode_FixedItem; #pragma pack(pop) #pragma pack(push,1) typedef struct{ WORD wSignature; // Signature of LMS Table WORD wVersion; // Table's version, defined constant DWORD dwChecksum; // CheckSum GrdCRC() WORD wFlags; // Flags of LMS Table BYTE byElements; // Number of records in LMS Table BYTE rs_res[5]; // 2 bytes are reserved for even } TLMS_FixedHeader; #pragma pack(pop) #endif // __STRUCTURES__H_