Files
PS_Dinkey/Dinkey Pro 7.6.1/Samples/C/dris.h
2026-05-06 07:47:36 +02:00

102 lines
5.5 KiB
C

// dris.h
// Dinkey Runtime Information Structure (DRIS)
// !! this file should not be modified
#pragma pack(1)
typedef 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_licence_name[256]; // protection check for different licence instead of the default 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;
} DRIS;
typedef struct NU_INFO {
char licenceName[256];
char userName[50];
char computerName[256];
char ipAddress[16];
} NU_INFO;
#pragma pack()
// functions - must specify only one
#define PROTECTION_CHECK 1 // checks for dongle, check program params...
#define EXECUTE_ALGORITHM 2 // protection check + calculate answer for specified algorithm with specified inputs
#define WRITE_DATA_AREA 3 // protection check + writes dongle data area
#define READ_DATA_AREA 4 // protection check + reads dongle data area
#define ENCRYPT_USER_DATA 5 // protection check + the dongle will encrypt user data
#define DECRYPT_USER_DATA 6 // protection check + the dongle will decrypt user data
#define FAST_PRESENCE_CHECK 7 // checks for the presence of the correct dongle only with minimal security, no flags allowed.
#define STOP_NET_USER 8 // stops a network user (a protection check is NOT performed)
// flags - can specify as many as you like
#define DEC_ONE_EXEC 1 // decrement execs by 1
#define DEC_MANY_EXECS 2 // decrement execs by number specified in execs_decrement
#define START_NET_USER 4 // starts a network user
#define USE_FUNCTION_ARGUMENT 16 // use the extra argument in the function for pointers
#define CHECK_LOCAL_FIRST 32 // always look in local ports before looking in network ports
#define CHECK_NETWORK_FIRST 64 // always look on the network before looking in local ports
#define USE_ALT_LICENCE_NAME 128 // use name specified in alt_licence_name instead of the default one
#define DONT_SET_MAXDAYS_EXPIRY 256 // if the max days expiry date has not been calculated then do not do it this time
#define MATCH_DONGLE_NUMBER 512 // restrict the search to match the dongle number specified in the DRIS
#define DONT_RETURN_FD_DRIVE 1024 // if an FD dongle has been detected then don't return the flash drive/mount name in the DRIS
// Runtime module API declarations
#ifdef __cplusplus
extern "C" {
#endif
int WINAPI DDProtCheck(DRIS *dris, unsigned char *data);
int WINAPI DDGetNetUserList(char *licence_name, int *num_net_users, NU_INFO *nu_info, int num_info_structs, int *extended_error);
#ifdef __cplusplus
}
#endif