Support DLL in MSVC

This commit is contained in:
Zhi Guan
2022-12-27 17:23:56 +08:00
parent 6803910428
commit 616b5ecb06
5 changed files with 39 additions and 12 deletions

View File

@@ -4,8 +4,6 @@ project(GmSSL)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
option(BUILD_SHARED_LIBS "Build using shared libraries" OFF)
include_directories(include)
set(src
@@ -109,7 +107,6 @@ endif()
if (WIN32)
# list(APPEND src src/u_time.c)
list(APPEND src src/rand_win.c)
elseif (APPLE)
list(APPEND src src/rand_apple.c)
@@ -119,10 +116,18 @@ else()
list(APPEND src src/rand_unix.c)
endif()
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # set before add_library
endif()
add_library(gmssl ${src})
if (WIN32)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
elseif (APPLE)
target_link_libraries(gmssl dl)
target_link_libraries(gmssl "-framework Security")

View File

@@ -81,18 +81,14 @@ SM9 Public API
#define SM9_HEX_SEP '\n'
typedef uint64_t sm9_bn_t[8];
extern const sm9_bn_t SM9_ZERO;
extern const sm9_bn_t SM9_ONE;
extern const sm9_bn_t SM9_P;
extern const sm9_bn_t SM9_N;
#define sm9_bn_init(r) sm9_bn_set_zero(r)
#define sm9_bn_clean(r) sm9_bn_set_zero(r)
#define sm9_bn_set_zero(r) sm9_bn_copy((r), SM9_ZERO)
#define sm9_bn_set_one(r) sm9_bn_copy((r), SM9_ONE)
#define sm9_bn_is_zero(a) (sm9_bn_cmp((a), SM9_ZERO) == 0)
#define sm9_bn_is_one(a) (sm9_bn_cmp((a), SM9_ONE) == 0)
void sm9_bn_set_zero(sm9_bn_t r);
void sm9_bn_set_one(sm9_bn_t r);
int sm9_bn_is_zero(const sm9_bn_t a);
int sm9_bn_is_one(const sm9_bn_t a);
void sm9_bn_set_word(sm9_bn_t r, uint32_t a);
void sm9_bn_copy(sm9_bn_t r, const sm9_bn_t a);
int sm9_bn_rand_range(sm9_bn_t r, const sm9_bn_t range);

View File

@@ -77,6 +77,26 @@ const SM9_TWIST_POINT _SM9_Ppubs = {
const SM9_TWIST_POINT *SM9_Ppubs = &_SM9_Ppubs;
void sm9_bn_set_zero(sm9_bn_t r)
{
sm9_bn_copy(r, SM9_ZERO);
}
void sm9_bn_set_one(sm9_bn_t r)
{
sm9_bn_copy(r, SM9_ONE);
}
int sm9_bn_is_zero(const sm9_bn_t a)
{
return (sm9_bn_cmp(a, SM9_ZERO) == 0);
}
int sm9_bn_is_one(const sm9_bn_t a)
{
return (sm9_bn_cmp(a, SM9_ONE) == 0);
}
void sm9_bn_to_bytes(const sm9_bn_t a, uint8_t out[32])
{
int i;

View File

@@ -23,6 +23,9 @@
#include <gmssl/error.h>
extern const sm9_bn_t SM9_ZERO;
extern const sm9_bn_t SM9_N;
// generate h1 in [1, n-1]
int sm9_hash1(sm9_bn_t h1, const char *id, size_t idlen, uint8_t hid)
{

View File

@@ -18,6 +18,9 @@
#include <gmssl/asn1.h>
#include <gmssl/error.h>
extern const sm9_bn_t SM9_ZERO;
extern const sm9_bn_t SM9_N;
extern const SM9_POINT *SM9_P1;
extern const SM9_TWIST_POINT *SM9_P2;