diff options
author | Brad King <brad.king@kitware.com> | 2024-02-26 16:35:46 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-02-28 13:40:14 (GMT) |
commit | 8e6776b9f3f17aa234e38ead7047f64c539cda1c (patch) | |
tree | fd042479f1d3fdbcb59fb6e701675a56a5c0674d /Source/cmCurl.cxx | |
parent | 9d1f831818fe34891be691837dfde2352cf5b6bd (diff) | |
download | CMake-8e6776b9f3f17aa234e38ead7047f64c539cda1c.zip CMake-8e6776b9f3f17aa234e38ead7047f64c539cda1c.tar.gz CMake-8e6776b9f3f17aa234e38ead7047f64c539cda1c.tar.bz2 |
file(DOWNLOAD|UPLOAD): Add TLS_VERSION option for https connections
Add an option to specify the minimum allowed TLS version for https
connections.
Issue: #25701
Diffstat (limited to 'Source/cmCurl.cxx')
-rw-r--r-- | Source/cmCurl.cxx | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/cmCurl.cxx b/Source/cmCurl.cxx index 24ba368..ae242ee 100644 --- a/Source/cmCurl.cxx +++ b/Source/cmCurl.cxx @@ -2,6 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmCurl.h" +#include <cm/string_view> +#include <cmext/string_view> + #if !defined(CMAKE_USE_SYSTEM_CURL) && !defined(_WIN32) && \ !defined(__APPLE__) && !defined(CURL_CA_BUNDLE) && !defined(CURL_CA_PATH) # define CMAKE_FIND_CAFILE @@ -31,6 +34,26 @@ } \ } while (false) +cm::optional<int> cmCurlParseTLSVersion(std::string const& tls_version) +{ + cm::optional<int> v; + if (tls_version == "1.0"_s) { + v = CURL_SSLVERSION_TLSv1_0; + } else if (tls_version == "1.1"_s) { + v = CURL_SSLVERSION_TLSv1_1; + } else if (tls_version == "1.2"_s) { + v = CURL_SSLVERSION_TLSv1_2; + } else if (tls_version == "1.3"_s) { + // curl version 7.52.0 introduced TLS 1.3 support +#if defined(LIBCURL_VERSION_NUM) && LIBCURL_VERSION_NUM >= 0x073400 + v = CURL_SSLVERSION_TLSv1_3; +#else + v = CURL_SSLVERSION_LAST; +#endif + } + return v; +} + std::string cmCurlSetCAInfo(::CURL* curl, const std::string& cafile) { std::string e; |