f7f550e354
1. RatchetTree trailing blank stripping (RFC 9420 Section 7.8): encodeTls now omits trailing blank nodes, matching OpenMLS/mls-rs wire format. Reduces serialized tree size. 2. X.509 credential support (RFC 9420 Section 5.3): Added Credential.X509 class with cert chain (List<ByteArray>). decodeTls now handles credential type 2 instead of throwing. Full encoding/decoding round-trip supported. 3. ReInit proposal (RFC 9420 Section 12.1.5): Added Proposal.ReInit with groupId, version, cipherSuite, extensions. Full TLS encoding/decoding for interop with implementations that use group reinitialization. 4. ExternalInit proposal (RFC 9420 Section 12.1.6): Added Proposal.ExternalInit with kemOutput field. Enables external commit flow for non-members joining groups. 5. Membership MAC verification (RFC 9420 Section 6.2): Added verifyMembershipTag() to MlsGroup for PublicMessage authentication using HMAC(membership_key, AuthenticatedContent). All 120 MLS tests pass (41 interop + 79 unit), 0 failures. https://claude.ai/code/session_01NocQDWj2Y92FugjfgazzL3