CMakeLists.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. find_package(GTest)
  2. if(GTest_FOUND)
  3. if(NOT TARGET GTest::gtest_main AND TARGET GTest::Main)
  4. # CMake <3.20
  5. add_library(GTest::gtest_main INTERFACE IMPORTED)
  6. target_link_libraries(GTest::gtest_main INTERFACE GTest::Main)
  7. endif()
  8. else()
  9. if(POLICY CMP0135)
  10. cmake_policy(SET CMP0135 NEW)
  11. endif()
  12. include(FetchContent)
  13. set(BUILD_GMOCK OFF)
  14. set(INSTALL_GTEST OFF)
  15. set(gtest_force_shared_crt ON)
  16. FetchContent_Declare(
  17. gtest
  18. URL https://github.com/google/googletest/archive/main.tar.gz
  19. )
  20. FetchContent_MakeAvailable(gtest)
  21. endif()
  22. find_package(CURL REQUIRED)
  23. add_executable(httplib-test test.cc)
  24. target_compile_options(httplib-test PRIVATE "$<$<CXX_COMPILER_ID:MSVC>:/utf-8;/bigobj>")
  25. target_link_libraries(httplib-test PRIVATE httplib GTest::gtest_main CURL::libcurl)
  26. gtest_discover_tests(httplib-test)
  27. file(
  28. COPY www www2 www3 ca-bundle.crt image.jpg
  29. DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
  30. )
  31. if(HTTPLIB_IS_USING_OPENSSL)
  32. find_program(OPENSSL_COMMAND
  33. NAMES openssl
  34. PATHS ${OPENSSL_INCLUDE_DIR}/../bin
  35. REQUIRED
  36. )
  37. execute_process(
  38. COMMAND ${OPENSSL_COMMAND} genrsa 2048
  39. OUTPUT_FILE key.pem
  40. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  41. COMMAND_ERROR_IS_FATAL ANY
  42. )
  43. execute_process(
  44. COMMAND ${OPENSSL_COMMAND} req -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key key.pem
  45. COMMAND ${OPENSSL_COMMAND} x509 -days 3650 -req -signkey key.pem
  46. OUTPUT_FILE cert.pem
  47. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  48. COMMAND_ERROR_IS_FATAL ANY
  49. )
  50. execute_process(
  51. COMMAND ${OPENSSL_COMMAND} req -x509 -new -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key key.pem -sha256 -days 3650 -nodes -out cert2.pem -extensions SAN
  52. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  53. COMMAND_ERROR_IS_FATAL ANY
  54. )
  55. execute_process(
  56. COMMAND ${OPENSSL_COMMAND} genrsa 2048
  57. OUTPUT_FILE rootCA.key.pem
  58. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  59. COMMAND_ERROR_IS_FATAL ANY
  60. )
  61. execute_process(
  62. COMMAND ${OPENSSL_COMMAND} req -x509 -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.rootCA.conf -key rootCA.key.pem -days 1024
  63. OUTPUT_FILE rootCA.cert.pem
  64. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  65. COMMAND_ERROR_IS_FATAL ANY
  66. )
  67. execute_process(
  68. COMMAND ${OPENSSL_COMMAND} genrsa 2048
  69. OUTPUT_FILE client.key.pem
  70. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  71. COMMAND_ERROR_IS_FATAL ANY
  72. )
  73. execute_process(
  74. COMMAND ${OPENSSL_COMMAND} req -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key client.key.pem
  75. COMMAND ${OPENSSL_COMMAND} x509 -days 370 -req -CA rootCA.cert.pem -CAkey rootCA.key.pem -CAcreateserial
  76. OUTPUT_FILE client.cert.pem
  77. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  78. COMMAND_ERROR_IS_FATAL ANY
  79. )
  80. execute_process(
  81. COMMAND ${OPENSSL_COMMAND} genrsa -passout pass:test123! 2048
  82. OUTPUT_FILE key_encrypted.pem
  83. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  84. COMMAND_ERROR_IS_FATAL ANY
  85. )
  86. execute_process(
  87. COMMAND ${OPENSSL_COMMAND} req -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key key_encrypted.pem
  88. COMMAND ${OPENSSL_COMMAND} x509 -days 3650 -req -signkey key_encrypted.pem
  89. OUTPUT_FILE cert_encrypted.pem
  90. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  91. COMMAND_ERROR_IS_FATAL ANY
  92. )
  93. execute_process(
  94. COMMAND ${OPENSSL_COMMAND} genrsa -aes256 -passout pass:test012! 2048
  95. OUTPUT_FILE client_encrypted.key.pem
  96. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  97. COMMAND_ERROR_IS_FATAL ANY
  98. )
  99. execute_process(
  100. COMMAND ${OPENSSL_COMMAND} req -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key client_encrypted.key.pem -passin pass:test012!
  101. COMMAND ${OPENSSL_COMMAND} x509 -days 370 -req -CA rootCA.cert.pem -CAkey rootCA.key.pem -CAcreateserial
  102. OUTPUT_FILE client_encrypted.cert.pem
  103. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  104. COMMAND_ERROR_IS_FATAL ANY
  105. )
  106. endif()
  107. add_subdirectory(fuzzing)