From 58fda1f721d366ba14d0305061c0c53d6b294bf2 Mon Sep 17 00:00:00 2001 From: Zhi Guan Date: Thu, 6 Oct 2022 14:23:30 +0800 Subject: [PATCH] Fix Visual Studio compiling errors --- CMakeLists.txt | 11 ++++++++--- src/x509_cer.c | 12 ++++++++++++ tests/hmactest.c | 9 ++++++--- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b49761ac..c7157bc3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,16 @@ cmake_minimum_required(VERSION 3.0) project(GmSSL) -set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) -option(BUILD_SHARED_LIBS "Build using shared libraries" ON) +if (WIN32) + set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) + set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) +else() + set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) + set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) +endif() +option(BUILD_SHARED_LIBS "Build using shared libraries" OFF) include_directories(include) #enable_language(ASM) diff --git a/src/x509_cer.c b/src/x509_cer.c index e10703cc..2edcf606 100644 --- a/src/x509_cer.c +++ b/src/x509_cer.c @@ -25,6 +25,10 @@ #include #include +#ifdef WIN32 +#include "u_time.h" +#endif + const char *x509_version_name(int version) { @@ -97,7 +101,11 @@ int x509_time_to_der(time_t tv, uint8_t **out, size_t *outlen) int ret; struct tm tm_val; +#ifdef WIN32 + GMSSL_gmtime(&tv, &tm_val); +#else gmtime_r(&tv, &tm_val); +#endif if (tm_val.tm_year < 2050 - 1900) { if ((ret = asn1_utc_time_to_der(tv, out, outlen)) != 1) { if (ret < 0) error_print(); @@ -136,7 +144,11 @@ int x509_validity_add_days(time_t *not_after, time_t not_before, int days) error_print(); return -1; } +#ifdef WIN32 + GMSSL_gmtime(¬_before, &tm_val); +#else gmtime_r(¬_before, &tm_val); +#endif tm_val.tm_mday += days; *not_after = mktime(&tm_val); return 1; diff --git a/tests/hmactest.c b/tests/hmactest.c index 48b76ba8..6efb1128 100644 --- a/tests/hmactest.c +++ b/tests/hmactest.c @@ -84,9 +84,9 @@ struct { int test_hmac(const DIGEST *digest, const char *key_hex, const char *data_hex, const char *hmac_hex) { HMAC_CTX ctx; - uint8_t key[strlen(key_hex)/2]; - uint8_t data[strlen(data_hex)/2]; - uint8_t hmac[strlen(hmac_hex)/2]; + uint8_t key = malloc(strlen(key_hex)/2); // FIXME: malloc + uint8_t data = malloc(strlen(data_hex)/2); + uint8_t hmac = malloc(strlen(hmac_hex) / 2); uint8_t buf[64]; size_t len; @@ -103,6 +103,9 @@ int test_hmac(const DIGEST *digest, const char *key_hex, const char *data_hex, c return 0; } printf("ok\n"); + if (key) free(key); + if (data) free(data); + if (hmac) free(hmac); return 1; }