@@ -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+
10271032static 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