Command Section

CURLOPT_SSL_CTX_FUNCTION(3)                           curl_easy_setopt options

NAME
       CURLOPT_SSL_CTX_FUNCTION - SSL context callback for OpenSSL, wolfSSL or
       mbedTLS

SYNOPSIS
       #include <curl/curl.h>

       CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);

       CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
                                 ssl_ctx_callback);

DESCRIPTION
       This option only works for libcurl powered by OpenSSL, wolfSSL or
       mbedTLS. If libcurl was built against another SSL library this
       functionality is absent.

       Pass a pointer to your callback function, which should match the
       prototype shown above.

       This callback function gets called by libcurl just before the
       initialization 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 initialization. The ssl_ctx parameter is
       actually a pointer to the SSL library's SSL_CTX for OpenSSL or wolfSSL,
       and a pointer to mbedtls_ssl_config for mbedTLS. If an error is
       returned from the callback no attempt to establish a connection is made
       and the perform operation will return the callback's error code. Set
       the userptr argument with the _SSL_CTX_DATA&section=3">CURLOPT_SSL_CTX_DATA(3) option.

       This function will get called on all new connections made to a server,
       during the SSL negotiation. The ssl_ctx will point to a newly
       initialized object each time, but note the pointer may be the same as
       from a prior call.

       To use this properly, a non-trivial amount of knowledge of your SSL
       library is necessary. For example, you can use this function to call
       library-specific callbacks to add additional validation code for
       certificates, and even to change the actual URI of an HTTPS request.

       WARNING: The _SSL_CTX_FUNCTION&section=3">CURLOPT_SSL_CTX_FUNCTION(3) callback allows the
       application to reach in and modify SSL details in the connection
       without libcurl itself knowing anything about it, which then
       subsequently can lead to libcurl unknowingly reusing SSL connections
       with different properties. To remedy this you may set
       _FORBID_REUSE&section=3">CURLOPT_FORBID_REUSE(3) from the callback function.

       WARNING: If you are using DNS-over-HTTPS (DOH) via _DOH_URL&section=3">CURLOPT_DOH_URL(3)
       then the CTX callback will also be called for those transfers and the
       curl handle is set to an internal handle. This behavior is subject to
       change. We recommend before performing your transfer set
       _PRIVATE&section=3">CURLOPT_PRIVATE(3) on your curl handle so you can identify it in the
       CTX callback. If you have a reason to modify DOH SSL context please let
       us know on the curl-library mailing list because we are considering
       removing this capability.

DEFAULT
       NULL

PROTOCOLS
       All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.

EXAMPLE
       See cacertinmem.c in docs/examples directory for usage example.

       https://curl.se/libcurl/c/cacertinmem.html

AVAILABILITY
       Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL and in 7.54.0 for
       mbedTLS. Other SSL backends are not supported.

RETURN VALUE
       CURLE_OK if supported; or an error such as:

       CURLE_NOT_BUILT_IN - Not supported by the SSL backend

       CURLE_UNKNOWN_OPTION

SEE ALSO
       CURLOPT_SSL_CTX_DATA(3), CURLOPT_SSL_VERIFYPEER(3),

libcurl 7.77.0                   March 4, 2021     CURLOPT_SSL_CTX_FUNCTION(3)

Command Section

man2web Home...