TLS: drop support for TLS-SRP

The options will simply do nothing.

Closes #21965
This commit is contained in:
Daniel Stenberg 2026-07-04 12:19:47 +02:00
parent d169ad68fa
commit 69ac867f98
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
63 changed files with 133 additions and 932 deletions

View file

@ -224,9 +224,8 @@ the following way:
* When the set string starts with '+', '-' or '!' it is *appended* to the
priority string libcurl itself generates (separated by ':'). This initial
priority depends other settings such as CURLOPT_SSLVERSION(3),
CURLOPT_TLSAUTH_USERNAME(3) (for SRP) or if HTTP/3 (QUIC)
is being negotiated.
priority depends other settings such as CURLOPT_SSLVERSION(3) or if HTTP/3
(QUIC) is being negotiated.
* Otherwise, the set string fully *replaces* the libcurl generated one. While
giving full control to the application, the set priority needs to
provide for everything the transfer may need to negotiate. Example: if

View file

@ -12,14 +12,6 @@ email the
as soon as possible and explain to us why this is a problem for you and
how your use case cannot be satisfied properly using a workaround.
## TLS-SRP Authentication
Transport Layer Security Secure Remote Password is a TLS feature that does not
work with TLS 1.3 or QUIC and is virtually unused by curl users and in
general.
TLS-SRP support gets removed in August 2026.
## drop SMB support
The SMB protocol has weak security and is rarely used these days.
@ -83,3 +75,4 @@ Local crypto gets removed in October 2026.
- SMB (became opt-in in 8.20.0)
- NTLM (became opt-in in 8.20.0)
- c-ares < 1.16.0 (removed in 8.20.0)
- TLS-SRP (removed in 8.22.0)

View file

@ -299,7 +299,6 @@ target_link_libraries(my_target PRIVATE CURL::libcurl)
- `CURL_DISABLE_SHUFFLE_DNS`: Disable shuffle DNS feature. Default: `OFF`
- `CURL_DISABLE_SMTP`: Disable SMTP. Default: `OFF`
- `CURL_DISABLE_SOCKETPAIR`: Disable use of socketpair for curl_multi_poll(). Default: `OFF`
- `CURL_DISABLE_SRP`: Disable TLS-SRP support. Default: `OFF`
- `CURL_DISABLE_TELNET`: Disable Telnet. Default: `OFF`
- `CURL_DISABLE_TFTP`: Disable TFTP. Default: `OFF`
- `CURL_DISABLE_TYPECHECK`: Disable curl_easy_setopt()/curl_easy_getinfo() type checking. Default: `OFF`
@ -516,11 +515,9 @@ the parent project, ideally in the "extra" find package redirect file:
Available variables:
- `HAVE_DES_ECB_ENCRYPT`: `DES_ecb_encrypt` present in OpenSSL (or fork).
- `HAVE_GNUTLS_SRP`: `gnutls_srp_verifier` present in GnuTLS.
- `HAVE_LDAP_INIT_FD`: `ldap_init_fd` present in LDAP library.
- `HAVE_LDAP_URL_PARSE`: `ldap_url_parse` present in LDAP library.
- `HAVE_MBEDTLS_DES_CRYPT_ECB`: `mbedtls_des_crypt_ecb` present in mbedTLS <4.
- `HAVE_OPENSSL_SRP`: `SSL_CTX_set_srp_username` present in OpenSSL (or fork).
- `HAVE_QUICHE_CONN_SET_QLOG_FD`: `quiche_conn_set_qlog_fd` present in quiche.
- `HAVE_RUSTLS_SUPPORTED_HPKE`: `rustls_supported_hpke` present in Rustls
(unused if Rustls is detected via `pkg-config`).

View file

