diff options
author | Gilles Vollant <info@winimage.com> | 2020-05-15 10:47:46 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-05-15 13:03:59 +0200 |
commit | cac5374298b3e79405bbdabe38941227c73a4c96 (patch) | |
tree | b3548eba0d3ea4538765897a7ef01154805788e5 /lib/url.c | |
parent | 8df455479f8801bbebad8839fc96abbffa711603 (diff) | |
download | curl-cac5374298b3e79405bbdabe38941227c73a4c96.tar.gz |
setopt: support certificate options in memory with struct curl_blob
This change introduces a generic way to provide binary data in setopt
options, called BLOBs.
This change introduces these new setopts:
CURLOPT_ISSUERCERT_BLOB, CURLOPT_PROXY_SSLCERT_BLOB,
CURLOPT_PROXY_SSLKEY_BLOB, CURLOPT_SSLCERT_BLOB and CURLOPT_SSLKEY_BLOB.
Reviewed-by: Daniel Stenberg
Closes #5357
Diffstat (limited to 'lib/url.c')
-rw-r--r-- | lib/url.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -281,10 +281,16 @@ void Curl_freeset(struct Curl_easy *data) { /* Free all dynamic strings stored in the data->set substructure. */ enum dupstring i; + enum dupblob j; + for(i = (enum dupstring)0; i < STRING_LAST; i++) { Curl_safefree(data->set.str[i]); } + for(j = (enum dupblob)0; j < BLOB_LAST; j++) { + Curl_safefree(data->set.blobs[j]); + } + if(data->change.referer_alloc) { Curl_safefree(data->change.referer); data->change.referer_alloc = FALSE; @@ -3617,6 +3623,12 @@ static CURLcode create_conn(struct Curl_easy *data, data->set.proxy_ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD_PROXY]; #endif + data->set.ssl.cert_blob = data->set.blobs[BLOB_CERT_ORIG]; + data->set.proxy_ssl.cert_blob = data->set.blobs[BLOB_CERT_PROXY]; + data->set.ssl.key_blob = data->set.blobs[BLOB_KEY_ORIG]; + data->set.proxy_ssl.key_blob = data->set.blobs[BLOB_KEY_PROXY]; + data->set.ssl.issuercert_blob = data->set.blobs[BLOB_SSL_ISSUERCERT_ORIG]; + if(!Curl_clone_primary_ssl_config(&data->set.ssl.primary, &conn->ssl_config)) { result = CURLE_OUT_OF_MEMORY; |