mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-09 18:04:25 +09:00
The curve25519 depends on ssh_get_random, which is normally built into libssh.
For the external override tests to build, we need to have them in separate
source file that can be included for this test.
For some reason, this did not happen on CI builds, but it did happen in koji
during RPM builds.
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 0da54f2908)
162 lines
5.3 KiB
CMake
162 lines
5.3 KiB
CMake
project(external-override C)
|
|
|
|
include_directories(${CMAKE_SOURCE_DIR}/include)
|
|
|
|
set(LIBSSH_OVERRIDE_TESTS
|
|
torture_override
|
|
)
|
|
|
|
# chacha20_override
|
|
add_library(chacha20_override SHARED
|
|
chacha20_override.c
|
|
${libssh_SOURCE_DIR}/src/external/chacha.c
|
|
)
|
|
set(CHACHA20_OVERRIDE_LIBRARY
|
|
${libssh_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}chacha20_override${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
|
|
# poly1305_override
|
|
add_library(poly1305_override SHARED
|
|
poly1305_override.c
|
|
${libssh_SOURCE_DIR}/src/external/poly1305.c
|
|
)
|
|
set(POLY1305_OVERRIDE_LIBRARY
|
|
${libssh_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}poly1305_override${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
|
|
# ed25519_override
|
|
add_library(ed25519_override SHARED
|
|
ed25519_override.c
|
|
${libssh_SOURCE_DIR}/src/external/fe25519.c
|
|
${libssh_SOURCE_DIR}/src/external/ge25519.c
|
|
${libssh_SOURCE_DIR}/src/external/sc25519.c
|
|
${libssh_SOURCE_DIR}/src/external/ed25519.c
|
|
)
|
|
set(ED25519_OVERRIDE_LIBRARY
|
|
${libssh_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}ed25519_override${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
|
|
# curve25519_override
|
|
set (curve25519_override_src
|
|
curve25519_override.c
|
|
${libssh_SOURCE_DIR}/src/external/curve25519_ref.c
|
|
${libssh_SOURCE_DIR}/src/external/fe25519.c
|
|
${libssh_SOURCE_DIR}/src/external/ge25519.c
|
|
${libssh_SOURCE_DIR}/src/external/sc25519.c
|
|
${libssh_SOURCE_DIR}/src/external/ed25519.c
|
|
)
|
|
if (WITH_GCRYPT)
|
|
set (curve25519_override_src
|
|
${curve25519_override_src}
|
|
${libssh_SOURCE_DIR}/src/getrandom_gcrypt.c
|
|
)
|
|
set(curve25519_override_libs
|
|
${GCRYPT_LIBRARIES}
|
|
)
|
|
elseif (WITH_MBEDTLS)
|
|
set (curve25519_override_src
|
|
${curve25519_override_src}
|
|
${libssh_SOURCE_DIR}/src/getrandom_mbedcrypto.c
|
|
)
|
|
set(curve25519_override_libs
|
|
${MBEDTLS_CRYPTO_LIBRARY}
|
|
)
|
|
else ()
|
|
set (curve25519_override_src
|
|
${curve25519_override_src}
|
|
${libssh_SOURCE_DIR}/src/getrandom_crypto.c
|
|
)
|
|
set(curve25519_override_libs
|
|
${OPENSSL_CRYPTO_LIBRARIES}
|
|
)
|
|
endif (WITH_GCRYPT)
|
|
add_library(curve25519_override SHARED ${curve25519_override_src})
|
|
target_link_libraries(curve25519_override
|
|
PRIVATE ${curve25519_override_libs})
|
|
set(CURVE25519_OVERRIDE_LIBRARY
|
|
${libssh_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}curve25519_override${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
|
|
set(OVERRIDE_LIBRARIES
|
|
${CHACHA20_OVERRIDE_LIBRARY}:${POLY1305_OVERRIDE_LIBRARY}:${ED25519_OVERRIDE_LIBRARY}:${CURVE25519_OVERRIDE_LIBRARY}
|
|
)
|
|
|
|
if (WITH_MBEDTLS)
|
|
if (HAVE_MBEDTLS_CHACHA20_H AND HAVE_MBEDTLS_POLY1305_H)
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CHACHAPOLY=0")
|
|
else ()
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CHACHAPOLY=1")
|
|
endif ()
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_ED25519=1")
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CURVE25519=1")
|
|
elseif (WITH_GCRYPT)
|
|
if (HAVE_GCRYPT_CHACHA_POLY)
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CHACHAPOLY=0")
|
|
else ()
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CHACHAPOLY=1")
|
|
endif ()
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_ED25519=1")
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CURVE25519=1")
|
|
else ()
|
|
if (HAVE_OPENSSL_EVP_CHACHA20 AND HAVE_OPENSSL_EVP_POLY1305)
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CHACHAPOLY=0")
|
|
else ()
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CHACHAPOLY=1")
|
|
endif ()
|
|
|
|
if (HAVE_OPENSSL_ED25519)
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_ED25519=0")
|
|
else ()
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_ED25519=1")
|
|
endif ()
|
|
|
|
if (HAVE_OPENSSL_X25519)
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CURVE25519=0")
|
|
else ()
|
|
list(APPEND OVERRIDE_RESULTS "-DSHOULD_CALL_INTERNAL_CURVE25519=1")
|
|
endif ()
|
|
endif ()
|
|
|
|
if (NOT OSX)
|
|
# Remove any preload string from the environment variables list
|
|
foreach(env_string ${TORTURE_ENVIRONMENT})
|
|
if (${env_string} MATCHES "^LD_PRELOAD=*")
|
|
list(REMOVE_ITEM TORTURE_ENVIRONMENT ${env_string})
|
|
set(PRELOAD_STRING "${env_string}:")
|
|
endif ()
|
|
endforeach ()
|
|
|
|
if ("${PRELOAD_STRING}" STREQUAL "")
|
|
set(PRELOAD_STRING "LD_PRELOAD=")
|
|
endif ()
|
|
|
|
list(APPEND TORTURE_ENVIRONMENT
|
|
"${PRELOAD_STRING}${OVERRIDE_LIBRARIES}")
|
|
endif()
|
|
|
|
foreach(_OVERRIDE_TEST ${LIBSSH_OVERRIDE_TESTS})
|
|
add_cmocka_test(${_OVERRIDE_TEST}
|
|
SOURCES ${_OVERRIDE_TEST}.c
|
|
COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS}
|
|
${OVERRIDE_RESULTS}
|
|
LINK_LIBRARIES
|
|
${TORTURE_SHARED_LIBRARY}
|
|
chacha20_override
|
|
poly1305_override
|
|
ed25519_override
|
|
curve25519_override
|
|
)
|
|
|
|
if (OSX)
|
|
set_property(
|
|
TEST
|
|
${_OVERRIDE_TEST}
|
|
PROPERTY
|
|
ENVIRONMENT DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${OVERRIDE_LIBRARIES})
|
|
|
|
else ()
|
|
set_property(
|
|
TEST
|
|
${_OVERRIDE_TEST}
|
|
PROPERTY
|
|
ENVIRONMENT ${TORTURE_ENVIRONMENT})
|
|
|
|
endif()
|
|
endforeach()
|