621196b74f
Major interop fixes discovered by IETF test vectors: 1. VarInt migration: All MLS TLS struct serialization now uses QUIC-style VarInt encoding for opaque<V> and vector<V> fields, matching OpenMLS and mls-rs wire format. Added readVarInt(), readOpaqueVarInt(), readVectorVarInt() to TlsReader and putVectorVarInt() to TlsWriter. 2. SecretTree left/right derivation: Fixed tree secret splitting to use "left"/"right" as context strings per RFC 9420 Section 9, instead of byte(0)/byte(1). 3. LeafNode parent_hash: Added parent_hash<V> field for COMMIT source per RFC 9420 Section 7.2. The COMMIT case is NOT empty - it includes a parent_hash opaque field. 4. MLS-Exporter: Added ByteArray overload for raw byte labels (test vectors use non-UTF-8 label bytes). Test results: 32/41 passing (78%), up from 25/41 (61%). Newly passing: SecretTree (2), TreeValidation deserialization (1), TreeValidation resolution (1), TreeKem deserialization (1), Commit deserialization (1), RatchetTree deserialization (1). https://claude.ai/code/session_01NocQDWj2Y92FugjfgazzL3