@@ -150,6 +150,8 @@ static int http_schannel_check_revoke_mode =
150150 */
151151static int http_schannel_use_ssl_cainfo ;
152152
153+ static int http_auto_client_cert ;
154+
153155size_t fread_buffer (char * ptr , size_t eltsize , size_t nmemb , void * buffer_ )
154156{
155157 size_t size = eltsize * nmemb ;
@@ -312,6 +314,11 @@ static int http_options(const char *var, const char *value, void *cb)
312314 return 0 ;
313315 }
314316
317+ if (!strcmp ("http.sslautoclientcert" , var )) {
318+ http_auto_client_cert = git_config_bool (var , value );
319+ return 0 ;
320+ }
321+
315322 if (!strcmp ("http.minsessions" , var )) {
316323 min_curl_sessions = git_config_int (var , value );
317324 if (min_curl_sessions > 1 )
@@ -886,13 +893,24 @@ static CURL *get_curl_handle(void)
886893 }
887894#endif
888895
889- if (http_ssl_backend && !strcmp ("schannel" , http_ssl_backend ) &&
890- http_schannel_check_revoke_mode ) {
896+ if (http_ssl_backend && !strcmp ("schannel" , http_ssl_backend )) {
897+ long ssl_options = 0 ;
898+ if (http_schannel_check_revoke_mode ) {
891899#ifdef GIT_CURL_HAVE_CURLSSLOPT_NO_REVOKE
892- curl_easy_setopt ( result , CURLOPT_SSL_OPTIONS , http_schannel_check_revoke_mode ) ;
900+ ssl_options |= http_schannel_check_revoke_mode ;
893901#else
894- warning (_ ("CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0" ));
902+ warning (_ ("CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0" ));
895903#endif
904+ }
905+
906+ if (http_auto_client_cert ) {
907+ #ifdef GIT_CURL_HAVE_CURLSSLOPT_AUTO_CLIENT_CERT
908+ ssl_options |= CURLSSLOPT_AUTO_CLIENT_CERT ;
909+ #endif
910+ }
911+
912+ if (ssl_options )
913+ curl_easy_setopt (result , CURLOPT_SSL_OPTIONS , ssl_options );
896914 }
897915
898916 if (http_proactive_auth )
0 commit comments