From f4e683fc6bd6ac76f9979f49d737588b6ddf16b0 Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周六, 14 11月 2020 22:13:13 +0800
Subject: [PATCH] windows smbios

---
 src/library/os/windows/signature_verifier.cpp |   33 ++++++++++++++++-----------------
 1 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/src/library/os/windows/signature_verifier.cpp b/src/library/os/windows/signature_verifier.cpp
index 6e9b62d..083845e 100644
--- a/src/library/os/windows/signature_verifier.cpp
+++ b/src/library/os/windows/signature_verifier.cpp
@@ -15,7 +15,7 @@
 #include <wincrypt.h>
 #include <iphlpapi.h>
 #include <windows.h>
-#pragma comment(lib, "bcrypt.lib")
+//#pragma comment(lib, "bcrypt.lib")
 
 #include <public_key.h>
 #include "../../base/logger.h"
@@ -29,7 +29,7 @@
 using namespace std;
 #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
 
-static const void formatError(DWORD status, const char* description) {
+static const void formatError(DWORD status, const char *description) {
 	char msgBuffer[256];
 	FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, status, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &msgBuffer[0],
 				  sizeof(msgBuffer) - 1, nullptr);
@@ -67,7 +67,7 @@
 	cout << (len & 0x80) << endl;
 	if ((len & 0x80) > 0) {
 		size_t blen = len & 0x7F;
-		for (int i = 0; i < blen; i++) {
+		for (size_t i = 0; i < blen; i++) {
 			result += (*(ptr++) << (i * 8));
 		}
 	} else {
@@ -99,7 +99,7 @@
 	if (expected_length < length) {
 		return FUNC_RET_ERROR;
 	}
-	for (int i = 0; i < length; i++) {
+	for (size_t i = 0; i < length; i++) {
 		location[i] = *(ptr++);
 	}
 	return FUNC_RET_OK;
@@ -124,7 +124,7 @@
 												sizeof(pubk), 0))) {
 		result = FUNC_RET_OK;
 	} else {
-#ifdef _DEBUG
+#ifndef NDEBUG
 		formatError(status, "error importing public key");
 #endif
 	}
@@ -136,13 +136,12 @@
 	DWORD status;
 	FUNCTION_RETURN result = FUNC_RET_ERROR;
 	PBYTE pbSignature = nullptr;
-	BYTE* sigBlob = nullptr;
 	BCRYPT_ALG_HANDLE hSignAlg = nullptr;
 
 	vector<uint8_t> signatureBlob = unbase64(signatureBuffer);
-	DWORD dwSigLen = signatureBlob.size();
-	sigBlob = &signatureBlob[0]; 
-	
+	DWORD dwSigLen = (DWORD) signatureBlob.size();
+	BYTE* sigBlob = &signatureBlob[0];
+
 	if (NT_SUCCESS(status = BCryptOpenAlgorithmProvider(&hSignAlg, BCRYPT_RSA_ALGORITHM, NULL, 0))) {
 		if ((result = readPublicKey(hSignAlg, &phKey)) == FUNC_RET_OK) {
 			BCRYPT_PKCS1_PADDING_INFO paddingInfo;
@@ -153,7 +152,7 @@
 				result = FUNC_RET_OK;
 			} else {
 				result = FUNC_RET_ERROR;
-#ifdef _DEBUG
+#ifndef NDEBUG
 				formatError(status, "error verifying signature");
 #endif
 			}
@@ -163,7 +162,7 @@
 	}
 	else {
 		result = FUNC_RET_NOT_AVAIL;
-#ifdef _DEBUG
+#ifndef NDEBUG
 		formatError(status, "error opening RSA provider");
 #endif
 	}
@@ -174,9 +173,9 @@
 	if (hSignAlg != nullptr) {
 		BCryptCloseAlgorithmProvider(hSignAlg, 0);
 	}
-	if (sigBlob) {
-		free(sigBlob);
-	}
+	//if (sigBlob) {
+	//	free(sigBlob);
+	//}
 	return result;
 }
 
@@ -208,13 +207,13 @@
 					result = verifyHash(pbHashData, cbHashDataLenght, signatureB64);
 				} else {
 					result = FUNC_RET_NOT_AVAIL;
-#ifdef _DEBUG
+#ifndef NDEBUG
 					formatError(status, "error hashing data");
 #endif
 				}
 			} else {
 				result = FUNC_RET_NOT_AVAIL;
-#ifdef _DEBUG
+#ifndef NDEBUG
 				formatError(status, "error creating hash");
 #endif
 			}
@@ -224,7 +223,7 @@
 		}
 	} else {
 		result = FUNC_RET_NOT_AVAIL;
-#ifdef _DEBUG
+#ifndef NDEBUG
 		formatError(status, "**** Error returned by BCryptGetProperty");
 #endif
 	}

--
Gitblit v1.9.1