CURLOPT_SS...ALGORITHMS(3)
π CURLOPT_SS...ALGORITHMS(3) π
okay so this is a page from the Library Functions Manual (libcurl girlies rise up) and it's all about CURLOPT_SSL_SIGNATURE_ALGORITHMS β yes that is a mouthful, we're abbreviating it in the header because the full name is lowkey too long for the page title π
β¨ NAME β¨
CURLOPT_SSL_SIGNATURE_ALGORITHMS β the signature algorithms you wanna use for TLS, bestie π
πΈ SYNOPSIS πΈ
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_SIGNATURE_ALGORITHMS, char *list);
π¦ DESCRIPTION π¦
So here's the vibe: you pass a char pointer pointing at a null-terminated string, and that string holds the list of signature algorithms to use for the TLS connection. π
The list has got to be syntactically correct β no freestyling, ngl. It consists of one or more signature algorithm strings separated by colons. That's the whole format, colon-separated, done.
A valid example of a signature algorithms list with OpenSSL is:
"DSA+SHA256:rsa_pss_pss_sha256"
The application does not have to keep the string around after setting this option β so you can let it go, it's fine, curl's got it π«Ά
Using this option multiple times makes the last set string override the previous ones. Last one wins, periodt. Set it to NULL to disable its use again.
Works with OpenSSL and its BoringSSL fork (added in 8.14.0) π
π DEFAULT π
NULL, use built-in list β so if you never touch it, curl just does its own thing β¨
π PROTOCOLS π
This functionality affects all TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. only β like, literally just the TLS girlies π
heads up: this option works only with the following TLS backends: OpenSSL. That's the whole list. No cap.
π EXAMPLE π
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_SIGNATURE_ALGORITHMS,
"DSA+SHA256:rsa_pss_pss_sha256");
result = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
}
look at her go πβ¨ iconic behavior honestly
β HISTORY β
OpenSSL support added in 8.14.0. that's the lore π
π§ AVAILABILITY π§
Added in curl 8.14.0 β so if you're on something older, bestie, it's giving "not yet" π
π 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) for the full tea.
π SEE ALSO π
go read those next, you're gonna slay π₯
okay that's the whole page!! mwah π this was brought to you by libcurl, dated 2026-10-25, and yeah the title in the corner still says CURLOPT_SS...ALGORITHMS(3) because we abbreviate around here πβ¨
π¦ where this page comes from
- alpine 3.23: curl-doc 8.23.0-r0 Β· curl
- alpine 3.24: curl-doc 8.23.0-r0 Β· curl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms