mirror of
https://github.com/curl/curl.git
synced 2026-08-25 01:03:31 +03:00
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
This commit is contained in:
parent
8df455479f
commit
cac5374298
21 changed files with 960 additions and 129 deletions
|
|
@ -506,16 +506,24 @@ Sets the interval at which connection upkeep are performed. See
|
|||
.SH SSL and SECURITY OPTIONS
|
||||
.IP CURLOPT_SSLCERT
|
||||
Client cert. See \fICURLOPT_SSLCERT(3)\fP
|
||||
.IP CURLOPT_SSLCERT_BLOB
|
||||
Client cert memory buffer. See \fICURLOPT_SSLCERT_BLOB(3)\fP
|
||||
.IP CURLOPT_PROXY_SSLCERT
|
||||
Proxy client cert. See \fICURLOPT_PROXY_SSLCERT(3)\fP
|
||||
.IP CURLOPT_PROXY_SSLCERT_BLOB
|
||||
Proxy client cert memory buffer. See \fICURLOPT_PROXY_SSLCERT_BLOB(3)\fP
|
||||
.IP CURLOPT_SSLCERTTYPE
|
||||
Client cert type. See \fICURLOPT_SSLCERTTYPE(3)\fP
|
||||
.IP CURLOPT_PROXY_SSLCERTTYPE
|
||||
Proxy client cert type. See \fICURLOPT_PROXY_SSLCERTTYPE(3)\fP
|
||||
.IP CURLOPT_SSLKEY
|
||||
Client key. See \fICURLOPT_SSLKEY(3)\fP
|
||||
.IP CURLOPT_SSLKEY_BLOB
|
||||
Client key memory buffer. See \fICURLOPT_SSLKEY_BLOB(3)\fP
|
||||
.IP CURLOPT_PROXY_SSLKEY
|
||||
Proxy client key. See \fICURLOPT_PROXY_SSLKEY(3)\fP
|
||||
.IP CURLOPT_PROXY_SSLKEY_BLOB
|
||||
Proxy client key. See \fICURLOPT_PROXY_SSLKEY_BLOB(3)\fP
|
||||
.IP CURLOPT_SSLKEYTYPE
|
||||
Client key type. See \fICURLOPT_SSLKEYTYPE(3)\fP
|
||||
.IP CURLOPT_PROXY_SSLKEYTYPE
|
||||
|
|
@ -554,6 +562,8 @@ CA cert bundle. See \fICURLOPT_CAINFO(3)\fP
|
|||
Proxy CA cert bundle. See \fICURLOPT_PROXY_CAINFO(3)\fP
|
||||
.IP CURLOPT_ISSUERCERT
|
||||
Issuer certificate. See \fICURLOPT_ISSUERCERT(3)\fP
|
||||
.IP CURLOPT_ISSUERCERT_BLOB
|
||||
Issuer certificate memory buffer. See \fICURLOPT_ISSUERCERT_BLOB(3)\fP
|
||||
.IP CURLOPT_CAPATH
|
||||
Path to CA cert bundle. See \fICURLOPT_CAPATH(3)\fP
|
||||
.IP CURLOPT_PROXY_CAPATH
|
||||
|
|
|
|||
79
docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3
Normal file
79
docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_ISSUERCERT_BLOB 3 "24 Jun 2020" "libcurl 7.71.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob
|
||||
.SH SYNOPSIS
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT_BLOB, struct curl_blob *stblob);
|
||||
.SH DESCRIPTION
|
||||
Pass a pointer to a curl_blob structure, which contains information (pointer
|
||||
and size) about a memory block with binary data of a CA certificate in PEM
|
||||
format. If the option is set, an additional check against the peer certificate
|
||||
is performed to verify the issuer is indeed the one associated with the
|
||||
certificate provided by the option. This additional check is useful in
|
||||
multi-level PKI where one needs to enforce that the peer certificate is from a
|
||||
specific branch of the tree.
|
||||
|
||||
This option should be used in combination with the
|
||||
\fICURLOPT_SSL_VERIFYPEER(3)\fP option. Otherwise, the result of the check is
|
||||
not considered as failure.
|
||||
|
||||
A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option,
|
||||
which is returned if the setup of the SSL/TLS session has failed due to a
|
||||
mismatch with the issuer of peer certificate (\fICURLOPT_SSL_VERIFYPEER(3)\fP
|
||||
has to be set too for the check to fail).
|
||||
|
||||
If the blob is initialized with the flags member of struct curl_blob set to
|
||||
CURL_BLOB_COPY, the application does not have to keep the buffer around after
|
||||
setting this.
|
||||
|
||||
This option is an alternative to \fICURLOPT_ISSUERCERT(3)\fP which instead
|
||||
expects a file name as input.
|
||||
.SH DEFAULT
|
||||
NULL
|
||||
.SH PROTOCOLS
|
||||
All TLS-based protocols
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *curl = curl_easy_init();
|
||||
if(curl) {
|
||||
struct curl_blob blob;
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||
blob.data = certificateData;
|
||||
blob.len = filesize;
|
||||
blob.flags = CURL_BLOB_COPY;
|
||||
curl_easy_setopt(curl, CURLOPT_ISSUERCERT_BLOB, &blob);
|
||||
ret = curl_easy_perform(curl);
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in libcurl 7.71.0. This option is supported by the OpenSSL backends.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
|
||||
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_ISSUERCERT "(3),"
|
||||
.BR CURLOPT_CRLFILE "(3), " CURLOPT_SSL_VERIFYPEER "(3), "
|
||||
72
docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3
Normal file
72
docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "24 Jun 2020" "libcurl 7.71.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob
|
||||
.SH SYNOPSIS
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT_BLOB, struct curl_blob *blob);
|
||||
.SH DESCRIPTION
|
||||
Pass a pointer to a curl_blob structure, which contains information (pointer
|
||||
and size) about a memory block with binary data of the certificate used to
|
||||
connect to the HTTPS proxy. The format must be "P12" on Secure Transport or
|
||||
Schannel. The format must be "P12" or "PEM" on OpenSSL. The string "P12" or
|
||||
"PEM" must be specified with \fICURLOPT_PROXY_SSLCERTTYPE(3)\fP.
|
||||
|
||||
If the blob is initialized with the flags member of struct curl_blob set to
|
||||
CURL_BLOB_COPY, the application does not have to keep the buffer around after
|
||||
setting this.
|
||||
|
||||
This option is an alternative to \fICURLOPT_PROXY_SSLCERT(3)\fP which instead
|
||||
expects a file name as input.
|
||||
.SH DEFAULT
|
||||
NULL
|
||||
.SH PROTOCOLS
|
||||
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *curl = curl_easy_init();
|
||||
if(curl) {
|
||||
struct curl_blob blob;
|
||||
blob.data = certificateData;
|
||||
blob.len = filesize;
|
||||
blob.flags = CURL_BLOB_COPY;
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy");
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem");
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret");
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT_BLOB, &blob);
|
||||
ret = curl_easy_perform(curl);
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in libcurl 7.71.0. This option is supported by the OpenSSL, Secure
|
||||
Transport and Schannel backends.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
|
||||
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_PROXY_SSLCERTTYPE "(3), " CURLOPT_PROXY_SSLKEY "(3), "
|
||||
.BR CURLOPT_PROXY_SSLCERT "(3), "
|
||||
73
docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3
Normal file
73
docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "24 Jun 2020" "libcurl 7.71.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_PROXY_SSLKEY_BLOB \- private key for proxy cert from memory blob
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEY_BLOB,
|
||||
struct curl_blob *blob);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Pass a pointer to a curl_blob structure that contains information (pointer and
|
||||
size) about the private key for connecting to the HTTPS proxy. Compatible with
|
||||
OpenSSL. The format (like "PEM") must be specified with
|
||||
\fICURLOPT_PROXY_SSLKEYTYPE(3)\fP.
|
||||
|
||||
If the blob is initialized with the flags member of struct curl_blob set to
|
||||
CURL_BLOB_COPY, the application does not have to keep the buffer around after
|
||||
setting this.
|
||||
.SH DEFAULT
|
||||
NULL
|
||||
.SH PROTOCOLS
|
||||
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *curl = curl_easy_init();
|
||||
if(curl) {
|
||||
struct curl_blob blob;
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy");
|
||||
blob.data = certificateData;
|
||||
blob.len = filesize;
|
||||
blob.flags = CURL_BLOB_COPY;
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT_BLOB, &blob);
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERTTYPE, "PEM");
|
||||
|
||||
blob.data = privateKeyData;
|
||||
blob.len = privateKeySize;
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY_BLOB, &blob);
|
||||
curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret");
|
||||
ret = curl_easy_perform(curl);
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in libcurl 7.71.0. This option is supported by the OpenSSL backends.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
|
||||
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_SSLKEYTYPE "(3), " CURLOPT_SSLKEY "(3), "
|
||||
|
|
@ -38,15 +38,17 @@ you wish to authenticate with as it is named in the security database. If you
|
|||
want to use a file from the current directory, please precede it with "./"
|
||||
prefix, in order to avoid confusion with a nickname.
|
||||
|
||||
(Schannel only) Client certificates must be specified by a path expression to
|
||||
a certificate store. (Loading PFX is not supported; you can import it to a
|
||||
store first). You can use "<store location>\\<store name>\\<thumbprint>" to
|
||||
refer to a certificate in the system certificates store, for example,
|
||||
(Schannel only) Client certificates can be specified by a path expression to
|
||||
a certificate store. (You can import PFX to a store first). You can use
|
||||
"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
|
||||
in the system certificates store, for example,
|
||||
"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
|
||||
usually a SHA-1 hex string which you can see in certificate details. Following
|
||||
store locations are supported: CurrentUser, LocalMachine, CurrentService,
|
||||
Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
|
||||
LocalMachineEnterprise.
|
||||
Schannel also support P12 certificate file, with the string "P12" specified
|
||||
with \fICURLOPT_SSLCERTTYPE(3)\fP.
|
||||
|
||||
When using a client certificate, you most likely also need to provide a
|
||||
private key with \fICURLOPT_SSLKEY(3)\fP.
|
||||
|
|
|
|||
69
docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3
Normal file
69
docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_SSLCERT_BLOB 3 "24 Jun 2020" "libcurl 7.71.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob
|
||||
.SH SYNOPSIS
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT_BLOB, struct curl_blob *stblob);
|
||||
.SH DESCRIPTION
|
||||
Pass a pointer to a curl_blob structure, which contains (pointer and size) a
|
||||
client certificate. The format must be "P12" on Secure Transport or
|
||||
Schannel. The format must be "P12" or "PEM" on OpenSSL. The string "P12" or
|
||||
"PEM" must be specified with \fICURLOPT_SSLCERTTYPE(3)\fP.
|
||||
|
||||
If the blob is initialized with the flags member of struct curl_blob set to
|
||||
CURL_BLOB_COPY, the application does not have to keep the buffer around after
|
||||
setting this.
|
||||
|
||||
This option is an alternative to \fICURLOPT_SSLCERT(3)\fP which instead
|
||||
expects a file name as input.
|
||||
.SH DEFAULT
|
||||
NULL
|
||||
.SH PROTOCOLS
|
||||
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *curl = curl_easy_init();
|
||||
if(curl) {
|
||||
struct curl_blob stblob;
|
||||
stblob.data = certificateData;
|
||||
stblob.len = filesize;
|
||||
stblob.flags = CURL_BLOB_COPY;
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||
curl_easy_setopt(curl, CURLOPT_SSLCERT_BLOB, &stblob);
|
||||
curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "P12");
|
||||
curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret");
|
||||
ret = curl_easy_perform(curl);
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in libcurl 7.71.0. This option is supported by the OpenSSL, Secure
|
||||
Transport and Schannel backends.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
|
||||
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_SSLCERTTYPE "(3), " CURLOPT_SSLKEY "(3), "
|
||||
75
docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3
Normal file
75
docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_SSLKEY_BLOB 3 "24 Jun 2020" "libcurl 7.71.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_SSLKEY_BLOB \- private key for client cert from memory blob
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY_BLOB,
|
||||
struct curl_blob *blob);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
Pass a pointer to a curl_blob structure, which contains information (pointer
|
||||
and size) for a private key. Compatible with OpenSSL. The format (like "PEM")
|
||||
must be specified with \fICURLOPT_SSLKEYTYPE(3)\fP.
|
||||
|
||||
If the blob is initialized with the flags member of struct curl_blob set to
|
||||
CURL_BLOB_COPY, the application does not have to keep the buffer around after
|
||||
setting this.
|
||||
|
||||
This option is an alternative to \fICURLOPT_SSLKEY(3)\fP which instead expects
|
||||
a file name as input.
|
||||
.SH DEFAULT
|
||||
NULL
|
||||
.SH PROTOCOLS
|
||||
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *curl = curl_easy_init();
|
||||
if(curl) {
|
||||
struct curl_blob blob;
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||
blob.data = certificateData;
|
||||
blob.len = filesize;
|
||||
blob.flags = CURL_BLOB_COPY;
|
||||
curl_easy_setopt(curl, CURLOPT_SSLCERT_BLOB, &blob);
|
||||
curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM");
|
||||
|
||||
blob.data = privateKeyData;
|
||||
blob.len = privateKeySize;
|
||||
curl_easy_setopt(curl, CURLOPT_SSLKEY_BLOB, &blob);
|
||||
curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret");
|
||||
curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM");
|
||||
ret = curl_easy_perform(curl);
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in libcurl 7.71.0. This option is supported by the OpenSSL backends.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
|
||||
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_SSLKEYTYPE "(3), " CURLOPT_SSLKEY "(3), "
|
||||
|
|
@ -198,6 +198,7 @@ man_MANS = \
|
|||
CURLOPT_IOCTLFUNCTION.3 \
|
||||
CURLOPT_IPRESOLVE.3 \
|
||||
CURLOPT_ISSUERCERT.3 \
|
||||
CURLOPT_ISSUERCERT_BLOB.3 \
|
||||
CURLOPT_KEEP_SENDING_ON_ERROR.3 \
|
||||
CURLOPT_KEYPASSWD.3 \
|
||||
CURLOPT_KRBLEVEL.3 \
|
||||
|
|
@ -260,8 +261,10 @@ man_MANS = \
|
|||
CURLOPT_PROXY_PINNEDPUBLICKEY.3 \
|
||||
CURLOPT_PROXY_SERVICE_NAME.3 \
|
||||
CURLOPT_PROXY_SSLCERT.3 \
|
||||
CURLOPT_PROXY_SSLCERT_BLOB.3 \
|
||||
CURLOPT_PROXY_SSLCERTTYPE.3 \
|
||||
CURLOPT_PROXY_SSLKEY.3 \
|
||||
CURLOPT_PROXY_SSLKEY_BLOB.3 \
|
||||
CURLOPT_PROXY_SSLKEYTYPE.3 \
|
||||
CURLOPT_PROXY_SSLVERSION.3 \
|
||||
CURLOPT_PROXY_SSL_CIPHER_LIST.3 \
|
||||
|
|
@ -313,10 +316,12 @@ man_MANS = \
|
|||
CURLOPT_SSH_PRIVATE_KEYFILE.3 \
|
||||
CURLOPT_SSH_PUBLIC_KEYFILE.3 \
|
||||
CURLOPT_SSLCERT.3 \
|
||||
CURLOPT_SSLCERT_BLOB.3 \
|
||||
CURLOPT_SSLCERTTYPE.3 \
|
||||
CURLOPT_SSLENGINE.3 \
|
||||
CURLOPT_SSLENGINE_DEFAULT.3 \
|
||||
CURLOPT_SSLKEY.3 \
|
||||
CURLOPT_SSLKEY_BLOB.3 \
|
||||
CURLOPT_SSLKEYTYPE.3 \
|
||||
CURLOPT_SSLVERSION.3 \
|
||||
CURLOPT_SSL_CIPHER_LIST.3 \
|
||||
|
|
|
|||
|
|
@ -347,6 +347,7 @@ CURLM_RECURSIVE_API_CALL 7.59.0
|
|||
CURLM_UNKNOWN_OPTION 7.15.4
|
||||
CURLM_WAKEUP_FAILURE 7.68.0
|
||||
CURLOPT 7.69.0
|
||||
CURLOPTTYPE_BLOB 7.71.0
|
||||
CURLOPTTYPE_FUNCTIONPOINT 7.1
|
||||
CURLOPTTYPE_LONG 7.1
|
||||
CURLOPTTYPE_OBJECTPOINT 7.1
|
||||
|
|
@ -459,6 +460,7 @@ CURLOPT_IOCTLDATA 7.12.3
|
|||
CURLOPT_IOCTLFUNCTION 7.12.3
|
||||
CURLOPT_IPRESOLVE 7.10.8
|
||||
CURLOPT_ISSUERCERT 7.19.0
|
||||
CURLOPT_ISSUERCERT_BLOB 7.71.0
|
||||
CURLOPT_KEEP_SENDING_ON_ERROR 7.51.0
|
||||
CURLOPT_KEYPASSWD 7.17.0
|
||||
CURLOPT_KRB4LEVEL 7.3 7.17.0
|
||||
|
|
@ -528,8 +530,10 @@ CURLOPT_PROXY_KEYPASSWD 7.52.0
|
|||
CURLOPT_PROXY_PINNEDPUBLICKEY 7.52.0
|
||||
CURLOPT_PROXY_SERVICE_NAME 7.43.0
|
||||
CURLOPT_PROXY_SSLCERT 7.52.0
|
||||
CURLOPT_PROXY_SSLCERT_BLOB 7.71.0
|
||||
CURLOPT_PROXY_SSLCERTTYPE 7.52.0
|
||||
CURLOPT_PROXY_SSLKEY 7.52.0
|
||||
CURLOPT_PROXY_SSLKEY_BLOB 7.71.0
|
||||
CURLOPT_PROXY_SSLKEYTYPE 7.52.0
|
||||
CURLOPT_PROXY_SSLVERSION 7.52.0
|
||||
CURLOPT_PROXY_SSL_CIPHER_LIST 7.52.0
|
||||
|
|
@ -591,11 +595,13 @@ CURLOPT_SSH_KNOWNHOSTS 7.19.6
|
|||
CURLOPT_SSH_PRIVATE_KEYFILE 7.16.1
|
||||
CURLOPT_SSH_PUBLIC_KEYFILE 7.16.1
|
||||
CURLOPT_SSLCERT 7.1
|
||||
CURLOPT_SSLCERT_BLOB 7.71.0
|
||||
CURLOPT_SSLCERTPASSWD 7.1.1 7.17.0
|
||||
CURLOPT_SSLCERTTYPE 7.9.3
|
||||
CURLOPT_SSLENGINE 7.9.3
|
||||
CURLOPT_SSLENGINE_DEFAULT 7.9.3
|
||||
CURLOPT_SSLKEY 7.9.3
|
||||
CURLOPT_SSLKEY_BLOB 7.71.0
|
||||
CURLOPT_SSLKEYPASSWD 7.9.3 7.17.0
|
||||
CURLOPT_SSLKEYTYPE 7.9.3
|
||||
CURLOPT_SSLVERSION 7.1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue