You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
E2E case 12 (design/module-map.md) is "A authorizes B over a verified channel (enrollment code plus safety-code check) → B generates hardware keys → A cross-signs B into the device directory → B joins each album's MLS group → B's library matches A's". The server leg (code, relay channel, close, MITM abort) is landed in capsule-e2e/tests/case_12_enrollment.rs (#409, PR #463). The client half has no seams in the tree:
Workspace keeps the user identity key private (capsule-core/src/lifecycle/mod.rs), so it cannot sign a directory that adds a second device; there is no Workspace::cross_sign_device(entry).
There is no safety-code derivation over the two devices' advertised keys anywhere in capsule-core (rg safety finds only prose).
Workspace::cross_sign_device(DeviceEntry) -> DeviceDirectory (bumps directory_version), a safety_code(a_keys, b_keys) -> String in crypto::keys, and the enrollment payload encoding, each unit-tested; then the client half of case 12 can land in capsule-e2e.
What
E2E case 12 (
design/module-map.md) is "A authorizes B over a verified channel (enrollment code plus safety-code check) → B generates hardware keys → A cross-signs B into the device directory → B joins each album's MLS group → B's library matches A's". The server leg (code, relay channel, close, MITM abort) is landed incapsule-e2e/tests/case_12_enrollment.rs(#409, PR #463). The client half has no seams in the tree:Workspacekeeps the user identity key private (capsule-core/src/lifecycle/mod.rs), so it cannot sign a directory that adds a second device; there is noWorkspace::cross_sign_device(entry).capsule-core(rg safetyfinds only prose).Fix shape
Workspace::cross_sign_device(DeviceEntry) -> DeviceDirectory(bumpsdirectory_version), asafety_code(a_keys, b_keys) -> Stringincrypto::keys, and the enrollment payload encoding, each unit-tested; then the client half of case 12 can land incapsule-e2e.