@@ -1024,6 +1024,11 @@ static int get_curl_http_version_opt(const char *version_string, long *opt)
1024
1024
return -1 ; /* not found */
1025
1025
}
1026
1026
1027
+ static bool is_pkcs11_uri (const char * string )
1028
+ {
1029
+ return string && strncasecmp (string , "pkcs11:" , 7 ) == 0 ;
1030
+ }
1031
+
1027
1032
static CURL * get_curl_handle (void )
1028
1033
{
1029
1034
CURL * result = curl_easy_init ();
@@ -1109,16 +1114,26 @@ static CURL *get_curl_handle(void)
1109
1114
curl_easy_setopt (result , CURLOPT_SSL_CIPHER_LIST ,
1110
1115
ssl_cipherlist );
1111
1116
1112
- if (ssl_cert )
1113
- curl_easy_setopt (result , CURLOPT_SSLCERT , ssl_cert );
1114
1117
if (ssl_cert_type )
1115
1118
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
+ }
1116
1126
if (has_cert_password ())
1117
1127
curl_easy_setopt (result , CURLOPT_KEYPASSWD , cert_auth .password );
1118
- if (ssl_key )
1119
- curl_easy_setopt (result , CURLOPT_SSLKEY , ssl_key );
1120
1128
if (ssl_key_type )
1121
1129
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
+ }
1122
1137
if (ssl_capath )
1123
1138
curl_easy_setopt (result , CURLOPT_CAPATH , ssl_capath );
1124
1139
if (ssl_pinnedkey )
0 commit comments