Skip to content

Commit

Permalink
Fix building mbed TLS with CMake and allow specifying custom directories
Browse files Browse the repository at this point in the history
When installing mbed TLS 2.x and 3.x in parallel, it is useful to point
cmake to the version that should be used.

This fixes also building mbed TLS versions with cmake.

Change-Id: I7fd9e730e87210d2b7d090c8f9c7c6734bd7374e
Signed-off-by: Arne Schwabe <[email protected]>
Acked-by: Frank Lichtenheld <[email protected]>
Message-Id: <[email protected]>
URL: https://www.mail-archive.com/[email protected]/msg27763.html
Signed-off-by: Gert Doering <[email protected]>
  • Loading branch information
schwabe authored and cron2 committed Dec 12, 2023
1 parent 975ef50 commit 8656b85
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 9 deletions.
28 changes: 27 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/config.h")
endif ()

option(MBED "BUILD with mbed" OFF)
set(MBED_INCLUDE_PATH "" CACHE STRING "Path to mbed TLS include directory")
set(MBED_LIBRARY_PATH "" CACHE STRING "Path to mbed library directory")
option(WOLFSSL "BUILD with wolfSSL" OFF)
option(ENABLE_LZ4 "BUILD with lz4" ON)
option(ENABLE_LZO "BUILD with lzo" ON)
Expand Down Expand Up @@ -239,9 +241,33 @@ if (${ENABLE_PKCS11})
pkg_search_module(pkcs11-helper libpkcs11-helper-1 REQUIRED IMPORTED_TARGET)
endif ()

function(check_mbed_configuration)
if (NOT (MBED_INCLUDE_PATH STREQUAL "") )
set(CMAKE_REQUIRED_INCLUDES ${MBED_INCLUDE_PATH})
endif ()
if (NOT (MBED_LIBRARY_PATH STREQUAL ""))
set(CMAKE_REQUIRED_LINK_OPTIONS "-L${MBED_LIBRARY_PATH}")
endif ()
set(CMAKE_REQUIRED_LIBRARIES "mbedtls;mbedx509;mbedcrypto")
check_symbol_exists(mbedtls_ctr_drbg_update_ret mbedtls/ctr_drbg.h HAVE_MBEDTLS_CTR_DRBG_UPDATE_RET)
check_symbol_exists(mbedtls_ssl_conf_export_keys_ext_cb mbedtls/ssl.h HAVE_MBEDTLS_SSL_CONF_EXPORT_KEYS_EXT_CB)
check_include_files(psa/crypto.h HAVE_MBEDTLS_PSA_CRYPTO_H)
endfunction()

if (${MBED})
check_mbed_configuration()
endif()

function(add_library_deps target)
if (${MBED})
target_link_libraries(${target} -lmbedtls -lmbedx509 -lmbedcrypto)
if (NOT (MBED_INCLUDE_PATH STREQUAL "") )
target_include_directories(${target} PRIVATE ${MBED_INCLUDE_PATH})
endif ()
if(NOT (MBED_LIBRARY_PATH STREQUAL ""))
target_link_directories(${target} PRIVATE ${MBED_LIBRARY_PATH})
endif ()

target_link_libraries(${target} PRIVATE -lmbedtls -lmbedx509 -lmbedcrypto)
elseif (${WOLFSSL})
pkg_search_module(wolfssl wolfssl REQUIRED)
target_link_libraries(${target} PUBLIC ${wolfssl_LINK_LIBRARIES})
Expand Down
8 changes: 4 additions & 4 deletions config.h.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -378,11 +378,11 @@ don't. */
/* Define to 1 if you have the <vfork.h> header file. */
#undef HAVE_VFORK_H

/* we always assume a recent mbed TLS version */
#define HAVE_MBEDTLS_PSA_CRYPTO_H 1
/* Availability of different mbed TLS features and APIs */
#cmakedefine01 HAVE_MBEDTLS_PSA_CRYPTO_H
#define HAVE_MBEDTLS_SSL_TLS_PRF 1
#define HAVE_MBEDTLS_SSL_SET_EXPORT_KEYS_CB 1
#define HAVE_MBEDTLS_CTR_DRBG_UPDATE_RET 1
#cmakedefine01 HAVE_MBEDTLS_SSL_SET_EXPORT_KEYS_CB
#cmakedefine01 HAVE_MBEDTLS_CTR_DRBG_UPDATE_RET

/* Path to ifconfig tool */
#define IFCONFIG_PATH "@IFCONFIG_PATH@"
Expand Down
8 changes: 4 additions & 4 deletions src/openvpn/mbedtls_compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,13 @@ mbedtls_compat_ctr_drbg_update(mbedtls_ctr_drbg_context *ctx,
const unsigned char *additional,
size_t add_len)
{
#if HAVE_MBEDTLS_CTR_DRBG_UPDATE_RET
#if MBEDTLS_VERSION_NUMBER > 0x03000000
return mbedtls_ctr_drbg_update(ctx, additional, add_len);
#elif HAVE_MBEDTLS_CTR_DRBG_UPDATE_RET
return mbedtls_ctr_drbg_update_ret(ctx, additional, add_len);
#elif MBEDTLS_VERSION_NUMBER < 0x03020100
#else
mbedtls_ctr_drbg_update(ctx, additional, add_len);
return 0;
#else
return mbedtls_ctr_drbg_update(ctx, additional, add_len);
#endif /* HAVE_MBEDTLS_CTR_DRBG_UPDATE_RET */
}

Expand Down

0 comments on commit 8656b85

Please sign in to comment.