diff --git a/CMakeLists.txt b/CMakeLists.txt index 717cae73..104aab6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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") diff --git a/include/gmssl/sm9.h b/include/gmssl/sm9.h index 14d875bd..428b4c72 100644 --- a/include/gmssl/sm9.h +++ b/include/gmssl/sm9.h @@ -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); diff --git a/src/sm9_alg.c b/src/sm9_alg.c index f732dfa1..d4e32d37 100644 --- a/src/sm9_alg.c +++ b/src/sm9_alg.c @@ -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; diff --git a/src/sm9_key.c b/src/sm9_key.c index 7ce3d3d7..931c30c9 100644 --- a/src/sm9_key.c +++ b/src/sm9_key.c @@ -23,6 +23,9 @@ #include +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) { diff --git a/src/sm9_lib.c b/src/sm9_lib.c index 244c7aa2..597368a5 100644 --- a/src/sm9_lib.c +++ b/src/sm9_lib.c @@ -18,6 +18,9 @@ #include #include + +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;