* Element-R: pass pickleKey in as raw key for indexeddb encryption
Currently, we pass the `pickleKey` to the rust library for use as a passphrase
for encrypting its crypto store. The Rust libary then passes that passphrase
through 200000 rounds of PBKDF2 to generate an encryption key, which is
(deliberately) slow.
However, the pickleKey is actually 32 bytes of random data (base64-encoded). By
passing the raw key into the rust library, we can therefore save the PBKDF
operation.
Backwards-compatibility with existing sessions is maintained, because if the
rust library discovers that the store was previously encrypted with a key based
on a PBKDF, it will re-base64 and PBKDF the key we provide, thus reconstructing
the right key.
* Update src/Lifecycle.ts
Co-authored-by: Florian Duros <florianduros@element.io>
* Lifecycle-test: clean up test setup
Rely less on the unit under test for setting up the test preconditions -- not
least because we don't really want to fire up matrix clients and the like
during test setup.
* Factor out "encryptPickleKey" method
For a start it makes it easier to grok what's going on, but also I went to use
this in a test
* Improve tests for `Lifecycle.restoreFromLocalStorage`
---------
Co-authored-by: Florian Duros <florianduros@element.io>
* Use new tooltip in `RoomTopic.tsx`
* Use new tooltip in `MLocationBody.tsx`
* Fix room topic
* Update location snapshot
* Use new tooltip in `AppPermission.tsx`
* Remove `TooltipTarget`
* Add tests for `RoomTopic`
* This assertion is unnecessary since the receiver accepts the original type of the expression
* Implement `client.getDomain()` null check
* Update comment since `AutoDiscovery.findClientConfig` may still throw
* Refactor some logic into common AvatarSetting component
We duplicated some of the logic of setting avatars between profiles &
rooms. This pulls some of that logic into the AvatarSetting component
and hopefully make things a little simpler.
* Unsed import
* Convert JS based hover to CSS
* Remove unnecessary container
* Test avatar-as-file path
* Test file upload
* Unused imports
* Add test for RoomProfileSettings
* Test removing room avatar
* Move upload control CSS too
* Remove commented code
Co-authored-by: Florian Duros <florianduros@element.io>
* Prettier
* Coments & move style to inline as per PR suggestion
* Better test names
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Fix test
Upload input doesn't have that class anymore
---------
Co-authored-by: Florian Duros <florianduros@element.io>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* persist previously-reported event IDs as a bloom filter
* Pin to older `@types/seedrandom`
... to work around https://github.com/Callidon/bloom-filters/issues/72
* Inline `DecryptionFailureTracker.addDecryptionFailure`
* Remove redundant TRACK_INTERVAL
There really doesn't seem to be much point to this batching up of decryption
failure reports. We still call the analytics callback the same number of times.
* Rename `trackedEvents` to `reportedEvents`
* Fix incorrect documentation on `visibleEvents`
This *does* overlap with `failures`.
* Combine `addFailure` and `reportFailure`
* Calculate client properties before starting reporting
* Clear localstorage after each test
... otherwise they interfere
* Remove redundant comment
* Ensure that reports are cleared on a logout/login cycle
* make private const private and const
---------
Co-authored-by: Richard van der Hoff <richard@matrix.org>
* Inline `DecryptionFailureTracker.addDecryptionFailure`
* Remove redundant TRACK_INTERVAL
There really doesn't seem to be much point to this batching up of decryption
failure reports. We still call the analytics callback the same number of times.
* Rename `trackedEvents` to `reportedEvents`
* Fix incorrect documentation on `visibleEvents`
This *does* overlap with `failures`.
* Combine `addFailure` and `reportFailure`
* Calculate client properties before starting reporting
* report time to decrypt an event if it's slow
* add more stats
* fix some tests
* keep original timestamp, and report non-visible decryption failures
* add statistic for whether the user trusts their own device
* revert local playwright docker changes
* apply changes from review
* also remove logout event handler on logout
* apply changes from review
* make eventDecrypted callback private
* Ensure we do not fire the verification mismatch modal multiple times
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add rust crypto test for mismatch emoji cancellation
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove legacy `threepidCreds` field
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove `user` field legacy UIA fallback
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update imports
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use `*` for italics as it doesn't break when used mid-word
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Terminate playback worker on destroy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Reuse single PlaybackWorker between all Playbacks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* ...
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix `element-desktop-ssoid being` included in OIDC Authorization call
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Split out oidc callback url into its own method
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Allow explicit configuration of OIDC dynamic registration metadata
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix unexpected hash on oidc callback url
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* undefined > []
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix `element-desktop-ssoid being` included in OIDC Authorization call
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Split out oidc callback url into its own method
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix unexpected hash on oidc callback url
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update src/BasePlatform.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* remove old pre-join UTD logic
and add a playwright test for new pre-join UTD
* remove variable that isn't used any more
* add missing synapse template
* remove unused variable (again) and run prettier
* add test that we can jump to an event before our latest join membership event
* modify default template instead of creating a new template
* Collapse UserSettings tabs to just icons on narrow screens
* Add screenshot test
* Better comment formatting.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Comment the media query
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Fix beta notifications reconciliation for `.m.rule.is_room_mention`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Same fix for `.m.rule.is_user_mention`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Store id_token rather than just id_token_claims
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Pass id_token via `id_token_hint` on `Manage Account` interaction
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>