Skip to content

Let user decide to use OpenSSL or MbedTLS #295

@rherrmannr

Description

@rherrmannr

If MbedTLS and OpenSSL are installed, the user can not decide which library should be used. OpenSSL will be used first.
https://github.com/goToMain/libosdp/blob/master/src/CMakeLists.txt#L39C1-L46C8

# optionally, find and use OpenSSL or MbedTLS
find_package(OpenSSL)

if (NOT OpenSSL_FOUND)
	find_package(MbedTLS)
else()
	set(MbedTLS_FOUND FALSE)
endif()

A selection would be nice instead:

-DCONFIG_OSDP_CRYPTO=mbedtls
set(CONFIG_OSDP_CRYPTO_DEFAULT "tinyaes")

set(CONFIG_OSDP_CRYPTO "${CONFIG_OSDP_CRYPTO_DEFAULT}" CACHE STRING
    "Select crypto backend: tinyAES, mbedtls, openssl")
set_property(CACHE CONFIG_OSDP_CRYPTO PROPERTY STRINGS tinyAES mbedtls openssl)

string(TOLOWER "${CONFIG_OSDP_CRYPTO}" CONFIG_OSDP_CRYPTO)

set(VALID_BACKENDS tinyaes mbedtls openssl)

list(FIND VALID_BACKENDS "${CONFIG_OSDP_CRYPTO}" INDEX)

if(INDEX EQUAL -1)
    message(WARNING
        "Invalid CONFIG_OSDP_CRYPTO='${CONFIG_OSDP_CRYPTO}', falling back to default '${CONFIG_OSDP_CRYPTO_DEFAULT}'")
    set(CONFIG_OSDP_CRYPTO "${CONFIG_OSDP_CRYPTO_DEFAULT}")
else()
    message(STATUS "Using crypto backend: ${CONFIG_OSDP_CRYPTO}")
endif()

if(CONFIG_OSDP_CRYPTO STREQUAL "mbedtls")
    find_package(MbedTLS REQUIRED)
    if(NOT MbedTLS_FOUND)
        message(FATAL_ERROR "mbedtls requested but not found on the system")
    endif()
elseif(CONFIG_OSDP_CRYPTO STREQUAL "openssl")
    find_package(OpenSSL REQUIRED)
    if(NOT OpenSSL_FOUND)
        message(FATAL_ERROR "OpenSSL requested but not found on the system")
    endif()
endif()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions