fix(deps): migrate to ml-kem 0.3 (supersedes #133) #147
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
femboy/yip!147
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/deps-ml-kem-0.3"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Migrates the workspace to ml-kem 0.3 (post-quantum KEM in the REALITY hybrid handshake). Supersedes Renovate #133 — close #133.
ml-kem 0.3 removed
KemCore/EncodedSizeUser(now the externalkem::Kemtrait +Key/KeyExport/TryKeyInit), renamedgenerate→generate_keypair_from_rng,as_bytes→to_bytes, and made encapsulate/decapsulate infallible. Also bumpsrand_coreto 0.10 in yip-utls's two RNG bridges (ml-kem 0.3's requirement); x25519-dalek keeps its own transitive rand_core 0.6, no split conflict.Wire-compat: byte-identical (empirically proven)
Rather than trusting the changelog, the migration built two probe binaries pinned to ml-kem
=0.2.3and=0.3.2, drove both through an identical deterministic RNG, and compared:The hybrid key-share shape tests and the JA4-lock test (
crafted_hello_matches_chrome150_ja4) pass, so the ClientHello fingerprint is unaffected.One behavior change (hardening, not a regression)
ml-kem 0.3 validates the client's encapsulation key on decode; a malformed/non-canonical ek is now rejected (
Error::Protocol("client ML-KEM ek failed validation")) instead of silently accepted. This is stricter — matches real ML-KEM-strict servers — and is the only semantic delta. Flagged for your awareness.cargo test --workspaceall green; fmt + clippy clean.