fix(matrix): prevent double bootstrapCrossSigning reset in forced reset - #95720
Conversation
bb2b62c to
577ff15
Compare
…set-cross-signing
…enting double reset
…vent double reset
577ff15 to
afa7684
Compare
|
Land-ready maintainer verification:
Known gaps: matrix-js-sdk does not expose an atomic/resumable reset API, so the deliberate product contract is to require the active recovery key before destructive reset. |
|
Merged via squash.
Thanks @vincentkoc! |
…et (openclaw#95720) Merged via squash. Prepared head SHA: afa7684 Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com> Co-authored-by: steipete <58493+steipete@users.noreply.github.com> Reviewed-by: @steipete
What Problem This Solves
Fixes #78396.
This restores the reviewed Matrix E2EE fix from #93328 after the contributor fork branch became unavailable during maintainer sync.
--force-reset-cross-signingmust not rotate cross-signing, fail on stale/broken SSSS, recreate secret storage, and then rotate again.Why This Change Was Made
Forced reset now fails closed unless the active Matrix secret-storage recovery key can authenticate the current SSSS key before destructive cross-signing reset work starts. The branch preserves the original reviewed diff and commit authors from #93328, rebased onto current
main.User Impact
Matrix operators get a guarded forced-reset path that avoids destroying E2EE state when the active recovery material cannot unlock secret storage. Docs and Matrix QA messaging explain the active recovery-key requirement.
Evidence
tbx_01kvq31d9z1hc09q946wr8nj99:node scripts/run-vitest.mjs extensions/matrix/src/matrix/sdk/crypto-bootstrap.test.ts extensions/matrix/src/matrix/sdk/recovery-key-store.test.ts extensions/matrix/src/matrix/sdk.test.tspassed, 3 files / 121 tests.