@ -634,7 +634,6 @@ disabling support for some features (run `./configure --help` to see them all):
- `--disable-proxy` (HTTP and SOCKS proxies)
- `--disable-socketpair` (socketpair for asynchronous name resolving)
- `--disable-threaded-resolver` (threaded name resolver)
- `--disable-tls-srp` (Secure Remote Password authentication for TLS)
- `--disable-unix-sockets` (Unix sockets)
- `--disable-verbose` (eliminates debugging strings and error code strings)
- `--disable-versioned-symbols` (versioned symbols)

View file

@ -17,6 +17,8 @@ Example:
# `--proxy-tlsauthtype`
Deprecated option. This has no functionality since 8.22.0.
Set TLS authentication type with HTTPS proxy. The only supported option is
`SRP`, for TLS-SRP (RFC 5054). This option works only if the underlying
libcurl is built with TLS-SRP support.

View file

@ -16,6 +16,8 @@ Example:
# `--proxy-tlspassword`
Deprecated option. This has no functionality since 8.22.0.
Set password to use with the TLS authentication method specified with
--proxy-tlsauthtype when using HTTPS proxy. Requires that --proxy-tlsuser is
set.

View file

@ -16,6 +16,8 @@ Example:
# `--proxy-tlsuser`
Deprecated option. This has no functionality since 8.22.0.
Set username for use for HTTPS proxy with the TLS authentication method
specified with --proxy-tlsauthtype. Requires that --proxy-tlspassword also is
set.

View file

@ -16,6 +16,8 @@ Example:
# `--tlsauthtype`
Deprecated option. This has no functionality since 8.22.0.
Set TLS authentication type. Currently, the only supported option is `SRP`,
for TLS-SRP (RFC 5054). If --tlsuser and --tlspassword are specified but
--tlsauthtype is not, then this option defaults to `SRP`. This option works

View file

@ -16,6 +16,8 @@ Example:
# `--tlspassword`
Deprecated option. This has no functionality since 8.22.0.
Set password to use with the TLS authentication method specified with
--tlsauthtype. Requires that --tlsuser is set.

View file

@ -16,6 +16,8 @@ Example:
# `--tlsuser`
Deprecated option. This has no functionality since 8.22.0.
Set username for use with the TLS authentication method specified with
--tlsauthtype. Requires that --tlspassword also is set.

View file

@ -121,9 +121,6 @@ This build supports TLS session export/import, like with the --ssl-sessions.
## `SSPI`
SSPI is supported.
## `TLS-SRP`
SRP (Secure Remote Password) authentication is supported for TLS.
## `Unicode`
Unicode support on Windows.

View file

@ -55,9 +55,7 @@ Examples:
Different configurations produce different keys which is what curl needs when
handling SSL session tickets.
One important thing: peer keys do not contain confidential information. If you
configure a client certificate or SRP authentication with username/password,
these are not part of the peer key.
One important thing: peer keys do not contain confidential information.
Peer keys carry the hostnames you use curl for. They *do* leak the privacy of
your communication. We recommend to *not* persist peer keys for this reason.
@ -76,10 +74,9 @@ its own peer_key and calls into the cache. The cache then looks for a ticket
with exactly this peer_key. Peer keys between proxy SSL filters and SSL
filters talking through a tunnel differ, as they talk to different peers.
If the connection filter wants to use a client certificate or SRP
authentication, the cache checks those as well. If the cache peer carries
client cert or SRP auth, the connection filter must have those with the same
values (and vice versa).
If the connection filter wants to use a client certificate, the cache checks
those as well. If the cache peer carries client certs, the connection filter
must have those with the same values (and vice versa).
On a match, the connection filter gets the session ticket and feeds that to
the TLS implementation which, on accepting it, tries to resume it for a

View file

