Skip to content

Pq mls ciphersuites - #110

Open
emil-wire wants to merge 23 commits into
wire/stablefrom
pq-mls-ciphersuites
Open

emil-wire wants to merge 23 commits into
wire/stablefrom
pq-mls-ciphersuites

Conversation

@emil-wire

@emil-wire emil-wire commented Jul 15, 2026

Copy link
Copy Markdown

Adds the eleven post-quantum cipher suites from draft-ietf-mls-pq-ciphersuites-06, numbered 0xF001 to 0xF00B.

All eleven use HKDF-SHA256 or HKDF-SHA384, both for HPKE and for the MLS key schedule. SHA-3 is used only inside ML-KEM and the hybrid combiner, which live in the hpke crate.

New key exchanges, all from hpke 0.14.1:

  • X-Wing (ML-KEM-768 with X25519)
  • ML-KEM-768 with P-256
  • ML-KEM-1024 with P-384
  • ML-KEM-768 on its own
  • ML-KEM-1024 on its own

New signature schemes from ml-dsa 0.1.1: ML-DSA-44, 65 and 87. These are plain FIPS-204 with an empty context. The private key is stored as its 32-byte seed.

The numbers are placeholders. RFC 9420 keeps 0xF000 to 0xFFFF for private use and IANA has assigned nothing yet, so these suites only work against another build of this branch.

Tests: openmls/tests/test_pq_lifecycle.rs takes all eleven suites through a whole group. Create it, add a member, commit, send a message, remove the member. Two of the suites also check that a message from the wrong epoch is rejected and that a removed member can no longer read. The tests in openmls_rust_crypto and openmls_basic_credential cover the provider and the ML-DSA key format.

@emil-wire
emil-wire force-pushed the pq-mls-ciphersuites branch 2 times, most recently from 82c21de to e2b60c6 Compare July 22, 2026 09:25
@emil-wire
emil-wire marked this pull request as ready for review September 4, 2026 13:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant