Support verification (Est: 35, Cur: 34+2i)
-
Allow users to choose trust strategies
- Don't verify anything
- Must verify everything
- Like Element: if we previously verified a person, we must verify all their sessions
- Add Room::checkUnknownSessions() that determines whether there is Unseen sessions
- Change trust level in Client
-
Implement verification processes
-
Store verification processes in ClientModel
-
user id -> [device id -> <Metadata, Maybe VerificationProcess>]
Where
Metadata = <Status (requested, started, accepted), transaction id, method, timestamp> VerificationProcess = Variant <SASVerificationProcess> SASVerificationProcess = < hash(es), keyAgreementProtocol(s), messageAuthenticationCode(s), shortAuthenticationString = [decimal | emoji], ourKey, theirKey, initiator = [Us | Them], theirCommitment, >
-
-
Receive verification requests (and cancellation), and emit triggers
-
VerificationRequested
for m.key.verification.request -
VerificationStarted
with VerificationProcess data for m.key.verification.start -
VerificationAccepted
for m.key.verification.accept -
SASVerificationShouldDisplay
when ready to display SAS -
VerificationCancelled
for m.key.verification.cancel -
VerificationDone
after receiving m.key.verification.mac and passed mac verification
-
- Send verification requests
- Send verification responses
-
Store verification processes in ClientModel