From ec3965cbc675c4546185caa847cb83191e1a3fcb Mon Sep 17 00:00:00 2001 From: Maximilien Siavelis <maximilien.siavelis@simulease.com> Date: 周六, 06 1月 2018 19:54:45 +0800 Subject: [PATCH] refactor to fix MINGW consistency --- src/library/os/os-win.c | 100 ++------------------------------------------------ 1 files changed, 4 insertions(+), 96 deletions(-) diff --git a/src/library/os/win/os-win.c b/src/library/os/os-win.c similarity index 65% rename from src/library/os/win/os-win.c rename to src/library/os/os-win.c index d3899e7..b6a7f77 100644 --- a/src/library/os/win/os-win.c +++ b/src/library/os/os-win.c @@ -1,18 +1,11 @@ -#ifdef __MINGW32__ -#include <windows.h> -#else +#ifdef _MSC_VER #include <Windows.h> #endif #include <iphlpapi.h> -//definition of size_t -#include <stdlib.h> -#include <stdio.h> -//#include "../../base/base64.h" -#include "../../base/logger.h" -#include"../os.h" -#include "public-key.h" - +#include "../base/logger.h" +#include "os.h" #pragma comment(lib, "IPHLPAPI.lib") + unsigned char* unbase64(const char* ascii, int len, int *flen); FUNCTION_RETURN getOsSpecificIdentifier(unsigned char identifier[6]) { @@ -215,88 +208,3 @@ free(hashStr); } } - -FUNCTION_RETURN verifySignature(const char* stringToVerify, - const char* signatureB64) { - //-------------------------------------------------------------------- - // Declare variables. - // - // hProv: Cryptographic service provider (CSP). This example - // uses the Microsoft Enhanced Cryptographic - // Provider. - // 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. - BYTE pubKey[] = PUBLIC_KEY; - - HCRYPTPROV hProv = 0; - HCRYPTKEY hKey = 0; - HCRYPTHASH hHash = 0; - DWORD dwSigLen; - BYTE* sigBlob; - - //-------------------------------------------------------------------- - // Acquire a handle to the CSP. - - 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 - // CRYPT_NEWKEYSET flag. - LOG_INFO("Error in AcquireContext 0x%08x \n", GetLastError()); - if (NTE_BAD_KEYSET == GetLastError()) { - if (!CryptAcquireContext(&hProv, "license++verify", - MS_ENHANCED_PROV, PROV_RSA_FULL, - CRYPT_NEWKEYSET | CRYPT_VERIFYCONTEXT)) { - LOG_ERROR("Error in AcquireContext 0x%08x \n", GetLastError()); - return FUNC_RET_ERROR; - } - } else { - LOG_ERROR(" Error in AcquireContext 0x%08x \n", GetLastError()); - return FUNC_RET_ERROR; - } - } - - // Use the CryptImportKey function to import the PLAINTEXTKEYBLOB - // 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)) { - LOG_ERROR("Error 0x%08x in importing the PublicKey \n", GetLastError()); - return FUNC_RET_ERROR; - } - - if (CryptCreateHash(hProv, CALG_SHA1, 0, 0, &hHash)) { - LOG_DEBUG("Hash object created."); - } else { - LOG_ERROR("Error in hash creation 0x%08x ", GetLastError()); - CryptReleaseContext(hProv, 0); - return FUNC_RET_ERROR; - } - - if (!CryptHashData(hHash, stringToVerify, (DWORD) strlen(stringToVerify), 0)) { - LOG_ERROR("Error in hashing data 0x%08x ", GetLastError()); - CryptDestroyHash(hHash); - CryptReleaseContext(hProv, 0); - return FUNC_RET_ERROR; - } -#ifdef _DEBUG - LOG_DEBUG("Lenght %d, hashed Data: [%s]", strlen(stringToVerify), stringToVerify); - printHash(&hHash); -#endif - sigBlob = unbase64(signatureB64, (int) strlen(signatureB64), &dwSigLen); - LOG_DEBUG("raw signature lenght %d", dwSigLen); - if (!CryptVerifySignature(hHash, sigBlob, dwSigLen, hKey, NULL, 0)) { - LOG_ERROR("Signature not validated! 0x%08x ", GetLastError()); - free(sigBlob); - CryptDestroyHash(hHash); - CryptReleaseContext(hProv, 0); - return FUNC_RET_ERROR; - } - CryptDestroyHash(hHash); - free(sigBlob); - CryptReleaseContext(hProv, 0); - return FUNC_RET_OK; -} - -- Gitblit v1.9.1