Add X25519MLKEM768 post-quantum hybrid key exchange
Implement the X25519MLKEM768 hybrid key exchange group per draft-ietf-tls-ecdhe-mlkem-00, combining ML-KEM-768 (FIPS 203) with X25519 for post-quantum/classical hybrid key agreement. - New mlkem feature gating X25519MLKEM768 via boring's mlkem module - fips feature now implies mlkem so PQ is always available in FIPS mode - X25519MLKEM768 is the preferred (first) group in both FIPS and non-FIPS configurations when mlkem is enabled - Uses boring::mlkem for ML-KEM-768 and direct X25519 FFI for the classical component (no SPKI overhead) - Overrides start_and_complete() for server-side KEM encapsulation - Wire format: ML-KEM component first in all encodings (client share 1216 bytes, server share 1120 bytes, shared secret 64 bytes) - TLS 1.3 only (usable_for_version rejects TLS 1.2) - Unit tests: hybrid round-trip, invalid share rejection, version and FIPS flag checks - E2E tests: self-to-self PQ TLS handshake, FIPS group assertions - Cloudflare interop tests (ignored): verify kex=X25519MLKEM768 via /cdn-cgi/trace for TLS 1.3, verify classical fallback for TLS 1.2 - Update README with PQ section, feature docs, and FIPS KX updates
This commit is contained in:
parent
271acbb315
commit
fafbf296b1
7 changed files with 684 additions and 15 deletions
38
.github/workflows/ci.yml
vendored
38
.github/workflows/ci.yml
vendored
|
|
@ -63,6 +63,44 @@ jobs:
|
|||
- name: Build (logging,tls12)
|
||||
run: make build FEATURES="logging,tls12"
|
||||
|
||||
test-mlkem:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install -y cmake clang
|
||||
- name: Lint (mlkem)
|
||||
run: make lint FEATURES="mlkem"
|
||||
- name: Test (mlkem)
|
||||
run: make test FEATURES="mlkem"
|
||||
- name: Build (mlkem)
|
||||
run: make build FEATURES="mlkem"
|
||||
|
||||
test-mlkem-tls12:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install -y cmake clang
|
||||
- name: Lint (mlkem,tls12)
|
||||
run: make lint FEATURES="mlkem,tls12"
|
||||
- name: Test (mlkem,tls12)
|
||||
run: make test FEATURES="mlkem,tls12"
|
||||
- name: Build (mlkem,tls12)
|
||||
run: make build FEATURES="mlkem,tls12"
|
||||
|
||||
test-fips:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install -y cmake clang
|
||||
- name: Test (fips)
|
||||
run: cargo test -p boring-rustls-provider --all-targets --features fips
|
||||
|
||||
check-fips:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue