#DRIS struture cdef packed struct DRIS: # the first 4 fields are never encrypted char header[4] # should be set to DRIS # inputs int size # size of this structure int seed1 # seed for data/dris encryption int seed2 # as above # (maybe encrypted from now on) int function # specify only one function int flags # options for the function selected. To use more than one OR them together: OPTION1 | OPTION2... unsigned int execs_decrement # amount by which to dec execs if we use flag: DEC_MANY_EXECS int data_crypt_key_num # number of the key (1-3) that the dongle uses to encrypt or decrypt user data int rw_offset # offset in the dongle data area to read or write data int rw_length # length of data are to read/write/encrypt/decrypt char *rw_data_ptr # pointer to data to write / be read char alt_prog_name[256] # protection check for different program instead of this one, must be null-terminated int var_a # variable values for user algorithm int var_b int var_c int var_d int var_e int var_f int var_g int var_h int alg_number # the number of the user algorithm that you want to execute # outputs int ret_code # return code from the protection check int ext_err # extended error int type # type of dongle detected. 1 = Pro, 2 = FD int model # model of dongle detected. 1 = Lite, 2 = Plus, 4 = Net 5, 7 = Net Unlimited int sdsn # Software Developer's Serial Number char prodcode[12] # Product Code (null-terminated) unsigned int dongle_number int update_number unsigned int data_area_size # size of the data area used in the dongle detected int max_alg_num # the maximum algorithm number in the dongle detected int execs # executions left: -1 indicates 'no limit' int exp_day # expiry day: -1 indicates 'no limit' int exp_month # expiry month: -1 indicates 'no limit' int exp_year # expiry year: -1 indicates 'no limit' unsigned int features # features value int net_users # maximum number of network users for the dongle detected: -1 indicates 'no limit' int alg_answer # answer to the user algorithm executed with the given variable values unsigned int fd_capacity # capacity of the data area in FD dongle. char fd_drive[128] # drive letter of FD dongle detected e.g. 'f:\' (or mount name under Linux) int swkey_type # 0 = no swkey detected, 1 = temporary software key, 2 = demo software key int swkey_exp_day # software key expiry date (if software key detected) int swkey_exp_month int swkey_exp_year #NU_INFO struture cdef packed struct NU_INFO: char licenceName[256] char userName[50] char computerName[256] char ipAddress[16] # declare DDProtCheck (we do it like this because it is stdcall - the default for Cython is cdecl) cdef extern from "ddpro.h": int __stdcall DDProtCheck(void*, unsigned char*) int __stdcall DDGetNetUserList(char*, int*, void*, int, int*)