← Commit list

7a4fa90048

Viktor Szakats
Viktor Szakats
2026-03-12
SUCCESS Duration: 263s

Subject

openssl: trace count of found / imported Windows native CA roots

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/vtls/openssl.c+12 -2
@@ -2853,6 +2853,7 @@ static CURLcode load_cacert_from_memory(X509_STORE *store,
#ifdef USE_WIN32_CRYPTO
static CURLcode ossl_win_load_store(struct Curl_easy *data,
+ struct Curl_cfilter *cf,
const char *win_store,
X509_STORE *store,
bool *padded)
@@ -2870,6 +2871,8 @@ static CURLcode ossl_win_load_store(struct Curl_easy *data,
iteration we can grow it with realloc, when necessary. */
CERT_ENHKEY_USAGE *enhkey_usage = NULL;
DWORD enhkey_usage_size = 0;
+ VERBOSE(size_t total = 0);
+ VERBOSE(size_t imported = 0);
/* This loop makes a best effort to import all valid certificates from
the MS root store. If a certificate cannot be imported it is
@@ -2886,8 +2889,10 @@ static CURLcode ossl_win_load_store(struct Curl_easy *data,
if(!pContext)
break;
+ VERBOSE(++total);
+
#if defined(DEBUGBUILD) && defined(CURLVERBOSE)
- else {
+ {
char cert_name[256];
if(!CertGetNameStringA(pContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0,
NULL, cert_name, sizeof(cert_name)))
@@ -2975,6 +2980,7 @@ static CURLcode ossl_win_load_store(struct Curl_easy *data,
such as duplicate certificate, which is allowed by MS but not
OpenSSL. */
if(X509_STORE_add_cert(store, x509) == 1) {
+ VERBOSE(++imported);
#ifdef DEBUGBUILD
infof(data, "SSL: Imported cert");
#endif
@@ -2987,6 +2993,10 @@ static CURLcode ossl_win_load_store(struct Curl_easy *data,
CertFreeCertificateContext(pContext);
CertCloseStore(hStore, 0);
+ CURL_TRC_CF(data, cf,
+ "ossl_win_load_store() found: %zu imported: %zu certs in %s.",
+ total, imported, win_store);
+
if(result)
return result;
}
@@ -3014,7 +3024,7 @@ static CURLcode ossl_windows_load_anchors(struct Curl_cfilter *cf,
*padded = FALSE;
for(i = 0; i < CURL_ARRAYSIZE(win_stores); ++i) {
bool store_added = FALSE;
- result = ossl_win_load_store(data, win_stores[i], store, &store_added);
+ result = ossl_win_load_store(data, cf, win_stores[i], store, &store_added);
if(result)
return result;
if(store_added) {