From 6f5db32d147166ab1617c66844e3297eededc704 Mon Sep 17 00:00:00 2001
From: Gabriele Contini <gcontini@users.noreply.github.com>
Date: 摹曛, 19 9月 2019 20:20:18 +0800
Subject: [PATCH] Feature/mingw cross compile (#51)

---
 src/library/os/os.c |   25 +++++++++++++------------
 1 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/library/os/os.c b/src/library/os/os.c
index 633917d..ad4803b 100644
--- a/src/library/os/os.c
+++ b/src/library/os/os.c
@@ -1,10 +1,9 @@
-//#include <stdlib.h>
-#include <stdio.h>
-#include "../base/logger.h"
 #include "os.h"
+#include "../base/logger.h"
 #include "public-key.h"
+#include <stdio.h>
 
-#ifndef _MSC_VER
+#ifdef __linux__
 
 #include <openssl/pem.h>
 
@@ -85,8 +84,10 @@
 #else
 
 #include <iphlpapi.h>
-#include <Windows.h>
+#include <windows.h>
 #pragma comment(lib, "IPHLPAPI.lib")
+
+unsigned char* unbase64(const char* ascii, int len, int *flen);
 
 static void printHash(HCRYPTHASH* hHash) {
 	BYTE *pbHash;
@@ -115,9 +116,9 @@
 	// Declare variables.
 	//
 	// hProv:           Cryptographic service provider (CSP). This example
-	//                  uses the Microsoft Enhanced Cryptographic 
+	//                  uses the Microsoft Enhanced Cryptographic
 	//                  Provider.
-	// hKey:            Key to be used. In this example, you import the 
+	// hKey:            Key to be used. In this example, you import the
 	//                  key as a PLAINTEXTKEYBLOB.
 	// dwBlobLen:       Length of the plaintext key.
 	// pbKeyBlob:       Pointer to the exported key.
@@ -135,10 +136,10 @@
 	if (!CryptAcquireContext(&hProv,
 	NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
 		// If the key container cannot be opened, try creating a new
-		// container by specifying a container name and setting the 
+		// container by specifying a container name and setting the
 		// CRYPT_NEWKEYSET flag.
 		LOG_INFO("Error in AcquireContext 0x%08x \n", GetLastError());
-		if (NTE_BAD_KEYSET == GetLastError()) {
+		if (NTE_BAD_KEYSET == (long)GetLastError()) {
 			if (!CryptAcquireContext(&hProv, "license++verify",
 					MS_ENHANCED_PROV, PROV_RSA_FULL,
 					CRYPT_NEWKEYSET | CRYPT_VERIFYCONTEXT)) {
@@ -152,7 +153,7 @@
 	}
 
 	// Use the CryptImportKey function to import the PLAINTEXTKEYBLOB
-	// BYTE array into the key container. The function returns a 
+	// BYTE array into the key container. The function returns a
 	// pointer to an HCRYPTKEY variable that contains the handle of
 	// the imported key.
 	if (!CryptImportKey(hProv, &pubKey[0], sizeof(pubKey), 0, 0, &hKey)) {
@@ -168,7 +169,7 @@
 		return FUNC_RET_ERROR;
 	}
 
-	if (!CryptHashData(hHash, stringToVerify, (DWORD) strlen(stringToVerify), 0)) {
+	if (!CryptHashData(hHash, (const BYTE*)stringToVerify, (DWORD) strlen(stringToVerify), 0)) {
 		LOG_ERROR("Error in hashing data 0x%08x ", GetLastError());
 		CryptDestroyHash(hHash);
 		CryptReleaseContext(hProv, 0);
@@ -178,7 +179,7 @@
 	LOG_DEBUG("Lenght %d, hashed Data: [%s]", strlen(stringToVerify), stringToVerify);
 	printHash(&hHash);
 #endif
-	sigBlob = unbase64(signatureB64, (int) strlen(signatureB64), &dwSigLen);
+	sigBlob = unbase64(signatureB64, (int) strlen(signatureB64), (int*)&dwSigLen);
 	LOG_DEBUG("raw signature lenght %d", dwSigLen);
 	if (!CryptVerifySignature(hHash, sigBlob, dwSigLen, hKey, NULL, 0)) {
 		LOG_ERROR("Signature not validated!  0x%08x ", GetLastError());

--
Gitblit v1.9.1