vector-im-hydrogen-web/src/matrix/e2ee
Bruno Windels c747d5f228 rename deviceTrackingStatus to keysTrackingStatus
as this field also reflects the tracking status of the cross-signing
keys for a given user.
2023-03-03 11:34:09 +01:00
..
megolm fix import paths after TS conversion 2023-03-02 17:12:56 +01:00
olm fix import paths after TS conversion 2023-03-02 17:12:56 +01:00
Account.js implement signing users and other devices 2023-03-02 15:02:42 +01:00
attachment.js move base64/58 encoding into platform 2021-02-12 16:01:54 +01:00
common.ts implement signing users and other devices 2023-03-02 15:02:42 +01:00
DecryptionResult.ts Store device keys in format needed to sign/verify, convert to TS 2023-02-28 17:25:01 +01:00
Dehydration.js Fix imports 2021-12-03 11:36:49 +05:30
DeviceTracker.ts rename deviceTrackingStatus to keysTrackingStatus 2023-03-03 11:34:09 +01:00
OlmWorker.js provide random value for IE11 2020-11-10 18:31:18 +01:00
README.md fetch and verify keys on olm call signalling message 2022-06-01 15:29:24 +02:00
RoomEncryption.js fix import paths after TS conversion 2023-03-02 17:12:56 +01:00

Integratation within the sync lifetime cycle

session.prepareSync

Decrypt any device messages, and turn them into RoomKey instances. Any rooms that are not in the sync response but for which we receive keys will be included in the rooms to sync.

Runs before any room.prepareSync, so the new room keys can be passed to each room prepareSync to use in decryption.

room.prepareSync

The session can start its own read/write transactions here, rooms only read from a shared transaction

- rooms (with shared read txn)
    - megolm decryption read using any new keys decrypted by the session.

room.afterPrepareSync

- rooms    
    - megolm async decryption   
        - dispatch to worker

room.writeSync

- rooms (with shared readwrite txn)
    - megolm decryption write, yielding decrypted events
    - use decrypted events to write room summary

session.writeSync

  • writes any room keys that were received

room.afterSync

- rooms
    - emit changes

room.afterSyncCompleted

- session
    - e2ee account
        - generate more otks if needed
        - upload new otks if needed or device keys if not uploaded before
    - device message handler:
        - fetch keys we don't know about yet for (call) to_device messages identity
        - pass signalling messages to call handler
- rooms
    - share new room keys if needed