TLS_VERSION-bad.cmake 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. function(download case)
  2. # URL with semantics like https://tls-v1-1.badssl.com:1011 is provided by caller
  3. file(DOWNLOAD ${url} ${ARGN} STATUS status LOG log)
  4. message(STATUS "${case}: ${status}")
  5. if(case MATCHES "1\\.2$" AND NOT status MATCHES "^(35|60);")
  6. message("${log}")
  7. endif()
  8. endfunction()
  9. set(CMAKE_TLS_VERIFY 1)
  10. if(CMAKE_HOST_WIN32 OR CMAKE_HOST_APPLE)
  11. # The OS-native TLS implementations support TLS 1.1.
  12. set(TEST_TLSv1_1 1)
  13. else()
  14. # OpenSSL 3.1+ does not support TLS 1.1 or older without setting
  15. # the security level to 0, which curl (correctly) does not do.
  16. # https://openssl-library.org/news/openssl-3.1-notes/index.html#major-changes-between-openssl-30-and-openssl-310-14-mar-2023
  17. set(TEST_TLSv1_1 0)
  18. endif()
  19. if(TEST_TLSv1_1)
  20. # The default is to allow 1.1.
  21. unset(ENV{CMAKE_TLS_VERSION})
  22. unset(CMAKE_TLS_VERSION)
  23. download(def-1.1)
  24. endif()
  25. # The environment variable overrides the default.
  26. set(ENV{CMAKE_TLS_VERSION} 1.2)
  27. download(env-1.2)
  28. if(TEST_TLSv1_1)
  29. set(ENV{CMAKE_TLS_VERSION} 1.1)
  30. download(env-1.1)
  31. endif()
  32. # The cmake variable overrides the environment variable.
  33. set(ENV{CMAKE_TLS_VERSION} 1.1)
  34. set(CMAKE_TLS_VERSION 1.2)
  35. download(var-1.2)
  36. if(TEST_TLSv1_1)
  37. set(ENV{CMAKE_TLS_VERSION} 1.2)
  38. set(CMAKE_TLS_VERSION 1.1)
  39. download(var-1.1)
  40. endif()
  41. # The explicit argument overrides the cmake variable and the environment variable.
  42. set(ENV{CMAKE_TLS_VERSION} 1.1)
  43. set(CMAKE_TLS_VERSION 1.1)
  44. download(opt-1.2 TLS_VERSION 1.2)
  45. if(TEST_TLSv1_1)
  46. set(ENV{CMAKE_TLS_VERSION} 1.2)
  47. set(CMAKE_TLS_VERSION 1.2)
  48. download(opt-1.1 TLS_VERSION 1.1)
  49. endif()