summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--platform/windows/os_windows.cpp12
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;