Forráskód Böngészése

Enhance Windows certificate verification for compatibility with newer versions

yhirose 1 hónapja
szülő
commit
5fd1d1fa63
1 módosított fájl, 8 hozzáadás és 1 törlés
  1. 8 1
      httplib.h

+ 8 - 1
httplib.h

@@ -7278,7 +7278,8 @@ inline bool verify_cert_with_windows_schannel(X509 *server_cert,
   // Setup chain parameters
   CERT_CHAIN_PARA chain_para = {};
   chain_para.cbSize = sizeof(chain_para);
-#ifdef CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
+#if defined(_WIN32) && _WIN32_WINNT >= 0x0600
+  // dwUrlRetrievalTimeout is available on Windows Vista and later
   chain_para.dwUrlRetrievalTimeout = static_cast<DWORD>(timeout_sec * 1000);
 #else
   (void)timeout_sec;
@@ -7308,7 +7309,9 @@ inline bool verify_cert_with_windows_schannel(X509 *server_cert,
   // Verify SSL policy
   SSL_EXTRA_CERT_CHAIN_POLICY_PARA extra_policy_para = {};
   extra_policy_para.cbSize = sizeof(extra_policy_para);
+#ifdef AUTHTYPE_SERVER
   extra_policy_para.dwAuthType = AUTHTYPE_SERVER;
+#endif
 
   std::wstring whost;
   if (verify_hostname) {
@@ -7318,7 +7321,11 @@ inline bool verify_cert_with_windows_schannel(X509 *server_cert,
 
   CERT_CHAIN_POLICY_PARA policy_para = {};
   policy_para.cbSize = sizeof(policy_para);
+#ifdef CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS
   policy_para.dwFlags = CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS;
+#else
+  policy_para.dwFlags = 0;
+#endif
   policy_para.pvExtraPolicyPara = &extra_policy_para;
 
   CERT_CHAIN_POLICY_STATUS policy_status = {};