Skip to content

[Prep] PoC for "Sign in with Element Classic" #3073

@manuroe

Description

@manuroe

Description

This demo is in the context of helping users to migrate from Element Classic to Element X. We want the process to be as smooth and as frictionless as possible.

The two apps being on the same phone, we do not want to ask the user in EX to verify their "device". Also, asking them to log in on EX is a bit annoying.

On the other hand, "Sign in with QR code" is super easy to use to connect from a new device. Since last week, EXA can display a QR code so that another Matrix client can easily sign in.

The question to answer: Can we reuse the same underneath mechanism of QR code between Element Classic and Element X so that EX can sign in with Element Classic?
There will be no QR code displayed or scanned by any app. The QR code data will be directly shared between the apps using OS secured channels for apps in the same group.

It means that Element Classic will have to embed a bit more of the Rust SDK. Its crypto crate currently used by Element classic is not enough to support QR code data and exchange. We are fine to embed to whole Rust SDK.

Leads

Tech: @bmarty
Design: @bmarty (it is a PoC to validate the tech of this app migration option)

Acceptance criteria

For users on servers where "Sign with QR code" is possible:

  • if Element Classic is already on the device and already logged in, EX offers a "Sign in with Element Classic" button
  • If the user taps on the "Sign in with Element Classic" button,
    • the user is automatically logged in
    • the new EX device is verified
  • the user is still connected on Element Classic

Questions

  • Security: do we need extra user interaction steps in Element Classic to validate the authentication request?

Dependencies

  • None

Out of scope

  • Servers not ready for "Sign with QR code". We will explore them later if needed.
  • A polished implementation and UX. We want to check what is technically feasible. At this end of the PoC, we will discuss with product and design to build the production ready solution.

Sub-issue

Rust

Security

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions