Skip to content

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
Edited by tusooa