Deal with OpenSSL in a DLL on Windows
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>
This commit is contained in:
parent
ad2fa331bd
commit
812fa3e42f
6 changed files with 233 additions and 83 deletions
|
@ -32,3 +32,11 @@ else()
|
|||
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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue