Files
amethyst/quartz/src
Claude cb9aaa4117 feat: implement all P0 RFC 9420 compliance fixes for MlsGroup
Critical MLS protocol compliance fixes:

1. Transcript hash computation (RFC 9420 Section 8.2):
   - Added interimTranscriptHash field to MlsGroup
   - confirmed_transcript_hash updated after each commit
   - interim_transcript_hash computed from confirmation_tag
   - Both commit() and processCommit() maintain transcript hashes

2. Confirmation tag (RFC 9420 Section 6.1):
   - computeConfirmationTag() using HMAC(confirmation_key, confirmed_hash)
   - Used in buildWelcome GroupInfo
   - Interim hash computed from confirmation tag after each epoch

3. LeafNode signature verification (RFC 9420 Section 7.2):
   - verifyLeafNodeSignature() verifies signature over encodeTbs
   - Called in processCommit when receiving UpdatePath
   - Rejects commits with invalid LeafNode signatures

4. processCommit proposal ordering (RFC 9420 Section 12.4.2):
   - Proposals applied before UpdatePath processing
   - Matches the commit() ordering fix from earlier

5. Welcome ratchet tree (RFC 9420 Section 12.4.3):
   - buildWelcome serializes full ratchet tree in GroupInfo extensions
     (extension type 0x0001 = ratchet_tree)
   - processWelcome reconstructs tree from GroupInfo extensions
   - Finds joining member's leaf index by matching signature key

6. Welcome key derivation fix:
   - member_secret = Extract(joiner_secret, psk_secret)
   - welcome_secret = DeriveSecret(member_secret, "welcome")
   - epoch_secret derived from member_secret (not separate KeySchedule)
   - All 12 epoch sub-secrets computed directly

All 120 MLS tests pass (41 interop + 79 unit), 0 failures.

https://claude.ai/code/session_01NocQDWj2Y92FugjfgazzL3
2026-04-03 22:48:26 +00:00
..