Add liboqs integration to CMake build system (#5407)

* Add liboqs integration to CMake build system

* Rephrase WOLFSSL_OQS option

* Add new FindOQS.cmake file to cmake/include.am

Co-authored-by: Disyer <denialmc1@gmail.com>
This commit is contained in:
Derzsi Dániel 2022-08-12 20:23:24 +00:00 committed by GitHub
parent 60437bba6e
commit f515916f68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 0 deletions

View File

@ -44,7 +44,9 @@ set(LIBTOOL_FULL_VERSION ${LIBTOOL_SO_VERSION}.${LIBTOOL_AGE}.${LIBTOOL_REVISION
set(WOLFSSL_DEFINITIONS)
set(WOLFSSL_LINK_LIBS)
set(WOLFSSL_INCLUDE_DIRS)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/")
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/functions.cmake)
####################################################
@ -377,6 +379,24 @@ endif()
set(WOLFSSL_SLOW_MATH "yes")
# liboqs
add_option(WOLFSSL_OQS
"Enable integration with the OQS (Open Quantum Safe) liboqs library (default: disabled)"
"no" "yes;no")
if (WOLFSSL_OQS)
find_package(OQS)
if (OQS_FOUND)
list(APPEND WOLFSSL_LINK_LIBS ${OQS_LIBRARY})
list(APPEND WOLFSSL_INCLUDE_DIRS ${OQS_INCLUDE_DIR})
set(HAVE_LIBOQS 1)
list(APPEND WOLFSSL_DEFINITIONS
"-DHAVE_TLS_EXTENSIONS"
"-DHAVE_LIBOQS")
endif()
endif()
# TODO: - Lean PSK
# - Lean TLS
# - Low resource
@ -1803,6 +1823,7 @@ target_include_directories(wolfssl
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
${WOLFSSL_INCLUDE_DIRS}
)
####################################################

View File

@ -190,6 +190,9 @@ function(generate_build_flags)
if(WOLFSSL_XCHACHA OR WOLFSSL_USER_SETTINGS)
set(BUILD_XCHACHA "yes" PARENT_SCOPE)
endif()
if(WOLFSSL_OQS OR WOLFSSL_USER_SETTINGS)
set(BUILD_FALCON "yes" PARENT_SCOPE)
endif()
set(BUILD_INLINE ${WOLFSSL_INLINE} PARENT_SCOPE)
if(WOLFSSL_OCSP OR WOLFSSL_USER_SETTINGS)
set(BUILD_OCSP "yes" PARENT_SCOPE)
@ -788,6 +791,10 @@ function(generate_lib_src_list LIB_SOURCES)
endif()
endif()
if(BUILD_FALCON)
list(APPEND LIB_SOURCES wolfcrypt/src/falcon.c)
endif()
if(BUILD_LIBZ)
list(APPEND LIB_SOURCES wolfcrypt/src/compress.c)
endif()

View File

@ -1,2 +1,3 @@
EXTRA_DIST += cmake/config.in
EXTRA_DIST += cmake/functions.cmake
EXTRA_DIST += cmake/modules/FindOQS.cmake

View File

@ -0,0 +1,20 @@
# Filename: FindOQS.cmake
# Authors: darktohka (27 Jul, 2022)
#
# Usage:
# find_package(OQS [REQUIRED] [QUIET])
#
# Once done this will define:
# OQS_FOUND - system has liboqs
# OQS_INCLUDE_DIR - the include directory containing oqs/
# OQS_LIBRARY - the path to the liboqs library
#
find_path(OQS_INCLUDE_DIR NAMES "oqs/common.h")
find_library(OQS_LIBRARY NAMES "oqs")
mark_as_advanced(OQS_INCLUDE_DIR OQS_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OQS DEFAULT_MSG OQS_INCLUDE_DIR OQS_LIBRARY)