#
55807e6c |
| 25-Nov-2022 |
Stefan Eissing |
tls: backends use connection filters for IO, enabling HTTPS-proxy - OpenSSL (and compatible) - BearSSL - gnutls - mbedtls - rustls - schannel - secure-transpor
tls: backends use connection filters for IO, enabling HTTPS-proxy - OpenSSL (and compatible) - BearSSL - gnutls - mbedtls - rustls - schannel - secure-transport - wolfSSL (v5.0.0 and newer) This leaves only the following without HTTPS-proxy support: - gskit - nss - wolfSSL (versions earlier than v5.0.0) Closes #9962
show more ...
|
#
af22c2a5 |
| 22-Nov-2022 |
Stefan Eissing |
vtls: localization of state data in filters - almost all backend calls pass the Curl_cfilter intance instead of connectdata+sockindex - ssl_connect_data is remove from struct co
vtls: localization of state data in filters - almost all backend calls pass the Curl_cfilter intance instead of connectdata+sockindex - ssl_connect_data is remove from struct connectdata and made internal to vtls - ssl_connect_data is allocated in the added filter, kept at cf->ctx - added function to let a ssl filter access its ssl_primary_config and ssl_config_data this selects the propert subfields in conn and data, for filters added as plain or proxy - adjusted all backends to use the changed api - adjusted all backends to access config data via the exposed functions, no longer using conn or data directly cfilter renames for clear purpose: - methods `Curl_conn_*(data, conn, sockindex)` work on the complete filter chain at `sockindex` and connection `conn`. - methods `Curl_cf_*(cf, ...)` work on a specific Curl_cfilter instance. - methods `Curl_conn_cf()` work on/with filter instances at a connection. - rebased and resolved some naming conflicts - hostname validation (und session lookup) on SECONDARY use the same name as on FIRST (again). new debug macros and removing connectdata from function signatures where not needed. adapting schannel for new Curl_read_plain paramter. Closes #9919
show more ...
|
#
dafdb20a |
| 11-Nov-2022 |
Stefan Eissing |
lib: connection filters (cfilter) addition to curl: - general construct/destroy in connectdata - default implementations of callback functions - connect: cfilters for connect and
lib: connection filters (cfilter) addition to curl: - general construct/destroy in connectdata - default implementations of callback functions - connect: cfilters for connect and accept - socks: cfilter for socks proxying - http_proxy: cfilter for http proxy tunneling - vtls: cfilters for primary and proxy ssl - change in general handling of data/conn - Curl_cfilter_setup() sets up filter chain based on data settings, if none are installed by the protocol handler setup - Curl_cfilter_connect() boot straps filters into `connected` status, used by handlers and multi to reach further stages - Curl_cfilter_is_connected() to check if a conn is connected, e.g. all filters have done their work - Curl_cfilter_get_select_socks() gets the sockets and READ/WRITE indicators for multi select to work - Curl_cfilter_data_pending() asks filters if the have incoming data pending for recv - Curl_cfilter_recv()/Curl_cfilter_send are the general callbacks installed in conn->recv/conn->send for io handling - Curl_cfilter_attach_data()/Curl_cfilter_detach_data() inform filters and addition/removal of a `data` from their connection - adding vtl functions to prevent use of Curl_ssl globals directly in other parts of the code. Reviewed-by: Daniel Stenberg Closes #9855
show more ...
|
#
3c16697e |
| 28-Sep-2022 |
Michael Drake |
openssl: reduce CA certificate bundle reparsing by caching Closes #9620
|
#
72652c06 |
| 26-Sep-2022 |
Patrick Monnerat |
http, vauth: always provide Curl_allow_auth_to_host() functionality This function is currently located in the lib/http.c module and is therefore disabled by the CURL_DISABLE_HTTP conditi
http, vauth: always provide Curl_allow_auth_to_host() functionality This function is currently located in the lib/http.c module and is therefore disabled by the CURL_DISABLE_HTTP conditional token. As it may be called by TLS backends, disabling HTTP results in an undefined reference error at link time. Move this function to vauth/vauth.c to always provide it and rename it as Curl_auth_allowed_to_host() to respect the vauth module naming convention. Closes #9600
show more ...
|
#
472f1cbe |
| 01-Sep-2022 |
Daniel Stenberg |
NPN: remove support for and use of Next Protocol Negotiation is a TLS extension that was created and used for agreeing to use the SPDY protocol (the precursor to HTTP/2) for HTTPS. I
NPN: remove support for and use of Next Protocol Negotiation is a TLS extension that was created and used for agreeing to use the SPDY protocol (the precursor to HTTP/2) for HTTPS. In the early days of HTTP/2, before the spec was finalized and shipped, the protocol could be enabled using this extension with some servers. curl supports the NPN extension with some TLS backends since then, with a command line option `--npn` and in libcurl with `CURLOPT_SSL_ENABLE_NPN`. HTTP/2 proper is made to use the ALPN (Application-Layer Protocol Negotiation) extension and the NPN extension has no purposes anymore. The HTTP/2 spec was published in May 2015. Today, use of NPN in the wild should be extremely rare and most likely totally extinct. Chrome removed NPN support in Chrome 51, shipped in June 2016. Removed in Firefox 53, April 2017. Closes #9307
show more ...
|
#
ad9bc597 |
| 17-May-2022 |
max.mehl |
copyright: make repository REUSE compliant Add licensing and copyright information for all files in this repository. This either happens in the file itself as a comment header or in the
copyright: make repository REUSE compliant Add licensing and copyright information for all files in this repository. This either happens in the file itself as a comment header or in the file `.reuse/dep5`. This commit also adds a Github workflow to check pull requests and adapts copyright.pl to the changes. Closes #8869
show more ...
|
#
f18af4f8 |
| 09-May-2022 |
Daniel Stenberg |
tls: check more TLS details for connection reuse CVE-2022-27782 Reported-by: Harry Sintonen Bug: https://curl.se/docs/CVE-2022-27782.html Closes #8825
|
#
09353155 |
| 26-Apr-2022 |
Daniel Stenberg |
gnutls: don't leak the SRP credentials in redirects Follow-up to 620ea21410030 and 139a54ed0a172a Reported-by: Harry Sintonen Closes #8752
|
#
6968fb9d |
| 16-Apr-2022 |
Daniel Stenberg |
lib: remove exclamation marks ... from infof() and failf() calls. Make them less attention seeking. Closes #8713
|
#
34ebf3f9 |
| 31-Mar-2022 |
Daniel Stenberg |
vtls: use a generic "ALPN, server accepted" message Closes #8657
|
#
55043b40 |
| 31-Mar-2022 |
Daniel Stenberg |
vtls: use a backend standard message for "ALPN: offers %s" I call it VTLS_INFOF_ALPN_OFFER_1STR, the '1str' meaning that the infof() call also needs a string argument: the ALPN ID.
vtls: use a backend standard message for "ALPN: offers %s" I call it VTLS_INFOF_ALPN_OFFER_1STR, the '1str' meaning that the infof() call also needs a string argument: the ALPN ID. Closes #8657
show more ...
|
#
3bc5b32d |
| 30-Mar-2022 |
Daniel Stenberg |
vtls: provide a unified APLN-disagree string for all backends Also rephrase to make it sound less dangerous: "ALPN: server did not agree on a protocol. Uses default." Repo
vtls: provide a unified APLN-disagree string for all backends Also rephrase to make it sound less dangerous: "ALPN: server did not agree on a protocol. Uses default." Reported-by: Nick Coghlan Fixes #8643 Closes #8651
show more ...
|
#
8b1cae63 |
| 17-Mar-2022 |
Jay Satiro |
gtls: fix build for disabled TLS-SRP Prior to this change if, at build time, the GnuTLS backend was found to have TLS-SRP support (HAVE_GNUTLS_SRP) but TLS-SRP was disabled in curl v
gtls: fix build for disabled TLS-SRP Prior to this change if, at build time, the GnuTLS backend was found to have TLS-SRP support (HAVE_GNUTLS_SRP) but TLS-SRP was disabled in curl via --disable-tls-srp (!USE_TLS_SRP) then a build error would occur. Bug: https://curl.se/mail/lib-2022-03/0046.html Reported-by: Robert Brose Closes https://github.com/curl/curl/pull/8604
show more ...
|
#
ccc2752c |
| 17-Feb-2022 |
MAntoniak <47522782+MAntoniak@users.noreply.github.com> |
ssl: reduce allocated space for ssl backend when FTP is disabled Add assert() for the backend pointer in many places Closes #8471
|
#
2218c3a5 |
| 22-Jan-2022 |
Daniel Stenberg |
vtls: pass on the right SNI name The TLS backends convert the host name to SNI name and need to use that. This involves cutting off any trailing dot and lowercasing. Co-authored
vtls: pass on the right SNI name The TLS backends convert the host name to SNI name and need to use that. This involves cutting off any trailing dot and lowercasing. Co-authored-by: Jay Satiro Closes #8320
show more ...
|
#
8fbd6fed |
| 25-Dec-2021 |
Daniel Stenberg |
ngtcp2: verify the server certificate for the gnutls case Closes #8178
|
#
21248e05 |
| 25-Dec-2021 |
Daniel Stenberg |
checksrc: detect more kinds of NULL comparisons we avoid Co-authored-by: Jay Satiro Closes #8180
|
#
4a2ab69a |
| 25-Dec-2021 |
Daniel Stenberg |
gtls: check return code for gnutls_alpn_set_protocols Closes #8181
|
#
12246edd |
| 29-Sep-2021 |
Daniel Gustafsson |
lib: avoid fallthrough cases in switch statements Commit b5a434f7f0ee4d64857f8592eced5b9007d83620 inhibits the warning on implicit fallthrough cases, since the current coding of indicati
lib: avoid fallthrough cases in switch statements Commit b5a434f7f0ee4d64857f8592eced5b9007d83620 inhibits the warning on implicit fallthrough cases, since the current coding of indicating fallthrough with comments is falling out of fashion with new compilers. This attempts to make the issue smaller by rewriting fallthroughs to no longer fallthrough, via either breaking the cases or turning switch statements into if statements. lib/content_encoding.c: the fallthrough codepath is simply copied into the case as it's a single line. lib/http_ntlm.c: the fallthrough case skips a state in the state- machine and fast-forwards to NTLMSTATE_LAST. Do this before the switch statement instead to set up the states that we actually want. lib/http_proxy.c: the fallthrough is just falling into exiting the switch statement which can be done easily enough in the case. lib/mime.c: switch statement rewritten as if statement. lib/pop3.c: the fallthrough case skips to the next state in the statemachine, do this explicitly instead. lib/urlapi.c: switch statement rewritten as if statement. lib/vssh/wolfssh.c: the fallthrough cases fast-forwards the state machine, do this by running another iteration of the switch statement instead. lib/vtls/gtls.c: switch statement rewritten as if statement. lib/vtls/nss.c: the fallthrough codepath is simply copied into the case as it's a single line. Also twiddle a comment to not be inside a non-brace if statement. Closes: #7322 See-also: #7295 Reviewed-by: Daniel Stenberg <daniel@haxx.se>
show more ...
|
#
60738f39 |
| 22-Sep-2021 |
Michael Kaufmann |
vtls: Fix a memory leak if an SSL session cannot be added to the cache On connection shutdown, a new TLS session ticket may arrive after the SSL session cache has already been destructed
vtls: Fix a memory leak if an SSL session cannot be added to the cache On connection shutdown, a new TLS session ticket may arrive after the SSL session cache has already been destructed. In this case, the new SSL session cannot be added to the SSL session cache. The callers of Curl_ssl_addsessionid() need to know whether the SSL session has been added to the cache. If it has not been added, the reference counter of the SSL session must not be incremented, or memory used by the SSL session must be freed. This is now possible with the new output parameter "added" of Curl_ssl_addsessionid(). Fixes #7683 Closes #7752
show more ...
|
#
5ea31458 |
| 18-Jun-2021 |
Daniel Stenberg |
vtls: fix connection reuse checks for issuer cert and case sensitivity CVE-2021-22924 Reported-by: Harry Sintonen Bug: https://curl.se/docs/CVE-2021-22924.html
|
#
e7416cfd |
| 06-Jul-2021 |
Daniel Stenberg |
infof: remove newline from format strings, always append it - the data needs to be "line-based" anyway since it's also passed to the debug callback/application - it makes info
infof: remove newline from format strings, always append it - the data needs to be "line-based" anyway since it's also passed to the debug callback/application - it makes infof() work like failf() and consistency is good - there's an assert that triggers on newlines in the format string - Also removes a few instances of "..." - Removes the code that would append "..." to the end of the data *iff* it was truncated in infof() Closes #7357
show more ...
|
#
bfa03091 |
| 18-Jun-2021 |
Daniel Stenberg |
gnutls: set the preferred TLS versions in correct order Regression since 781864bedbc57 (curl 7.77.0) Reported-by: civodul on github Assisted-by: Nikos Mavrogiannopoulos Fixe
gnutls: set the preferred TLS versions in correct order Regression since 781864bedbc57 (curl 7.77.0) Reported-by: civodul on github Assisted-by: Nikos Mavrogiannopoulos Fixes #7277 Closes #7278
show more ...
|
#
b249592d |
| 18-May-2021 |
Michael Kaufmann |
ssl: read pending close notify alert before closing the connection This avoids a TCP reset (RST) if the server initiates a connection shutdown by sending an SSL close notify alert and th
ssl: read pending close notify alert before closing the connection This avoids a TCP reset (RST) if the server initiates a connection shutdown by sending an SSL close notify alert and then closes the TCP connection. For SSL connections, usually the server announces that it will close the connection with an SSL close notify alert. curl should read this alert. If curl does not read this alert and just closes the connection, some operating systems close the TCP connection with an RST flag. See RFC 1122, section 4.2.2.13 If curl reads the close notify alert, the TCP connection is closed normally with a FIN flag. The new code is similar to existing code in the "SSL shutdown" function: try to read an alert (non-blocking), and ignore any read errors. Closes #7095
show more ...
|