feat(session): Validate MLS commit proposals and group identities#26
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR introduces crucial validation steps for MLS commit proposals and group identities within the session management. It ensures compliance with the DAVE protocol specifications regarding commit structure and group member uniqueness.
Key Changes
validateCommitProposalRefsto enforce that MLS commits only contain references to previously cached proposals, rejecting any inline proposals as per DAVE protocol.md:314.rebuildEpochStateLockedto prevent the creation of an epoch state with duplicate user IDs, aligning with DAVE protocol.md:315.ErrInlineProposalInCommitandErrDuplicateGroupIdentity, to clearly signal these validation failures.commit_validation_test.goto cover both the acceptance of valid reference-based commits and the rejection of inline proposals and duplicate identities.Technical Impact
These validations significantly enhance the robustness and security of MLS session management. By strictly enforcing protocol rules for commit structures, I prevent malformed or non-compliant commits from altering the group state. The duplicate identity check ensures the integrity of group membership, preventing potential ambiguities or issues arising from multiple members sharing the same user ID. This makes the MLS session more resilient and compliant with DAVE specifications.
🧪 Test Plan & Evidence
Suggested Manual Verification
go test ./...and ensure all tests pass