diff options
| -rw-r--r-- | platform/windows/os_windows.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index bd7d9f178a..ae1649c75d 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -1680,10 +1680,20 @@ String OS_Windows::get_system_ca_certificates() { HCERTSTORE cert_store = CertOpenSystemStoreA(0, "ROOT"); ERR_FAIL_COND_V_MSG(!cert_store, "", "Failed to read the root certificate store."); + FILETIME curr_time; + GetSystemTimeAsFileTime(&curr_time); + String certs; PCCERT_CONTEXT curr = CertEnumCertificatesInStore(cert_store, nullptr); while (curr) { - DWORD size = 0; + FILETIME ft; + DWORD size = sizeof(ft); + // Check if the certificate is disallowed. + if (CertGetCertificateContextProperty(curr, CERT_DISALLOWED_FILETIME_PROP_ID, &ft, &size) && CompareFileTime(&curr_time, &ft) != -1) { + curr = CertEnumCertificatesInStore(cert_store, curr); + continue; + } + // Encode and add to certificate list. bool success = CryptBinaryToStringA(curr->pbCertEncoded, curr->cbCertEncoded, CRYPT_STRING_BASE64HEADER | CRYPT_STRING_NOCR, nullptr, &size); ERR_CONTINUE(!success); PackedByteArray pba; |
