CURLOPT_SSL_EC_CURVES(3)

CURLOPT_SSL_EC_CURVES(3) πŸ’…

okay so bestie, welcome to this page from the Library Functions Manual ✨ this one is all about CURLOPT_SSL_EC_CURVES, and it's lowkey iconic for TLS vibes πŸ¦‹

πŸ‘‘ NAME πŸ‘‘

CURLOPT_SSL_EC_CURVES β€” key exchange curves

✨ SYNOPSIS ✨

#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_EC_CURVES, char *list);

πŸ’– DESCRIPTION πŸ’–

So here's the tea: you pass a string as the parameter, and that string is a colon delimited list of Elliptic curve (EC) algorithms. This option defines the client's key exchange algorithms in the SSL handshake β€” but only if the SSL backend libcurl is built to use supports it, iykyk πŸ‘‘

The application does <strong>not</strong> have to keep the string around after setting this option, so no need to cling to it like a group-chat screenshot πŸ’…

Using this option multiple times makes the last set string override the previous ones. Set it to NULL to restore back to internal default.

πŸŽ€ DEFAULT πŸŽ€

"", embedded in SSL backend

🌈 PROTOCOLS 🌈

This functionality affects all TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. 🌸

This option works only with the following TLS backends: OpenSSL and wolfSSL β€” no cap, those are the only two listed here 🫢

🧚 EXAMPLE 🧚

Look at this little cutie go:

int main(void)
{
  CURL *curl = curl_easy_init();
  if(curl) {
    CURLcode result;
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
    curl_easy_setopt(curl, CURLOPT_SSL_EC_CURVES, "X25519:P-521");
    result = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
  }
}

⭐ AVAILABILITY ⭐

Added in curl 7.73.0 ✨

πŸ¦‹ RETURN VALUE πŸ¦‹

curl_easy_setopt(3) returns a CURLcode indicating success or error.

CURLE_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors(3).

πŸ’œ SEE ALSO πŸ’œ


mwah πŸ’‹ this page is brought to you by libcurl, dated 2026-10-12, and filed under CURLOPT_SSL_EC_CURVES(3) 🫢

πŸ“¦ where this page comes from