feat: integrate de-mls leaf-index member-id rework in group_v2 - #225
Open
seemenkina wants to merge 4 commits into
Open
feat: integrate de-mls leaf-index member-id rework in group_v2#225seemenkina wants to merge 4 commits into
seemenkina wants to merge 4 commits into
Conversation
jazzz
approved these changes
Aug 28, 2026
| let members_to_add = fetch_key_packages(service_ctx, members)?; | ||
| let existing: HashSet<Vec<u8>> = self.conversation.members()?.into_iter().collect(); | ||
| // Identify current members by their signature key — the authenticated | ||
| // per-device leaf identity — so a device already seated is skipped.F |
Collaborator
There was a problem hiding this comment.
Suggested change
| // per-device leaf identity — so a device already seated is skipped.F | |
| // per-device leaf identity — so a device already seated is skipped. |
| base64 = "0.22" | ||
| chat-proto = { workspace = true } | ||
| de-mls = { git = "https://github.com/vacp2p/de-mls", rev = "5cfce1b97305363466c0e68668fcd85cad4b8996" } | ||
| de-mls = { git = "https://github.com/vacp2p/de-mls", branch = "feat/member-id-leaf-index" } |
Collaborator
There was a problem hiding this comment.
[Boulder] Non-issue, but flagging this as a merge condition. Needs a rev, rather than a feature branch
Contributor
Author
There was a problem hiding this comment.
pin on particular commit in main
de-mls now stamps the joiner's signature key on the welcome instead of its credential, so a credential-keyed pending map missed every lookup and no invitee received a welcome.
seemenkina
force-pushed
the
feat/de-mls-member-id-rework
branch
from
August 28, 2026 18:26
6f4c915 to
105b028
Compare
jazzz
approved these changes
Aug 28, 2026
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.
Bumps de-mls to the leaf-index member-id rework and reworks how GroupV2 talks to it.
Related de-mls PR: vacp2p/de-mls#145
de-mls now speaks
Memberout and an opaqueMemberIdhandle in — raw member-id bytes no longer cross the boundary. The member list (members()) and message attribution read off theMemberde-mls hands back, and the chat sender now comes from the MLS-authenticatedsender: MemberonConversationMessagerather than a wire-supplied field, closing the sender-spoofing gap.Construction follows the new surface:
create/joinno longer take amember_id(de-mls derives it from the credential), andadd_membertakes only the key package — de-mls reads the joiner credential from it.The "already a member" check on add now matches the authenticated signature key — the per-device leaf identity — not the self-asserted credential. A local member directory (
MemberId→ signer id), seeded frommembers_view()and kept current fromMembersChanged, lets libchat name the opaque handles de-mls returns.Welcome routing is unchanged: it still correlates the joiner credential de-mls stamps on the welcome to the invitee's transport address.