cloudflare / cloudflare/quiche
BoringSSL ML-KEM defaults support
- Dominant language
- Rust
- Stars
- 11.8k
- Forks
- 1.1k
- Avg merge
- 3d 7h
- Merged PRs (30d)
- 16
Description
BoringSSL changed its defaults in its commit https://github.com/google/boringssl/commit/e748facbaa5ef6e53aa51c68328e2b2245325e72 to now enable `SSL_GROUP_X25519_MLKEM768` by default.
This however breaks Quiche's test suite.
As a stopgap, one can of course just disable ML-KEM in the test suite, e.g. by inserting
```
let curves = std::ffi::CString::new("X25519:P-256:P-384").unwrap();
bssl_sys::SSL_CTX_set1_curves_list(ctx_raw as *mut _, curves.as_ptr());
```
at https://github.com/cloudflare/quiche/blob/master/quiche/src/tls/mod.rs#L141, conditionally for tests only - but that's not super great, as it means the test suite runs without PQC coverage.
The problem is just that when changing that default, all the byte lengths of the ClientHello in various tests change, making the change rather involved. I would however suspect that https://github.com/cloudflare/quiche/commit/a6c4dffae95284c7fc73f446cacc7c782daf89cd might be changing the exact set of places that need updating from this?
Contributor guide
Research direction
Start in quiche/src/tls/mod.rs around line 141 and inspect the tests whose ClientHello byte lengths change with BoringSSL's default SSL_GROUP_X25519_MLKEM768. Compare the referenced quiche commit to identify the affected locations, then run the test suite. Done means the tests pass while ML-KEM remains enabled, preserving post-quantum coverage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- networking, security, testing
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100