@ -867,15 +867,18 @@ Proxy TLS 1.3 cipher suites to use. See CURLOPT_PROXY_TLS13_CIPHERS(3)
## CURLOPT_PROXY_TLSAUTH_PASSWORD
Proxy TLS authentication password. See CURLOPT_PROXY_TLSAUTH_PASSWORD(3)
**Deprecated option**. Proxy TLS authentication password. See
CURLOPT_PROXY_TLSAUTH_PASSWORD(3)
## CURLOPT_PROXY_TLSAUTH_TYPE
Proxy TLS authentication methods. See CURLOPT_PROXY_TLSAUTH_TYPE(3)
**Deprecated option**. Proxy TLS authentication methods. See
CURLOPT_PROXY_TLSAUTH_TYPE(3)
## CURLOPT_PROXY_TLSAUTH_USERNAME
Proxy TLS authentication username. See CURLOPT_PROXY_TLSAUTH_USERNAME(3)
**Deprecated option**. Proxy TLS authentication username. See
CURLOPT_PROXY_TLSAUTH_USERNAME(3)
## CURLOPT_PROXY_TRANSFER_MODE
@ -1244,15 +1247,16 @@ TLS 1.3 cipher suites to use. See CURLOPT_TLS13_CIPHERS(3)
## CURLOPT_TLSAUTH_PASSWORD
TLS authentication password. See CURLOPT_TLSAUTH_PASSWORD(3)
**Deprecated option**. TLS authentication password. See CURLOPT_TLSAUTH_PASSWORD(3)
## CURLOPT_TLSAUTH_TYPE
TLS authentication methods. See CURLOPT_TLSAUTH_TYPE(3)
**Deprecated option**. TLS authentication methods. See CURLOPT_TLSAUTH_TYPE(3)
## CURLOPT_TLSAUTH_USERNAME
TLS authentication username. See CURLOPT_TLSAUTH_USERNAME(3)
**Deprecated option**. TLS authentication username. See
CURLOPT_TLSAUTH_USERNAME(3)
## CURLOPT_TRAILERDATA

View file

@ -60,8 +60,7 @@ persisted: either **session_key** or **shamc** and always **sdata**. All
other parameters are informative, e.g. allow the callback to act only
on specific session tickets.
Note that SSL sessions that involve a client certificate or SRP
username/password are not exported.
Note that SSL sessions that involve a client certificate are not exported.
# Export Function Parameter

View file

@ -47,6 +47,10 @@ previous ones. Set it to NULL to disable its use again.
NULL
# DEPRECATED
This option was deprecated in 8.22.0.
# %PROTOCOLS%
# EXAMPLE

View file

@ -54,6 +54,10 @@ options.
blank
# DEPRECATED
This option was deprecated in 8.22.0.
# %PROTOCOLS%
# EXAMPLE

View file

@ -47,6 +47,10 @@ previous ones. Set it to NULL to disable its use again.
NULL
# DEPRECATED
This option was deprecated in 8.22.0.
# %PROTOCOLS%
# EXAMPLE

View file

@ -30,6 +30,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd);
# DESCRIPTION
Deprecated option. It serves no purpose anymore.
Pass a char pointer as parameter, which should point to the null-terminated
password to use for the TLS authentication method specified with the
CURLOPT_TLSAUTH_TYPE(3) option. Requires that the CURLOPT_TLSAUTH_USERNAME(3)
@ -47,6 +49,10 @@ This feature relies on TLS-SRP which does not work with TLS 1.3.
NULL
# DEPRECATED
This option was deprecated in 8.22.0.
# %PROTOCOLS%
# EXAMPLE

View file

@ -29,6 +29,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);
# DESCRIPTION
Deprecated option. It serves no purpose anymore.
Pass a pointer to a null-terminated string as parameter. The string should be
the method of the TLS authentication. Supported method is "SRP".
@ -51,6 +53,10 @@ TLS-SRP does not work with TLS 1.3.
blank
# DEPRECATED
This option was deprecated in 8.22.0.
# %PROTOCOLS%
# EXAMPLE

View file

