Repository navigation
harden downgrade path for ECH - #11870
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Signature-algorithm selection can still trigger a credential-dependent abort before the required empty-certificate response.
1 open issue
What changed in this PR
This PR hardens wolfSSL’s Encrypted Client Hello (ECH) rejection handling when a server negotiates TLS 1.2.
Changes:
- Returns an ECH-required error instead of reporting handshake success.
- Suppresses client certificates and session persistence after ECH rejection.
- Adds a downgrade regression test covering rejection, certificates, and session storage.
| File | Description |
|---|---|
| tests/api.c | Adds and registers the ECH-to-TLS-1.2 downgrade test. |
| src/ssl_api_hs.c | Aborts rejected ECH connections before reporting success. |
| src/internal.c | Suppresses certificates, session caching, and ticket storage after rejection. |
Review effort: Balanced
597de2a to
740acd7
Compare
Frauschi
left a comment
There was a problem hiding this comment.
Thanks, the TLS 1.2 downgrade now aborts with ech_required as it should. I built it with --enable-all --enable-ech, the new tests pass, and dropping the new check in wolfSSL_connect makes test_wolfSSL_Tls13_ECH_tls12_downgrade fail, so the fix is covered. The main question is the TLS 1.2 session case below; the rest are smaller.
4ae0f41 to
d212600
Compare
|
Jenkins retest this please. |
|
tests good with multi-test with |

Description
Clients using Encrypted Client Hello do not properly handle rejection via a downgrade to TLS1.2.
zd#22661
Testing
Added test with an ECH client that gets downgraded to TLS1.2. This also tests:
A client configured for TLS1.2 with ECH fails outright, instead of later
Harden resumption handling for TLS1.2
Checklist