Skip to content

MLS: Commit cannot replace a member with Remove and Add when the KeyPackage keeps the signature key #2504

Closed

Description

@cipheraenys

On main (c314b9cdffa3958a0eff5344f8fdcdb0181ed830) a Commit cannot replace a member with a new KeyPackage that has the same signature key and credential, even when the proposal list removes that member.

With three members, the committer removes the third and adds a signed KeyPackage with the same signature key and credential but new init and leaf encryption keys. Group.commit throws Invalid proposal list, with Add before Remove and with Remove before Add.

RFC 9420 section 12.2 allows an Add for a client that is already in the group when the proposal list removes that client. validateNormalCachedProposals validates each Add against the parent tree, where the removed leaf is still present, and validateLeafNode rejects the repeated signature key.

This is not the single-member case from #2494.

https://www.rfc-editor.org/rfc/rfc9420.html#section-12.2

Activity

  1. changed the title [-]MLS: Commit cannot replace a member with Remove and Add when the new KeyPackage keeps its signature key[/-] [+]fix(mls): Commit cannot replace a member with Remove and Add when the new KeyPackage keeps its signature key[/+] on Oct 13, 2026
  2. changed the title [-]fix(mls): Commit cannot replace a member with Remove and Add when the new KeyPackage keeps its signature key[/-] [+]MLS: Commit cannot replace a member with Remove and Add when the new KeyPackage keeps its signature key[/+] on Oct 13, 2026
  3. added 6 commits that reference this issue on Oct 13, 2026
    73206c8
    9fc1acf
    155e8da
    c96caa8
    06d9ff3
    32da5bf
  4. changed the title [-]MLS: Commit cannot replace a member with Remove and Add when the new KeyPackage keeps its signature key[/-] [+]MLS: Commit cannot replace a member with Remove and Add when the KeyPackage keeps the signature key[/+] on Oct 13, 2026
  5. added 2 commits that reference this issue on Oct 13, 2026
    43b619c
    d906a20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions