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 /src/tool_setopt.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 'src/tool_setopt.c')
-rw-r--r-- | src/tool_setopt.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/tool_setopt.c b/src/tool_setopt.c index 494518b6b..9858d49c9 100644 --- a/src/tool_setopt.c +++ b/src/tool_setopt.c @@ -683,7 +683,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config, ret = curl_easy_setopt(curl, tag, pval); } - else { + else if(tag < CURLOPTTYPE_BLOB) { /* Value is expected to be curl_off_t */ curl_off_t oval = va_arg(arg, curl_off_t); msnprintf(buf, sizeof(buf), @@ -694,6 +694,20 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config, if(!oval) skip = TRUE; } + else { + /* Value is a blob */ + void *pblob = va_arg(arg, void *); + + /* blobs are never printable */ + if(pblob) { + value = "blobpointer"; + remark = TRUE; + } + else + skip = TRUE; + + ret = curl_easy_setopt(curl, tag, pblob); + } va_end(arg); |