Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
curl_global_sslset(3)	    Library Functions Manual	   curl_global_sslset(3)

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  speci-
     fied, 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 par-
     ticular build of libcurl supports.

     Since libcurl 7.60.0, the avail pointer is always set to the list of alter-
     natives 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 subse-
     quent attempt to change it results in  a  CURLSSLSET_TOO_LATE  getting  re-
     turned.

     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 only mean no other thread that is using libcurl.

Names
     SSL backend names (case-insensitive):  GnuTLS,  mbedTLS,  OpenSSL,  Rustls,
     Schannel, wolfSSL

     The  name	"OpenSSL" is used for all versions of OpenSSL and its associated
     forks/flavors  in	this  function.  AmiSSL,  AWS-LC,  BoringSSL,  LibreSSL,
     OpenSSL  and  quictls  are  all  supported  by  libcurl, but in the eyes of
     curl_global_sslset(3) they are all called "OpenSSL". They all  mostly  pro-
     vide the same API. curl_version_info(3) can return more specific info about
     the exact OpenSSL flavor and version number in 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, /* deprecated */
       CURLSSLBACKEND_AXTLS = 10, /* deprecated */
       CURLSSLBACKEND_MBEDTLS = 11,
       CURLSSLBACKEND_MESALINK = 12, /* deprecated */
       CURLSSLBACKEND_BEARSSL = 13, /* deprecated */
       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 se-
     lected.

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

     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)

libcurl 			   2026-08-27		   curl_global_sslset(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=curl_global_sslset&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help