From e2c2e9dc1a9a7f7eafff371cdf29bb731015238c Mon Sep 17 00:00:00 2001
From: Gabriele Contini <gcontini@users.noreply.github.com>
Date: 周六, 14 12月 2019 13:56:41 +0800
Subject: [PATCH] Merge pull request #69 from open-license-manager/feature/issue_licenses_42

---
 include/licensecc/datatypes.h |  133 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 133 insertions(+), 0 deletions(-)

diff --git a/include/licensecc/datatypes.h b/include/licensecc/datatypes.h
new file mode 100644
index 0000000..7a95afb
--- /dev/null
+++ b/include/licensecc/datatypes.h
@@ -0,0 +1,133 @@
+#ifndef DATATYPES_H_
+#define DATATYPES_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// definition of size_t
+#include <stdlib.h>
+#include <stdint.h>
+#ifndef _MSC_VER
+#include <stdbool.h>
+#endif
+
+#ifdef __unix__
+#define DllExport
+#ifndef MAX_PATH
+#define MAX_PATH 1024
+#endif
+#else
+#include <windows.h>
+#define DllExport __declspec(dllexport)
+#endif
+
+// define api structure sizes
+#define PC_IDENTIFIER_SIZE 19
+#define PROPRIETARY_DATA_SIZE 16
+#define AUDIT_EVENT_NUM 5
+
+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,
+	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;
+
+typedef enum {
+	LOCAL,
+	REMOTE  // remote licenses are not supported now.
+} LICENSE_TYPE;
+
+typedef enum { SVRT_INFO, SVRT_WARN, SVRT_ERROR } SEVERITY;
+
+typedef struct {
+	SEVERITY severity;
+	EVENT_TYPE event_type;
+	/**
+	 * License file name or location where the license is stored.
+	 */
+	char license_reference[MAX_PATH];
+	char param2[256];
+} AuditEvent;
+
+/**
+ * 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 {
+	/**
+	 * 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;
+} LicenseLocation;
+/**
+ * Informations on the software requiring the license
+ */
+typedef struct {
+	char version[16];  // software version in format xxxx.xxxx.xxxx
+	char project_name[16];  // name of the project (must correspond to the name in the license)
+	uint32_t magic;  // reserved
+} 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];
+	/**
+	 * Eventual expiration date of the software,
+	 * can be '\0' if the software don't expire
+	 * */
+	char expiry_date[11];
+	unsigned int days_left;
+	bool has_expiry;
+	bool linked_to_pc;
+	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];
+	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