
OpenSSL doesn't support using BIOs of the "fd" or "file" type when it is built as a DLL and the executable didn't provide it with access to the executable's CRT. Requiring all applications that wish to use security to worry about this "applink.c" thing is too onerous a requirement. * Check for the existence of "applink.c" in the OpenSSL include directory, adding it to the security tests if it exists. This way, all of OpenSSL can be used by the tests. * Include it in the security core and built-in plugin tests. This way, the test code can use the entirety of OpenSSL. * In the authentication and access-control plugins, load X509 and private keys from files by first reading them into a "mem" type BIO, then reading them from that BIO. * Take care not to call ddsrt_free on OpenSSL-allocated memory, either by calling OPENSSL_free, or by allocating the memory using ddsrt_malloc and letting OpenSSL fill that buffer. Signed-off-by: Erik Boasson <eb@ilities.com>
42 lines
1.6 KiB
CMake
42 lines
1.6 KiB
CMake
#
|
|
# Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
|
#
|
|
# This program and the accompanying materials are made available under the
|
|
# terms of the Eclipse Public License v. 2.0 which is available at
|
|
# http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
|
|
# v. 1.0 which is available at
|
|
# http://www.eclipse.org/org/documents/edl-v10.php.
|
|
#
|
|
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
|
#
|
|
if(TARGET CONAN_PKG::OpenSSL)
|
|
add_library(OpenSSL::SSL INTERFACE IMPORTED)
|
|
target_link_libraries(OpenSSL::SSL INTERFACE CONAN_PKG::OpenSSL)
|
|
set(OPENSSL_FOUND TRUE)
|
|
else()
|
|
# Loop over a list of possible module paths (without the current directory).
|
|
get_filename_component(DIR "${CMAKE_CURRENT_LIST_DIR}" ABSOLUTE)
|
|
|
|
foreach(MODULE_DIR ${CMAKE_MODULE_PATH} ${CMAKE_ROOT}/Modules)
|
|
get_filename_component(MODULE_DIR "${MODULE_DIR}" ABSOLUTE)
|
|
if(NOT MODULE_DIR STREQUAL DIR)
|
|
if(EXISTS "${MODULE_DIR}/FindOpenSSL.cmake")
|
|
set(FIND_PACKAGE_FILE "${MODULE_DIR}/FindOpenSSL.cmake")
|
|
break()
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
|
|
if(FIND_PACKAGE_FILE)
|
|
include("${FIND_PACKAGE_FILE}")
|
|
endif()
|
|
endif()
|
|
|
|
# OpenSSL DLL on Windows: use of BIO_s_fd and BIO_s_file (directly or indirectly) requires
|
|
# the executable to incorporate OpenSSL applink.c. CMake 18 adds support for handling
|
|
# this as part of the OpenSSL package, but we can't require such a new CMake version.
|
|
if(OPENSSL_FOUND AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/applink.c")
|
|
set(CYCLONEDDS_OPENSSL_APPLINK "${OPENSSL_INCLUDE_DIR}/openssl/applink.c")
|
|
else()
|
|
set(CYCLONEDDS_OPENSSL_APPLINK "")
|
|
endif()
|