Skip to content

Commit 51ee74f

Browse files
FIX pkcs11 uri with openssl backend
1 parent e0046eb commit 51ee74f

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

http.c

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,6 +1024,11 @@ static int get_curl_http_version_opt(const char *version_string, long *opt)
10241024
return -1; /* not found */
10251025
}
10261026

1027+
static bool is_pkcs11_uri(const char *string)
1028+
{
1029+
return string && strncasecmp(string, "pkcs11:", 7) == 0;
1030+
}
1031+
10271032
static CURL *get_curl_handle(void)
10281033
{
10291034
CURL *result = curl_easy_init();
@@ -1109,16 +1114,26 @@ static CURL *get_curl_handle(void)
11091114
curl_easy_setopt(result, CURLOPT_SSL_CIPHER_LIST,
11101115
ssl_cipherlist);
11111116

1112-
if (ssl_cert)
1113-
curl_easy_setopt(result, CURLOPT_SSLCERT, ssl_cert);
11141117
if (ssl_cert_type)
11151118
curl_easy_setopt(result, CURLOPT_SSLCERTTYPE, ssl_cert_type);
1119+
if (ssl_cert) {
1120+
curl_easy_setopt(result, CURLOPT_SSLCERT, ssl_cert);
1121+
if (is_pkcs11_uri(ssl_cert)) {
1122+
curl_easy_setopt(result, CURLOPT_SSLCERTTYPE, "ENG");
1123+
curl_easy_setopt(result, CURLOPT_SSLENGINE, "pkcs11");
1124+
}
1125+
}
11161126
if (has_cert_password())
11171127
curl_easy_setopt(result, CURLOPT_KEYPASSWD, cert_auth.password);
1118-
if (ssl_key)
1119-
curl_easy_setopt(result, CURLOPT_SSLKEY, ssl_key);
11201128
if (ssl_key_type)
11211129
curl_easy_setopt(result, CURLOPT_SSLKEYTYPE, ssl_key_type);
1130+
if (ssl_key) {
1131+
curl_easy_setopt(result, CURLOPT_SSLKEY, ssl_key);
1132+
if (is_pkcs11_uri(ssl_key)) {
1133+
curl_easy_setopt(result, CURLOPT_SSLKEYTYPE, "ENG");
1134+
curl_easy_setopt(result, CURLOPT_SSLENGINE, "pkcs11");
1135+
}
1136+
}
11221137
if (ssl_capath)
11231138
curl_easy_setopt(result, CURLOPT_CAPATH, ssl_capath);
11241139
if (ssl_pinnedkey)

0 commit comments

Comments
 (0)