enable_testing()
-find_package(OpenSSL 1.1.1 REQUIRED)
+find_package(OpenSSL 3.0 REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})
if (CMAKE_C_COMPILER_ID MATCHES "Clang")
include (TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
if(IS_BIG_ENDIAN)
- message(STATUS "BIG_ENDIAN")
else()
- message(STATUS "LITTLE_ENDIAN")
add_definitions(-DL_ENDIAN)
endif()
set(BIN_DIRECTORY bin)
+# Same soversion as OpenSSL
+set(GOST_SOVERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}")
+
set(OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${BIN_DIRECTORY})
#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY})
gost_omac_acpkm.c
)
+set(GOST_PROVIDER_SOURCE_FILES
+ gost_prov.c)
+
+add_executable(test_digest test_digest.c)
+target_link_libraries(test_digest gost_engine gost_core ${OPENSSL_CRYPTO_LIBRARY})
+add_test(NAME digest
+ COMMAND test_digest)
+
add_executable(test_curves test_curves.c)
target_link_libraries(test_curves gost_engine gost_core ${OPENSSL_CRYPTO_LIBRARY})
add_test(NAME curves
COMMAND perl run_tests
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test)
set_tests_properties(engine PROPERTIES ENVIRONMENT
- "OPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR};OPENSSL_ENGINES=${OUTPUT_DIRECTORY}")
+ "OPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR};OPENSSL_ENGINES=${OUTPUT_DIRECTORY};OPENSSL_CONF=${CMAKE_SOURCE_DIR}/test/empty.cnf")
endif()
add_executable(sign benchmark/sign.c)
# All that may need to load just built engine will have path to it defined.
set(BINARY_TESTS_TARGETS
+ test_digest
test_curves
test_params
test_sign
add_library(gost_core STATIC ${GOST_LIB_SOURCE_FILES})
set_target_properties(gost_core PROPERTIES POSITION_INDEPENDENT_CODE ON)
-add_library(gost_engine MODULE ${GOST_ENGINE_SOURCE_FILES})
+add_library(gost_engine SHARED ${GOST_ENGINE_SOURCE_FILES})
set_target_properties(gost_engine PROPERTIES PREFIX "" OUTPUT_NAME "gost")
+set_target_properties(gost_engine PROPERTIES VERSION ${GOST_SOVERSION} SOVERSION ${GOST_SOVERSION})
target_link_libraries(gost_engine gost_core ${OPENSSL_CRYPTO_LIBRARY})
+add_library(gost_provider SHARED ${GOST_PROVIDER_SOURCE_FILES})
+set_target_properties(gost_provider PROPERTIES PREFIX "" OUTPUT_NAME "gost_prov")
+set_target_properties(gost_provider PROPERTIES VERSION ${GOST_SOVERSION} SOVERSION ${GOST_SOVERSION})
+target_link_libraries(gost_provider gost_core ${OPENSSL_CRYPTO_LIBRARY})
+
set(GOST_SUM_SOURCE_FILES
gostsum.c
)