mirror of
https://github.com/yhirose/cpp-httplib
synced 2024-11-21 14:29:10 -07:00
Don't loading system certs from Keychain on iOS (#1546)
This commit is contained in:
parent
3956a2b790
commit
e5804d4a50
1 changed files with 14 additions and 7 deletions
21
httplib.h
21
httplib.h
|
@ -239,10 +239,13 @@ using socket_t = int;
|
||||||
#pragma comment(lib, "crypt32.lib")
|
#pragma comment(lib, "crypt32.lib")
|
||||||
#pragma comment(lib, "cryptui.lib")
|
#pragma comment(lib, "cryptui.lib")
|
||||||
#endif
|
#endif
|
||||||
#elif defined(__APPLE__) // _WIN32
|
#elif defined(__APPLE__)
|
||||||
|
#include <TargetConditionals.h>
|
||||||
|
#if TARGET_OS_OSX
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
#include <Security/Security.h>
|
#include <Security/Security.h>
|
||||||
#endif // __APPLE__
|
#endif // TARGET_OS_OSX
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
|
@ -4511,6 +4514,7 @@ inline bool load_system_certs_on_windows(X509_STORE *store) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
|
#if TARGET_OS_OSX
|
||||||
template <typename T>
|
template <typename T>
|
||||||
using CFObjectPtr =
|
using CFObjectPtr =
|
||||||
std::unique_ptr<typename std::remove_pointer<T>::type, void (*)(CFTypeRef)>;
|
std::unique_ptr<typename std::remove_pointer<T>::type, void (*)(CFTypeRef)>;
|
||||||
|
@ -4585,7 +4589,7 @@ inline bool add_certs_to_x509_store(CFArrayRef certs, X509_STORE *store) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool load_system_certs_on_apple(X509_STORE *store) {
|
inline bool load_system_certs_on_macos(X509_STORE *store) {
|
||||||
auto result = false;
|
auto result = false;
|
||||||
CFObjectPtr<CFArrayRef> certs(nullptr, cf_object_ptr_deleter);
|
CFObjectPtr<CFArrayRef> certs(nullptr, cf_object_ptr_deleter);
|
||||||
if (retrieve_certs_from_keychain(certs) && certs) {
|
if (retrieve_certs_from_keychain(certs) && certs) {
|
||||||
|
@ -4598,8 +4602,9 @@ inline bool load_system_certs_on_apple(X509_STORE *store) {
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endif
|
#endif // TARGET_OS_OSX
|
||||||
#endif
|
#endif // _WIN32
|
||||||
|
#endif // CPPHTTPLIB_OPENSSL_SUPPORT
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
class WSInit {
|
class WSInit {
|
||||||
|
@ -8060,8 +8065,10 @@ inline bool SSLClient::load_certs() {
|
||||||
loaded =
|
loaded =
|
||||||
detail::load_system_certs_on_windows(SSL_CTX_get_cert_store(ctx_));
|
detail::load_system_certs_on_windows(SSL_CTX_get_cert_store(ctx_));
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
loaded = detail::load_system_certs_on_apple(SSL_CTX_get_cert_store(ctx_));
|
#if TARGET_OS_OSX
|
||||||
#endif
|
loaded = detail::load_system_certs_on_macos(SSL_CTX_get_cert_store(ctx_));
|
||||||
|
#endif // TARGET_OS_OSX
|
||||||
|
#endif // _WIN32
|
||||||
if (!loaded) { SSL_CTX_set_default_verify_paths(ctx_); }
|
if (!loaded) { SSL_CTX_set_default_verify_paths(ctx_); }
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue