Files
amethyst/quartz
Claude 1bd5aa95e5 feat: confirmation tag verification, transcript hash, proposal refs, PSK, ReInit
1. Confirmation tag verification (RFC 9420 Section 6.1):
   processCommit now accepts optional confirmationTag parameter and
   verifies it against HMAC(confirmation_key, confirmed_transcript_hash).
   Rejects commits with invalid confirmation tags.

2. Proper ConfirmedTranscriptHashInput (RFC 9420 Section 8.2):
   buildConfirmedTranscriptHashInput() constructs the RFC-compliant
   structure: wire_format || FramedContent (group_id, epoch, sender,
   content_type, commit) || signature. Used in both commit() and
   processCommit() for consistent transcript hashing.

3. Proposal reference resolution (RFC 9420 Section 12.2):
   processCommit now resolves ProposalOrRef.Reference entries by
   computing RefHash("MLS 1.0 Proposal Reference", proposal_bytes)
   and matching against pending proposals. Previously skipped.

4. PSK semantic support (RFC 9420 Section 8.4):
   - Added pskStore (Map<String, ByteArray>) for PSK registration
   - registerPsk(pskId, psk) to store pre-shared keys
   - proposePsk() to create PSK proposals
   - computePskSecret() chains Extract over all PSK values
   - PSK secret integrated into KeySchedule.deriveEpochSecrets()

5. ReInit proposal flow (RFC 9420 Section 12.1.5):
   - proposeReInit() creates ReInit proposals with new group parameters
   - applyProposal sets reInitPending field
   - Application can check reInitPending to know when to create new group
   - Full TLS encoding/decoding already in place from earlier commit

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

https://claude.ai/code/session_01NocQDWj2Y92FugjfgazzL3
2026-04-04 00:30:45 +00:00
..
2026-04-01 15:45:46 -04:00