mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-16 00:00:07 +01:00

Although RSA can be used directly for signing / JWS on large chunks of data since it's only operating on the hash, when JWE support arrives, which allows bulk encryption, it's going to be mandatory to support secondary AES ciphers to use on the bulk data. This adds generic support for all AES modes that OpenSSL and mbedTLS have in common, works on both mbedTLS and OpenSSL the same, and adds unit tests for each mode in api-test-gencrypto, to run in CI.
78 lines
2 KiB
CMake
78 lines
2 KiB
CMake
cmake_minimum_required(VERSION 2.8)
|
|
include(CheckCSourceCompiles)
|
|
|
|
set(SAMP lws-api-test-gencrypto)
|
|
set(SRCS main.c lws-genaes.c)
|
|
|
|
# If we are being built as part of lws, confirm current build config supports
|
|
# reqconfig, else skip building ourselves.
|
|
#
|
|
# If we are being built externally, confirm installed lws was configured to
|
|
# support reqconfig, else error out with a helpful message about the problem.
|
|
#
|
|
MACRO(require_lws_config reqconfig _val result)
|
|
|
|
if (DEFINED ${reqconfig})
|
|
if (${reqconfig})
|
|
set (rq 1)
|
|
else()
|
|
set (rq 0)
|
|
endif()
|
|
else()
|
|
set(rq 0)
|
|
endif()
|
|
|
|
if (${_val} EQUAL ${rq})
|
|
set(SAME 1)
|
|
else()
|
|
set(SAME 0)
|
|
endif()
|
|
|
|
if (LWS_WITH_MINIMAL_EXAMPLES AND NOT ${SAME})
|
|
if (${_val})
|
|
message("${SAMP}: skipping as lws being built without ${reqconfig}")
|
|
else()
|
|
message("${SAMP}: skipping as lws built with ${reqconfig}")
|
|
endif()
|
|
set(${result} 0)
|
|
else()
|
|
if (LWS_WITH_MINIMAL_EXAMPLES)
|
|
set(MET ${SAME})
|
|
else()
|
|
CHECK_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig})
|
|
if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig})
|
|
set(HAS_${reqconfig} 0)
|
|
else()
|
|
set(HAS_${reqconfig} 1)
|
|
endif()
|
|
if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} AND NOT ${_val}))
|
|
set(MET 1)
|
|
else()
|
|
set(MET 0)
|
|
endif()
|
|
endif()
|
|
if (NOT MET)
|
|
if (${_val})
|
|
message(FATAL_ERROR "This project requires lws must have been configured with ${reqconfig}")
|
|
else()
|
|
message(FATAL_ERROR "Lws configuration of ${reqconfig} is incompatible with this project")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
ENDMACRO()
|
|
|
|
set(requirements 1)
|
|
require_lws_config(LWS_WITH_GENAES 1 requirements)
|
|
|
|
if (requirements)
|
|
|
|
add_executable(${SAMP} ${SRCS})
|
|
|
|
if (websockets_shared)
|
|
target_link_libraries(${SAMP} websockets_shared)
|
|
add_dependencies(${SAMP} websockets_shared)
|
|
else()
|
|
target_link_libraries(${SAMP} websockets)
|
|
endif()
|
|
endif()
|
|
|