+# Generate self-signed SSL certs for the test-server.
+
+if (LWS_WITH_SSL AND NOT LWS_USE_WOLFSSL)
+ message("Searching for OpenSSL executable and dlls")
+ find_package(OpenSSLbins)
+ message("OpenSSL executable: ${OPENSSL_EXECUTABLE}")
+ if (OPENSSL_EXECUTABLE MATCHES "^$")
+ set(OPENSSL_EXECUTABLE openssl)
+ endif()
+ if (NOT OPENSSL_EXECUTABLE)
+ set(OPENSSL_EXECUTABLE openssl)
+ endif()
+
+endif()
+
+set(GENCERTS 0)
+
+if (LWS_WITH_SSL AND OPENSSL_EXECUTABLE AND NOT LWS_WITHOUT_TEST_SERVER)
+ set(GENCERTS 1)
+endif()
+if (LWS_WITH_ESP32)
+ set(GENCERTS 1)
+endif()
+message(" GENCERTS = ${GENCERTS}")
+if (GENCERTS)
+ message("Generating SSL Certificates for the test-server...")
+
+ set(TEST_SERVER_SSL_KEY "${PROJECT_BINARY_DIR}/libwebsockets-test-server.key.pem")
+ set(TEST_SERVER_SSL_CERT "${PROJECT_BINARY_DIR}/libwebsockets-test-server.pem")
+
+ if (WIN32)
+ if (MINGW)
+ message("cmd = \"${OPENSSL_EXECUTABLE}\" req -new -newkey rsa:1024 -days 10000 -nodes -x509 -subj \"/C=GB/ST=Erewhon/L=All around/O=libwebsockets-test/CN=localhost\" -keyout \"${TEST_SERVER_SSL_KEY}\" -out \"${TEST_SERVER_SSL_CERT}\"")
+ execute_process(
+ COMMAND "${OPENSSL_EXECUTABLE}" req -new -newkey rsa:1024 -days 10000 -nodes -x509 -subj "/C=GB/ST=Erewhon/L=All around/O=libwebsockets-test/CN=localhost" -keyout "${TEST_SERVER_SSL_KEY}" -out "${TEST_SERVER_SSL_CERT}"
+ RESULT_VARIABLE OPENSSL_RETURN_CODE)
+ else()
+ file(WRITE "${PROJECT_BINARY_DIR}/openssl_input.txt"
+ "GB\n"
+ "Erewhon\n"
+ "All around\n"
+ "libwebsockets-test\n"
+ "localhost\n"
+ "none@invalid.org\n\n"
+ )
+
+ # The "type" command is a bit picky with paths.
+ file(TO_NATIVE_PATH "${PROJECT_BINARY_DIR}/openssl_input.txt" OPENSSL_INPUT_WIN_PATH)
+ message("OPENSSL_INPUT_WIN_PATH = ${OPENSSL_INPUT_WIN_PATH}")
+ message("cmd = \"${OPENSSL_EXECUTABLE}\" req -new -newkey rsa:1024 -days 10000 -nodes -x509 -keyout \"${TEST_SERVER_SSL_KEY}\" -out \"${TEST_SERVER_SSL_CERT}\"")
+
+ execute_process(
+ COMMAND cmd /c type "${OPENSSL_INPUT_WIN_PATH}"
+ COMMAND "${OPENSSL_EXECUTABLE}" req -new -newkey rsa:1024 -days 10000 -nodes -x509 -keyout "${TEST_SERVER_SSL_KEY}" -out "${TEST_SERVER_SSL_CERT}"
+ RESULT_VARIABLE OPENSSL_RETURN_CODE
+ OUTPUT_QUIET ERROR_QUIET)
+
+ message("\n")
+ endif()
+
+ if (OPENSSL_RETURN_CODE)
+ message(WARNING "!!! Failed to generate SSL certificate for Test Server using cmd.exe !!!:\nOpenSSL return code = ${OPENSSL_RETURN_CODE}")
+ else()
+ message("SUCCSESFULLY generated SSL certificate")
+ endif()
+ else()
+ # Unix.
+ execute_process(
+ COMMAND printf "GB\\nErewhon\\nAll around\\nlibwebsockets-test\\n\\nlocalhost\\nnone@invalid.org\\n"
+ COMMAND "${OPENSSL_EXECUTABLE}"
+ req -new -newkey rsa:1024 -days 10000 -nodes -x509 -keyout "${TEST_SERVER_SSL_KEY}" -out "${TEST_SERVER_SSL_CERT}"
+ RESULT_VARIABLE OPENSSL_RETURN_CODE
+ # OUTPUT_QUIET ERROR_QUIET
+ )
+
+ if (OPENSSL_RETURN_CODE)
+ message(WARNING "!!! Failed to generate SSL certificate for Test Server!!!:\nOpenSSL return code = ${OPENSSL_RETURN_CODE}")
+ else()
+ message("SUCCESSFULLY generated SSL certificate")
+ endif()
+ endif()
+
+ list(APPEND TEST_SERVER_DATA
+ "${TEST_SERVER_SSL_KEY}"
+ "${TEST_SERVER_SSL_CERT}")
+endif()
+
+