Skip to content

Commit 0a01d41

Browse files
Stanislav Malishevskiygitster
authored andcommitted
http: add support for different sslcert and sslkey types.
Basically git work with default curl ssl type - PEM. But for support eTokens like SafeNet tokens via pksc11 need setup 'ENG' as sslcert type and as sslkey type. So there added additional options for http to make that possible. Signed-off-by: Stanislav Malishevskiy <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 73876f4 commit 0a01d41

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
@@ -39,6 +39,7 @@ static int curl_ssl_verify = -1;
3939
static int curl_ssl_try;
4040
static const char *curl_http_version = NULL;
4141
static const char *ssl_cert;
42+
static const char *ssl_cert_type;
4243
static const char *ssl_cipherlist;
4344
static const char *ssl_version;
4445
static struct {
@@ -58,6 +59,7 @@ static struct {
5859
#endif
5960
};
6061
static const char *ssl_key;
62+
static const char *ssl_key_type;
6163
static const char *ssl_capath;
6264
static const char *curl_no_proxy;
6365
#ifdef GIT_CURL_HAVE_CURLOPT_PINNEDPUBLICKEY
@@ -264,8 +266,12 @@ static int http_options(const char *var, const char *value, void *cb)
264266
return git_config_string(&ssl_version, var, value);
265267
if (!strcmp("http.sslcert", var))
266268
return git_config_pathname(&ssl_cert, var, value);
269+
if (!strcmp("http.sslcerttype", var))
270+
return git_config_string(&ssl_cert_type, var, value);
267271
if (!strcmp("http.sslkey", var))
268272
return git_config_pathname(&ssl_key, var, value);
273+
if (!strcmp("http.sslkeytype", var))
274+
return git_config_string(&ssl_key_type, var, value);
269275
if (!strcmp("http.sslcapath", var))
270276
return git_config_pathname(&ssl_capath, var, value);
271277
if (!strcmp("http.sslcainfo", var))
@@ -904,10 +910,14 @@ static CURL *get_curl_handle(void)
904910

905911
if (ssl_cert)
906912
curl_easy_setopt(result, CURLOPT_SSLCERT, ssl_cert);
913+
if (ssl_cert_type)
914+
curl_easy_setopt(result, CURLOPT_SSLCERTTYPE, ssl_cert_type);
907915
if (has_cert_password())
908916
curl_easy_setopt(result, CURLOPT_KEYPASSWD, cert_auth.password);
909917
if (ssl_key)
910918
curl_easy_setopt(result, CURLOPT_SSLKEY, ssl_key);
919+
if (ssl_key_type)
920+
curl_easy_setopt(result, CURLOPT_SSLKEYTYPE, ssl_key_type);
911921
if (ssl_capath)
912922
curl_easy_setopt(result, CURLOPT_CAPATH, ssl_capath);
913923
#ifdef GIT_CURL_HAVE_CURLOPT_PINNEDPUBLICKEY
@@ -1142,7 +1152,9 @@ void http_init(struct remote *remote, const char *url, int proactive_auth)
11421152
curl_ssl_verify = 0;
11431153

11441154
set_from_env(&ssl_cert, "GIT_SSL_CERT");
1155+
set_from_env(&ssl_cert_type, "GIT_SSL_CERT_TYPE");
11451156
set_from_env(&ssl_key, "GIT_SSL_KEY");
1157+
set_from_env(&ssl_key_type, "GIT_SSL_KEY_TYPE");
11461158
set_from_env(&ssl_capath, "GIT_SSL_CAPATH");
11471159
set_from_env(&ssl_cainfo, "GIT_SSL_CAINFO");
11481160

0 commit comments

Comments
 (0)