gnurl_global_sslset(3)

πŸ“¦ version 7.72.0, in nixos 26.05, nixpkgs unstable

πŸ¦‹ NAME πŸ¦‹

This is gnurl_global_sslset(3) from the libgnurl Manual 🫢✨ β€” AKA the curl_global_sslset page: Select SSL backend to use with libcurl. That's the assignment, bestie. πŸ’…


✨ SYNOPSIS ✨

Here's the whole cast, no edits, no cap:

#include <gnurl/curl.h>

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

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

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

🌸 DESCRIPTION 🌸

Okay so curl_global_sslset is the function that 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). Periodt. πŸ’…

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 -1 as id. If both id and name are specified, the name will be ignored. Rude but true. πŸ™ˆ

If neither id nor name are specified, the function will fail 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. Your build's roster, basically. ✨

Since libcurl 7.60.0, the avail pointer will always be set to the list of alternatives if non-NULL. Good to know, iykyk. 🫢

Upon success, the function returns CURLSSLSET_OK. Slay. πŸŽ€

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. Second chance energy. πŸ’–

The SSL backend can be set only once. If it has already been set, a subsequent attempt to change it will result in a CURLSSLSET_TOO_LATE. Too late, bestie. The backend has been chosen. πŸ’€

⚠️ This function is not thread safe. You must not call it when any other thread in the program (i.e. a thread sharing the same memory) is running. This doesn't just mean no other thread that is using libcurl. Like, any other thread. fr fr. 😭

🌈 AVAILABILITY 🌈

This function was added in libcurl 7.56.0. Before this version, there was no support for choosing SSL backends at runtime. Ancient history, bestie. πŸ¦‹


πŸ‘‘ RETURN VALUE πŸ‘‘

If this function returns CURLSSLSET_OK, the backend was successfully selected. Iconic. βœ…

If the chosen backend is unknown (or support for the chosen backend has not been compiled into libcurl), the function returns CURLSSLSET_UNKNOWN_BACKEND. Mystery backend, no thanks. πŸ™ˆ

If the backend had been configured previously, or if curl_global_init(3) has already been called, the function returns CURLSSLSET_TOO_LATE. Timing is everything. πŸ’€

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


πŸŽ€ SEE ALSO πŸŽ€

Brought to you by libcurl 7.56, dated 15 July 2017 β€” mwah, love u, bye πŸ’‹βœ¨

πŸ“¦ where this page comes from