Repository navigation
fix: upgrade both HPKE providers to libcrux-kem 0.0.10 - #4465
Conversation
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — The PR updates production HPKE/libcrux implementations, affecting key generation and Welcome encryption/decryption compatibility. Existing tests cover legacy ciphertext opening and upgraded-provider round trips, but reverse interoperability with the old provider is only documented in an external harness rather than enforced in CI, so the cryptographic wire-compatibility change needs human review. You can add or adjust custom eligibility rules. Learn more. |
| WrapperAlgorithm::XWingMLKEM768Draft6, | ||
| WELCOME_HPKE_LABEL, | ||
| )?; | ||
| let (payload, secondary) = unwrap_payload_hpke( |
There was a problem hiding this comment.
[P1] Keep reverse legacy interoperability covered in CI
This only round-trips ciphertext with the upgraded provider, so it passes even if a new XWing encapsulation can no longer be opened by clients still on libcrux-kem 0.0.9. Those clients must decrypt Welcomes sent under their persisted keys. Please retain an automated reverse-direction compatibility check (for example, a known-answer output validated by the old provider); the documented standalone harness is not run in CI.
Posted via Macroscope — Code Quality
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## self-hosted #4465 +/- ##
============================================
Coverage 87.86% 87.86%
============================================
Files 539 539
Lines 102659 102698 +39
============================================
+ Hits 90201 90237 +36
- Misses 12458 12461 +3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Malformed hybrid keys and short encapsulation seeds can panic in
libcrux-kem 0.0.9. Upgrade both HPKE provider chains tolibcrux-kem 0.0.10and regenerate the lockfile and workspace-hack dependencies. The resolved graph contains no KEM 0.0.9.Keep HPKE 0.6.1 for the Welcome wrapper and HPKE 0.7.0 for OpenMLS. Keep the existing XWing
0x004Dcodepoint and public SDK APIs. The direct ECDH, HKDF, and AEAD provider dependencies retain their prior versions; the patched KEM brings its required newer dependencies.Provider changes:
Both provider PRs are merged. The pins use their immutable merge commits. The libcrux merge also fixes an unused package manifest that named a missing README; both complete Nix source-vendor derivations pass locally.
This replaces the two KEM exceptions proposed in #4464. The separate
RUSTSEC-2026-0329HMAC-DRBG exception remains because the pinned OpenMLS provider still requires its old version. No KEM advisory exception is added.Validation:
97862fa5fa: 46 checks pass, 0 fail, 12 are skipped, and none are running. This includes the full WASM test job.xmtp_mls_commontests pass, including three new tests with persisted old XWing keys and Welcome ciphertexts. All three new tests also pass under the WASM test runner.aarch64-apple-ios), and Android API 23 (aarch64-linux-android) Rust SDK checks pass. CI also passes iOS tests, Android SDK staging, Swift seam and consumer tests, the SDK façade tests, all Node/browser shards, and agent SDK tests.just lintand all four Cargo-Deny checks pass locally.The direct KEM entropy-failure test covers the new fallible RNG API. Provider construction still uses its existing OS-seeded ChaCha20 generator; this change does not alter that behavior.
The SDK façade CI job now uses shallow checkout. Its commands use the current source and index. Full-history fetch failed with a connection reset and stalled again on retry. Config lint and workflow fixtures pass.
The docs checkout keeps full commit history with
filter: blob:none. A real partial clone preserves the last-change commit and timestamp for all 64 docs files. Config lint and workflow fixtures pass. This avoids fetching old file contents after repeated checkout failures.