mirror of
https://github.com/curl/curl.git
synced 2026-08-26 17:33:32 +03:00
CURLOPT_SSL_CTX_FUNCTION.md: no promises of lifetime after return
... and cleanup other language. Closes #12999
This commit is contained in:
parent
5929822114
commit
f73cb3ebd2
1 changed files with 35 additions and 34 deletions
|
|
@ -7,11 +7,12 @@ Source: libcurl
|
||||||
See-also:
|
See-also:
|
||||||
- CURLOPT_SSL_CTX_DATA (3)
|
- CURLOPT_SSL_CTX_DATA (3)
|
||||||
- CURLOPT_SSL_VERIFYPEER (3)
|
- CURLOPT_SSL_VERIFYPEER (3)
|
||||||
|
- CURLOPT_CAINFO (3)
|
||||||
---
|
---
|
||||||
|
|
||||||
# NAME
|
# NAME
|
||||||
|
|
||||||
CURLOPT_SSL_CTX_FUNCTION - SSL context callback for OpenSSL, wolfSSL or mbedTLS
|
CURLOPT_SSL_CTX_FUNCTION - SSL context callback
|
||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
|
|
@ -26,49 +27,49 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
This option only works for libcurl powered by OpenSSL, wolfSSL, mbedTLS or
|
|
||||||
BearSSL. If libcurl was built against another SSL library this functionality
|
|
||||||
is absent.
|
|
||||||
|
|
||||||
Pass a pointer to your callback function, which should match the prototype
|
Pass a pointer to your callback function, which should match the prototype
|
||||||
shown above.
|
shown above.
|
||||||
|
|
||||||
This callback function gets called by libcurl just before the initialization
|
This callback function gets called by libcurl just before the initialization
|
||||||
of an SSL connection after having processed all other SSL related options to
|
of an SSL connection after having processed all other SSL related options to
|
||||||
give a last chance to an application to modify the behavior of the SSL
|
give a last chance to an application to modify the behavior of the SSL
|
||||||
initialization. The *ssl_ctx* parameter is actually a pointer to the SSL
|
initialization. The *ssl_ctx* parameter is a pointer to the SSL library's
|
||||||
library's *SSL_CTX* for OpenSSL or wolfSSL, a pointer to
|
*SSL_CTX* for OpenSSL or wolfSSL, a pointer to *mbedtls_ssl_config* for
|
||||||
*mbedtls_ssl_config* for mbedTLS or a pointer to
|
mbedTLS or a pointer to *br_ssl_client_context* for BearSSL. If an error is
|
||||||
*br_ssl_client_context* for BearSSL. If an error is returned from the
|
returned from the callback no attempt to establish a connection is made and
|
||||||
callback no attempt to establish a connection is made and the perform
|
the perform operation returns the callback's error code. Set the *clientp*
|
||||||
operation returns the callback's error code. Set the *clientp* argument
|
argument passed in to this callback with the CURLOPT_SSL_CTX_DATA(3) option.
|
||||||
with the CURLOPT_SSL_CTX_DATA(3) option.
|
|
||||||
|
|
||||||
This function gets called on all new connections made to a server, during the
|
This function gets called for all new connections made to a server, during the
|
||||||
SSL negotiation. The *ssl_ctx* points to a newly initialized object each
|
SSL negotiation. While *ssl_ctx* points to a newly initialized object each
|
||||||
time, but note the pointer may be the same as from a prior call.
|
time, the pointer may still be the same as in a prior call.
|
||||||
|
|
||||||
To use this properly, a non-trivial amount of knowledge of your SSL library is
|
To use this callback, a non-trivial amount of knowledge of your SSL library is
|
||||||
necessary. For example, you can use this function to call library-specific
|
necessary. For example, you can use this function to call library-specific
|
||||||
callbacks to add additional validation code for certificates, and even to
|
callbacks to add additional validation code for certificates, and even to
|
||||||
change the actual URI of an HTTPS request.
|
change the actual URI of an HTTPS request.
|
||||||
|
|
||||||
For OpenSSL, asynchronous certificate verification via
|
For OpenSSL, asynchronous certificate verification via *SSL_set_retry_verify*
|
||||||
*SSL_set_retry_verify* is supported. (Added in 8.3.0)
|
is supported. (Added in 8.3.0)
|
||||||
|
|
||||||
WARNING: The CURLOPT_SSL_CTX_FUNCTION(3) callback allows the application
|
The CURLOPT_SSL_CTX_FUNCTION(3) callback allows the application to reach in
|
||||||
to reach in and modify SSL details in the connection without libcurl itself
|
and modify SSL details in the connection without libcurl itself knowing
|
||||||
knowing anything about it, which then subsequently can lead to libcurl
|
anything about it, which then subsequently can lead to libcurl unknowingly
|
||||||
unknowingly reusing SSL connections with different properties. To remedy this
|
reusing SSL connections with different properties. To remedy this you may set
|
||||||
you may set CURLOPT_FORBID_REUSE(3) from the callback function.
|
CURLOPT_FORBID_REUSE(3) from the callback function.
|
||||||
|
|
||||||
WARNING: If you are using DNS-over-HTTPS (DoH) via CURLOPT_DOH_URL(3)
|
If you are using DNS-over-HTTPS (DoH) via CURLOPT_DOH_URL(3) then this
|
||||||
then this callback is also called for those transfers and the curl handle is
|
callback is also called for those transfers and the curl handle is set to an
|
||||||
set to an internal handle. **This behavior is subject to change.** We
|
internal handle. **This behavior is subject to change.** We recommend setting
|
||||||
recommend before performing your transfer set CURLOPT_PRIVATE(3) on your
|
CURLOPT_PRIVATE(3) on your curl handle so you can identify it correctly in the
|
||||||
curl handle so you can identify it in the context callback. If you have a
|
context callback. If you have a reason to modify DoH SSL context please let us
|
||||||
reason to modify DoH SSL context please let us know on the curl-library
|
know on the curl-library mailing list because we are considering removing this
|
||||||
mailing list because we are considering removing this capability.
|
capability.
|
||||||
|
|
||||||
|
libcurl does not guarantee the lifetime of the passed in object once this
|
||||||
|
callback function has returned. Your application must not assume that it can
|
||||||
|
keep using the SSL context or data derived from it once this function is
|
||||||
|
completed.
|
||||||
|
|
||||||
# DEFAULT
|
# DEFAULT
|
||||||
|
|
||||||
|
|
@ -155,13 +156,13 @@ int main(void)
|
||||||
|
|
||||||
# AVAILABILITY
|
# AVAILABILITY
|
||||||
|
|
||||||
Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL, in 7.54.0 for mbedTLS,
|
libcurl built with OpenSSL (added in 7.11.0), wolfSSL (added in 7.42.0), mbedTLS
|
||||||
in 7.83.0 in BearSSL. Other SSL backends are not supported.
|
(added in 7.54.0) or BearSSL (added in 7.83.0)
|
||||||
|
|
||||||
|
No other SSL backend is supported.
|
||||||
|
|
||||||
# RETURN VALUE
|
# RETURN VALUE
|
||||||
|
|
||||||
CURLE_OK if supported; or an error such as:
|
CURLE_OK if supported; or an error such as:
|
||||||
|
|
||||||
CURLE_NOT_BUILT_IN - Not supported by the SSL backend
|
CURLE_NOT_BUILT_IN - Not supported by the SSL backend
|
||||||
|
|
||||||
CURLE_UNKNOWN_OPTION
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue