summaryrefslogtreecommitdiffstats
path: root/src/plugins/tls
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2022-07-26 11:18:04 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2023-02-15 13:08:31 +0200
commit2294e68559d6a6e89d7a607afa6a2a6a35cbb501 (patch)
tree6dd5c60f6c778fcc6a965959a4d7ebe73fafdf6e /src/plugins/tls
parent402a526b2a87cbf6b7466bacb9dd3d8b7c71d9b2 (diff)
Schannel: Enable users to let schannel pick a certificate
Schannel is by default able to pick out and transmit a certificate it can find in the user's certificate store. The reason why we disabled it by default is because some applications create and store certificates in the store that is searched, so it may grab unexpected certificates. However, in some environments this is not an issue, so let these users re-enable this feature. Fixes: QTBUG-89556 Change-Id: Iffa8550ee64c70bb0955041072ed5a49f600f6a1 Reviewed-by: Joni Poikelin <joni.poikelin@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/plugins/tls')
-rw-r--r--src/plugins/tls/schannel/qtls_schannel.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/plugins/tls/schannel/qtls_schannel.cpp b/src/plugins/tls/schannel/qtls_schannel.cpp
index 04b44417a8..b230f2f787 100644
--- a/src/plugins/tls/schannel/qtls_schannel.cpp
+++ b/src/plugins/tls/schannel/qtls_schannel.cpp
@@ -679,6 +679,10 @@ qint64 checkIncompleteData(const SecBuffer &secBuffer)
return 0;
}
+DWORD defaultCredsFlag()
+{
+ return qEnvironmentVariableIsSet("QT_SCH_DEFAULT_CREDS") ? 0 : SCH_CRED_NO_DEFAULT_CREDS;
+}
} // anonymous namespace
@@ -854,8 +858,7 @@ bool TlsCryptographSchannel::acquireCredentialsHandle()
0,
nullptr,
0,
- SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
- | SCH_CRED_NO_DEFAULT_CREDS,
+ SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT | defaultCredsFlag(),
1,
&tlsParameters
};
@@ -879,8 +882,7 @@ bool TlsCryptographSchannel::acquireCredentialsHandle()
0, // dwMinimumCipherStrength (0 = system default)
0, // dwMaximumCipherStrength (0 = system default)
0, // dwSessionLifespan (0 = schannel default, 10 hours)
- SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
- | SCH_CRED_NO_DEFAULT_CREDS, // dwFlags
+ SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT | defaultCredsFlag(), // dwFlags
0 // dwCredFormat (must be 0)
};
credentials = cred;