gtls: Add P12 format support

This change adds P12 format support for GnuTLS backend.

Closes #14991
This commit is contained in:
Tatsuhiro Tsujikawa 2024-09-20 18:04:46 +09:00 committed by Daniel Stenberg
parent a4703dac13
commit 7307c1a289
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
2 changed files with 14 additions and 2 deletions

View file

@ -936,7 +936,19 @@ static CURLcode gtls_client_init(struct Curl_cfilter *cf,
if(result)
return result;
}
if(ssl_config->key_passwd) {
if(ssl_config->cert_type && strcasecompare(ssl_config->cert_type, "P12")) {
rc = gnutls_certificate_set_x509_simple_pkcs12_file(
gtls->shared_creds->creds, config->clientcert, GNUTLS_X509_FMT_DER,
ssl_config->key_passwd ? ssl_config->key_passwd : "");
if(rc != GNUTLS_E_SUCCESS) {
failf(data,
"error reading X.509 potentially-encrypted key or certificate "
"file: %s",
gnutls_strerror(rc));
return CURLE_SSL_CONNECT_ERROR;
}
}
else if(ssl_config->key_passwd) {
const unsigned int supported_key_encryption_algorithms =
GNUTLS_PKCS_USE_PKCS12_3DES | GNUTLS_PKCS_USE_PKCS12_ARCFOUR |
GNUTLS_PKCS_USE_PKCS12_RC2_40 | GNUTLS_PKCS_USE_PBES2_3DES |