Skip to content

Commit 0a8c337

Browse files
committed
Merge branch 'sm/ssl-key-type-config'
Add a few configuration variables to tell the cURL library that different types of ssl-cert and ssl-key are in use. * sm/ssl-key-type-config: http: add support for different sslcert and sslkey types.
2 parents 87daf40 + 0a01d41 commit 0a8c337

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

http.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ static int curl_ssl_verify = -1;
4040
static int curl_ssl_try;
4141
static const char *curl_http_version = NULL;
4242
static const char *ssl_cert;
43+
static const char *ssl_cert_type;
4344
static const char *ssl_cipherlist;
4445
static const char *ssl_version;
4546
static struct {
@@ -59,6 +60,7 @@ static struct {
5960
#endif
6061
};
6162
static const char *ssl_key;
63+
static const char *ssl_key_type;
6264
static const char *ssl_capath;
6365
static const char *curl_no_proxy;
6466
#ifdef GIT_CURL_HAVE_CURLOPT_PINNEDPUBLICKEY
@@ -374,8 +376,12 @@ static int http_options(const char *var, const char *value, void *cb)
374376
return git_config_string(&ssl_version, var, value);
375377
if (!strcmp("http.sslcert", var))
376378
return git_config_pathname(&ssl_cert, var, value);
379+
if (!strcmp("http.sslcerttype", var))
380+
return git_config_string(&ssl_cert_type, var, value);
377381
if (!strcmp("http.sslkey", var))
378382
return git_config_pathname(&ssl_key, var, value);
383+
if (!strcmp("http.sslkeytype", var))
384+
return git_config_string(&ssl_key_type, var, value);
379385
if (!strcmp("http.sslcapath", var))
380386
return git_config_pathname(&ssl_capath, var, value);
381387
if (!strcmp("http.sslcainfo", var))
@@ -1014,10 +1020,14 @@ static CURL *get_curl_handle(void)
10141020

10151021
if (ssl_cert)
10161022
curl_easy_setopt(result, CURLOPT_SSLCERT, ssl_cert);
1023+
if (ssl_cert_type)
1024+
curl_easy_setopt(result, CURLOPT_SSLCERTTYPE, ssl_cert_type);
10171025
if (has_cert_password())
10181026
curl_easy_setopt(result, CURLOPT_KEYPASSWD, cert_auth.password);
10191027
if (ssl_key)
10201028
curl_easy_setopt(result, CURLOPT_SSLKEY, ssl_key);
1029+
if (ssl_key_type)
1030+
curl_easy_setopt(result, CURLOPT_SSLKEYTYPE, ssl_key_type);
10211031
if (ssl_capath)
10221032
curl_easy_setopt(result, CURLOPT_CAPATH, ssl_capath);
10231033
#ifdef GIT_CURL_HAVE_CURLOPT_PINNEDPUBLICKEY
@@ -1252,7 +1262,9 @@ void http_init(struct remote *remote, const char *url, int proactive_auth)
12521262
curl_ssl_verify = 0;
12531263

12541264
set_from_env(&ssl_cert, "GIT_SSL_CERT");
1265+
set_from_env(&ssl_cert_type, "GIT_SSL_CERT_TYPE");
12551266
set_from_env(&ssl_key, "GIT_SSL_KEY");
1267+
set_from_env(&ssl_key_type, "GIT_SSL_KEY_TYPE");
12561268
set_from_env(&ssl_capath, "GIT_SSL_CAPATH");
12571269
set_from_env(&ssl_cainfo, "GIT_SSL_CAINFO");
12581270

0 commit comments

Comments
 (0)