diff --git a/simgear/io/HTTPClient.cxx b/simgear/io/HTTPClient.cxx index fd8ec7e5..d00bcb91 100644 --- a/simgear/io/HTTPClient.cxx +++ b/simgear/io/HTTPClient.cxx @@ -107,6 +107,8 @@ public: unsigned int bytesTransferred; unsigned int lastTransferRate; uint64_t totalBytesDownloaded; + + SGPath tlsCertificatePath; }; Client::Client() : @@ -122,6 +124,8 @@ Client::Client() : d->maxPipelineDepth = 5; setUserAgent("SimGear-" SG_STRINGIZE(SIMGEAR_VERSION)); + d->tlsCertificatePath = SGPath::fromEnv("SIMGEAR_TLS_CERT_PATH"); + static bool didInitCurlGlobal = false; if (!didInitCurlGlobal) { curl_global_init(CURL_GLOBAL_ALL); @@ -275,6 +279,11 @@ void Client::makeRequest(const Request_ptr& r) curl_easy_setopt(curlRequest, CURLOPT_FOLLOWLOCATION, 1); + if (!d->tlsCertificatePath.isNull()) { + const auto utf8 = d->tlsCertificatePath.utf8Str(); + curl_easy_setopt(curlRequest, CURLOPT_CAINFO, utf8.c_str()); + } + if (!d->proxy.empty()) { curl_easy_setopt(curlRequest, CURLOPT_PROXY, d->proxy.c_str()); curl_easy_setopt(curlRequest, CURLOPT_PROXYPORT, d->proxyPort);