| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- .\" generated by cd2nroff 0.1 from curl_global_sslset.md
- .TH curl_global_sslset 3 "2025-01-17" libcurl
- .SH NAME
- curl_global_sslset \- select SSL backend to use
- .SH SYNOPSIS
- .nf
- #include <curl/curl.h>
- CURLsslset curl_global_sslset(curl_sslbackend id,
- const char *name,
- const curl_ssl_backend ***avail);
- .fi
- .SH 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 \fBbefore\fP \fIcurl_global_init(3)\fP.
- The backend can be identified by the \fIid\fP
- (e.g. \fBCURLSSLBACKEND_OPENSSL\fP). The backend can also be specified via the
- \fIname\fP parameter for a case insensitive match (passing
- \fBCURLSSLBACKEND_NONE\fP as \fIid\fP). If both \fIid\fP and \fIname\fP are
- specified, the \fIname\fP is ignored.
- If neither \fIid\fP nor \fIname\fP are specified, the function fails with
- \fBCURLSSLSET_UNKNOWN_BACKEND\fP and set the \fIavail\fP 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 \fIavail\fP pointer is always set to the list of
- alternatives if non\-NULL.
- Upon success, the function returns \fBCURLSSLSET_OK\fP.
- If the specified SSL backend is not available, the function returns
- \fBCURLSSLSET_UNKNOWN_BACKEND\fP and sets the \fIavail\fP 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 \fBCURLSSLSET_TOO_LATE\fP getting returned.
- This function is thread\-safe since libcurl 7.84.0 if
- \fIcurl_version_info(3)\fP 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.
- .SH 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
- \fIcurl_global_sslset(3)\fP they are all just "OpenSSL". They all mostly
- provide the same API.
- \fIcurl_version_info(3)\fP can return more specific info about the exact
- OpenSSL flavor and version number is use.
- .SH struct
- .nf
- 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;
- .fi
- .SH PROTOCOLS
- This functionality affects all supported protocols
- .SH EXAMPLE
- .nf
- 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);
- }
- .fi
- .SH AVAILABILITY
- Added in curl 7.56.0
- .SH RETURN VALUE
- If this function returns \fICURLSSLSET_OK\fP, 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
- \fICURLSSLSET_UNKNOWN_BACKEND\fP.
- If the backend had been configured previously, or if \fIcurl_global_init(3)\fP
- has already been called, the function returns \fICURLSSLSET_TOO_LATE\fP.
- If this libcurl was built completely without SSL support, with no backends at
- all, this function returns \fICURLSSLSET_NO_BACKENDS\fP.
- .SH SEE ALSO
- .BR curl_global_init (3),
- .BR libcurl (3)
|