@ -29,6 +29,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user);
# DESCRIPTION
Deprecated option. It serves no purpose anymore.
Pass a char pointer as parameter, which should point to the null-terminated
username to use for the TLS authentication method specified with the
CURLOPT_TLSAUTH_TYPE(3) option. Requires that the CURLOPT_TLSAUTH_PASSWORD(3)
@ -46,6 +48,10 @@ This feature relies on TLS-SRP which does not work with TLS 1.3.
NULL
# DEPRECATED
This option was deprecated in 8.22.0.
# %PROTOCOLS%
# EXAMPLE

View file

@ -151,8 +151,8 @@ CURL_TIMECOND_IFMODSINCE 7.9.7
CURL_TIMECOND_IFUNMODSINCE 7.9.7
CURL_TIMECOND_LASTMOD 7.9.7
CURL_TIMECOND_NONE 7.9.7
CURL_TLSAUTH_NONE 7.21.4
CURL_TLSAUTH_SRP 7.21.4
CURL_TLSAUTH_NONE 7.21.4 8.22.0
CURL_TLSAUTH_SRP 7.21.4 8.22.0
CURL_TRAILERFUNC_ABORT 7.64.0
CURL_TRAILERFUNC_OK 7.64.0
CURL_UPKEEP_INTERVAL_DEFAULT 7.62.0
@ -184,7 +184,7 @@ CURL_VERSION_SPNEGO 7.10.8
CURL_VERSION_SSL 7.10
CURL_VERSION_SSPI 7.13.2
CURL_VERSION_THREADSAFE 7.84.0
CURL_VERSION_TLSAUTH_SRP 7.21.4
CURL_VERSION_TLSAUTH_SRP 7.21.4 8.22.0
CURL_VERSION_UNICODE 7.72.0
CURL_VERSION_UNIX_SOCKETS 7.40.0
CURL_VERSION_ZSTD 7.72.0
@ -791,9 +791,9 @@ CURLOPT_PROXY_SSLKEY_BLOB 7.71.0
CURLOPT_PROXY_SSLKEYTYPE 7.52.0
CURLOPT_PROXY_SSLVERSION 7.52.0
CURLOPT_PROXY_TLS13_CIPHERS 7.61.0
CURLOPT_PROXY_TLSAUTH_PASSWORD 7.52.0
CURLOPT_PROXY_TLSAUTH_TYPE 7.52.0
CURLOPT_PROXY_TLSAUTH_USERNAME 7.52.0
CURLOPT_PROXY_TLSAUTH_PASSWORD 7.52.0 8.22.0
CURLOPT_PROXY_TLSAUTH_TYPE 7.52.0 8.22.0
CURLOPT_PROXY_TLSAUTH_USERNAME 7.52.0 8.22.0
CURLOPT_PROXY_TRANSFER_MODE 7.18.0
CURLOPT_PROXYAUTH 7.10.7
CURLOPT_PROXYHEADER 7.37.0
@ -901,9 +901,9 @@ CURLOPT_TIMEOUT_MS 7.16.2
CURLOPT_TIMEVALUE 7.1
CURLOPT_TIMEVALUE_LARGE 7.59.0
CURLOPT_TLS13_CIPHERS 7.61.0
CURLOPT_TLSAUTH_PASSWORD 7.21.4
CURLOPT_TLSAUTH_TYPE 7.21.4
CURLOPT_TLSAUTH_USERNAME 7.21.4
CURLOPT_TLSAUTH_PASSWORD 7.21.4 8.22.0
CURLOPT_TLSAUTH_TYPE 7.21.4 8.22.0
CURLOPT_TLSAUTH_USERNAME 7.21.4 8.22.0
CURLOPT_TRAILERDATA 7.64.0
CURLOPT_TRAILERFUNCTION 7.64.0
CURLOPT_TRANSFER_ENCODING 7.21.6

View file

@ -445,8 +445,6 @@ What server(s) this test case requires/uses. Available servers:
- `https`
- `https-proxy`
- `https-mtls`
- `httptls+srp`
- `httptls+srp-ipv6`
- `http-unix`
- `imap`
- `mqtt`