#ifndef DATATYPES_H_ #define DATATYPES_H_ #ifdef __cplusplus extern "C" { #endif // definition of size_t #include #include #ifndef _MSC_VER #include #endif #ifdef __unix__ #define DllExport #ifndef MAX_PATH #define MAX_PATH 1024 #endif #else #include #define DllExport __declspec(dllexport) #endif #include typedef enum { LICENSE_OK = 0, // OK LICENSE_FILE_NOT_FOUND = 1, // license file not found LICENSE_SERVER_NOT_FOUND = 2, // license server can't be contacted ENVIRONMENT_VARIABLE_NOT_DEFINED = 3, // environment variable not defined FILE_FORMAT_NOT_RECOGNIZED = 4, // license file has invalid format (not .ini file) LICENSE_MALFORMED = 5, // some mandatory field are missing, or data can't be fully read. PRODUCT_NOT_LICENSED = 6, // this product was not licensed PRODUCT_EXPIRED = 7, //!< PRODUCT_EXPIRED LICENSE_CORRUPTED = 8, // License signature didn't match with current license IDENTIFIERS_MISMATCH = 9, // Calculated identifier and the one provided in license didn't match LICENSE_SPECIFIED = 100, // license location was specified LICENSE_FOUND = 101, // License file has been found or license data has been located PRODUCT_FOUND = 102, // License has been loaded and the declared product has been found SIGNATURE_VERIFIED = 103//!< SIGNATURE_VERIFIED } LCC_EVENT_TYPE; typedef enum { LCC_LOCAL, LCC_REMOTE // remote licenses are not supported now. } LCC_LICENSE_TYPE; typedef enum { SVRT_INFO, SVRT_WARN, SVRT_ERROR } LCC_SEVERITY; typedef struct { LCC_SEVERITY severity; LCC_EVENT_TYPE event_type; /** * License file name or location where the license is stored. */ char license_reference[MAX_PATH]; char param2[LCC_API_AUDIT_EVENT_PARAM2 + 1]; } AuditEvent; typedef enum { /** * A list of absolute path separated by ';' containing the eventual location * of the license files. Can be NULL. */ LICENSE_PATH, /** * The license is provided as plain data */ LICENSE_PLAIN_DATA, /** * The license is encoded */ LICENSE_ENCODED } LCC_LICENSE_DATA_TYPE; /** * This structure contains informations on the raw license data. Software authors * can specify the location of the license file or its full content. * * Can be NULL, in this case OpenLicenseManager will try to figure out the * license file location on its own. */ typedef struct { LCC_LICENSE_DATA_TYPE license_data_type; char licenseData[LCC_API_MAX_LICENSE_DATA_LENGTH]; } LicenseLocation; /** * Informations on the software requiring the license */ typedef struct { char version[LCC_API_VERSION_LENGTH + 1]; // software version in format xxxx[.xxxx.xxxx] //TODO char project_name[LCC_API_PROJECT_NAME_SIZE + 1]; // name of the project (must correspond to the name in the license) /** * this number passed in by the application must correspond to the magic number used when compiling the library. * See cmake parameter -DLCC_PROJECT_MAGIC_NUM and licensecc_properties.h macro VERIFY_MAGIC */ unsigned int magic; } CallerInformations; typedef struct { /** * Detailed reason of success/failure. Reasons for a failure can be * multiple (for instance, license expired and signature not verified). * Only the last AUDIT_EVENT_NUM are reported. */ AuditEvent status[LCC_API_AUDIT_EVENT_NUM]; /** * Eventual expiration date of the software, * can be '\0' if the software don't expire * */ char expiry_date[LCC_API_EXPIRY_DATE_SIZE + 1]; unsigned int days_left; bool has_expiry; bool linked_to_pc; LCC_LICENSE_TYPE license_type; // Local or Remote /* A string of character inserted into the license understood * by the calling application. * '\0' if the application didn't specify one */ char proprietary_data[LCC_API_PROPRIETARY_DATA_SIZE + 1]; int license_version; // license file version } LicenseInfo; #ifdef __cplusplus } #endif #endif