oracular (3) curl_global_sslset.3.gz

Provided by: libcurl4-doc_8.9.1-2ubuntu2.2_all bug

NAME

       curl_global_sslset - select SSL backend to use

SYNOPSIS

       #include <curl/curl.h>

       CURLsslset curl_global_sslset(curl_sslbackend id,
                                     const char *name,
                                     const curl_ssl_backend ***avail);

DESCRIPTION

       This function configures at runtime which SSL backend to use with libcurl. This function can only be used
       to select an SSL backend once, and it must be called before curl_global_init(3).

       The backend can be identified by the id (e.g. CURLSSLBACKEND_OPENSSL). The backend can also be  specified
       via  the  name parameter for a case insensitive match (passing CURLSSLBACKEND_NONE as id). If both id and
       name are specified, the name is ignored.

       If neither id nor name are specified, the function fails  with  CURLSSLSET_UNKNOWN_BACKEND  and  set  the
       avail  pointer  to  the NULL-terminated list of available backends. The available backends are those that
       this particular build of libcurl supports.

       Since libcurl 7.60.0, the avail pointer is always set to the list of alternatives if non-NULL.

       Upon success, the function returns CURLSSLSET_OK.

       If the specified SSL backend is not available, the function returns CURLSSLSET_UNKNOWN_BACKEND  and  sets
       the  avail  pointer  to  a NULL-terminated list of available SSL backends. In this case, you may call the
       function again to try to select a different backend.

       The SSL backend can be set only once. If it has already been set,  a  subsequent  attempt  to  change  it
       results in a CURLSSLSET_TOO_LATE getting returned.

       This function is thread-safe since libcurl 7.84.0 if curl_version_info(3) has the CURL_VERSION_THREADSAFE
       feature bit set (most platforms).

       If this is not thread-safe, you must not call this function when any other thread in the program (i.e.  a
       thread  sharing  the  same  memory)  is  running.   This does not just mean no other thread that is using
       libcurl.

OpenSSL

       The name "OpenSSL" is used for all versions of OpenSSL and its associated forks/flavors in this function.
       OpenSSL,  BoringSSL,  LibreSSL,  quictls  and  AmiSSL  are  all  supported by libcurl, but in the eyes of
       curl_global_sslset(3) they are all just "OpenSSL". They all mostly provide the same API.

       curl_version_info(3) can return more specific info about the exact OpenSSL flavor and version  number  is
       use.

struct

       typedef struct {
         curl_sslbackend id;
         const char *name;
       } curl_ssl_backend;

       typedef enum {
         CURLSSLBACKEND_NONE = 0,
         CURLSSLBACKEND_OPENSSL = 1, /* or one of its forks */
         CURLSSLBACKEND_GNUTLS = 2,
         CURLSSLBACKEND_NSS = 3,
         CURLSSLBACKEND_GSKIT = 5, /* deprecated */
         CURLSSLBACKEND_POLARSSL = 6, /* deprecated */
         CURLSSLBACKEND_WOLFSSL = 7,
         CURLSSLBACKEND_SCHANNEL = 8,
         CURLSSLBACKEND_SECURETRANSPORT = 9,
         CURLSSLBACKEND_AXTLS = 10, /* deprecated */
         CURLSSLBACKEND_MBEDTLS = 11,
         CURLSSLBACKEND_MESALINK = 12, /* deprecated */
         CURLSSLBACKEND_BEARSSL = 13,
         CURLSSLBACKEND_RUSTLS = 14
       } curl_sslbackend;

PROTOCOLS

       This functionality affects all supported protocols

EXAMPLE

       int main(void)
       {
         int i;
         /* choose a specific backend */
         curl_global_sslset(CURLSSLBACKEND_WOLFSSL, NULL, NULL);

         /* list the available ones */
         const curl_ssl_backend **list;
         curl_global_sslset(CURLSSLBACKEND_NONE, NULL, &list);

         for(i = 0; list[i]; i++)
           printf("SSL backend #%d: '%s' (ID: %d)\n",
                  i, list[i]->name, list[i]->id);
       }

AVAILABILITY

       Added in curl 7.56.0

RETURN VALUE

       If this function returns CURLSSLSET_OK, the backend was successfully selected.

       If  the chosen backend is unknown (or support for the chosen backend has not been compiled into libcurl),
       the function returns CURLSSLSET_UNKNOWN_BACKEND.

       If the backend had been configured previously, or if curl_global_init(3) has  already  been  called,  the
       function returns CURLSSLSET_TOO_LATE.

       If  this libcurl was built completely without SSL support, with no backends at all, this function returns
       CURLSSLSET_NO_BACKENDS.

SEE ALSO

       curl_global_init(3), libcurl(3)