From 289886021add9711c052ccf66859b6370a9193a5 Mon Sep 17 00:00:00 2001
From: Gabriele Contini <contini.mailing@gmail.com>
Date: 周六, 01 2月 2020 18:00:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/develop' into feature/pc_identifiers

---
 include/licensecc/datatypes.h |   99 ++++++++++++++++++++++++-------------------------
 1 files changed, 48 insertions(+), 51 deletions(-)

diff --git a/include/licensecc/datatypes.h b/include/licensecc/datatypes.h
index e769f6b..f9da78a 100644
--- a/include/licensecc/datatypes.h
+++ b/include/licensecc/datatypes.h
@@ -1,3 +1,6 @@
+/** \addtogroup api
+ * @{
+ */
 #ifndef DATATYPES_H_
 #define DATATYPES_H_
 
@@ -22,16 +25,7 @@
 #define DllExport __declspec(dllexport)
 #endif
 
-// define api structure sizes
-#define PC_IDENTIFIER_SIZE 19
-#define PROPRIETARY_DATA_SIZE 16
-#define AUDIT_EVENT_NUM 5
-#define AUDIT_EVENT_PARAM2 255
-#define VERSION_SIZE 15
-#define PROJECT_NAME_SIZE 15
-#define EXPIRY_DATE_SIZE 10
-
-#define ERROR_BUFFER_SIZE 256
+#include <licensecc_properties.h>
 
 typedef enum {
 	LICENSE_OK = 0,  // OK
@@ -41,32 +35,48 @@
 	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 = 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
-} EVENT_TYPE;
+	SIGNATURE_VERIFIED = 103//!< SIGNATURE_VERIFIED
+} LCC_EVENT_TYPE;
 
 typedef enum {
-	LOCAL,
-	REMOTE  // remote licenses are not supported now.
-} LICENSE_TYPE;
+	LCC_LOCAL,
+	LCC_REMOTE  // remote licenses are not supported now.
+} LCC_LICENSE_TYPE;
 
-typedef enum { SVRT_INFO, SVRT_WARN, SVRT_ERROR } SEVERITY;
+typedef enum { SVRT_INFO, SVRT_WARN, SVRT_ERROR } LCC_SEVERITY;
 
 typedef struct {
-	SEVERITY severity;
-	EVENT_TYPE event_type;
+	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[AUDIT_EVENT_PARAM2 + 1];
+	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
@@ -76,64 +86,51 @@
  * license file location on its own.
  */
 typedef struct {
-	/**
-	 * A list of absolute path separated by ';' containing the eventual location
-	 * of the license files. Can be NULL.
-	 */
-	const char *licenseFileLocation;
-	/**
-	 * The application can provide the full license content through this string.
-	 * It can be both in encoded form (base64) or in plain. It's optional.
-	 */
-	const char *licenseData;
+	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[VERSION_SIZE + 1];  // software version in format xxxx.xxxx.xxxx
-	char project_name[PROJECT_NAME_SIZE + 1];  // name of the project (must correspond to the name in the license)
-	uint32_t magic;  // reserved
+	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[AUDIT_EVENT_NUM];
+	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[EXPIRY_DATE_SIZE + 1];
+	char expiry_date[LCC_API_EXPIRY_DATE_SIZE + 1];
 	unsigned int days_left;
 	bool has_expiry;
 	bool linked_to_pc;
-	LICENSE_TYPE license_type;  // Local or Remote
+	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[PROPRIETARY_DATA_SIZE + 1];
+	char proprietary_data[LCC_API_PROPRIETARY_DATA_SIZE + 1];
 	int license_version;  // license file version
 } LicenseInfo;
-
-/**
- * Enum to select a specific pc identification_strategy. DEFAULT Should be used
- * in most cases.
- */
-typedef enum {
-	STRATEGY_DEFAULT,
-	STRATEGY_ETHERNET,
-	STRATEGY_IP_ADDRESS,
-	STRATEGY_DISK_NUM,
-	STRATEGY_DISK_LABEL,
-	STRATEGY_PLATFORM_SPECIFIC,
-	STRATEGY_UNKNOWN
-} IDENTIFICATION_STRATEGY;
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif
+/**
+ * @}
+ */

--
Gitblit v1.9.1