element-web/test
Richard van der Hoff 0a01320fca
Element-R: pass pickleKey in as raw key for indexeddb encryption (#12543)
* 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>
2024-06-05 08:52:28 +00:00
..
@types Use server side relations for voice broadcasts (#9534) 2022-11-07 14:19:49 +00:00
__snapshots__ fix selector so maths support doesn't mangle divs (#12433) 2024-04-16 16:53:57 +00:00
accessibility Improve Forward Dialog a11y by switching to roving tab index interactions (#12306) 2024-03-08 14:45:15 +00:00
actions/handlers Move session manager out of beta (#10968) 2023-05-26 01:58:28 +00:00
audio Stop using deprecated methods, fields & exports (#12524) 2024-05-15 14:58:28 +00:00
autocomplete Add MatrixClientPeg::safeGet and use it in tests (#10985) 2023-06-05 18:12:23 +01:00
components Close the release announcement when a dialog is opened (#12559) 2024-05-29 07:22:50 +00:00
contexts OIDC: Persist details in session storage, create store (#11302) 2023-07-20 21:30:19 +00:00
dispatcher Remove flux dependency (#10313) 2023-03-08 14:19:05 +00:00
editor Use * for italics as it doesn't break when used mid-word (#12523) 2024-05-15 09:01:45 +00:00
events Add ESLint Jest (#10261) 2023-03-01 16:23:35 +01:00
hooks Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
i18n Use Intl for names of languages (#11427) 2023-08-22 14:07:16 +00:00
images Add support for Animated (A)PNG (#8158) 2022-03-28 09:38:54 +01:00
img
models Fix external guest access url for unencrypted rooms (#12345) 2024-03-28 12:25:00 +00:00
modules Replace SecurityCustomisations with CryptoSetupExtension (#12342) 2024-04-12 15:15:17 +00:00
notifications Apply prettier formatting 2022-12-12 12:24:14 +01:00
settings Add analytics to activity toggles (#12418) 2024-04-22 16:15:29 +00:00
setup Locallazy: Convert even more strings (#11679) 2023-10-02 11:43:00 +01:00
stores Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
test-utils Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
toasts Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
utils Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
voice-broadcast Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
widgets Add config to skip widget_build_url for DM rooms (#11044) 2023-06-06 14:07:51 +00:00
Avatar-test.ts Conform more of the code base to strict null checking (#10147) 2023-02-13 17:01:43 +00:00
ContentMessages-test.ts Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
createRoom-test.ts Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
DecryptionFailureTracker-test.ts Only report undecryptable events once (#12501) 2024-05-20 14:53:50 +00:00
DeviceListener-test.ts Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
email-test.ts Factor out basic email check (#10244) 2023-02-28 10:39:35 +01:00
globalSetup.ts Improve randomString mock for better snapshots (#11375) 2023-08-09 09:39:48 +01:00
HtmlUtils-test.tsx fix selector so maths support doesn't mangle divs (#12433) 2024-04-16 16:53:57 +00:00
Image-test.ts Step 8.1: Remove skinning setup from all tests 2022-03-28 14:02:31 -06:00
KeyBindingsManager-test.ts Apply prettier formatting 2022-12-12 12:24:14 +01:00
languageHandler-test.tsx Migrate more strings to translation keys (#11694) 2023-10-03 19:17:26 +01:00
LegacyCallHandler-test.ts Adept KnownMembership imports for new location in types 2024-03-18 14:43:08 +00:00
Lifecycle-test.ts Element-R: pass pickleKey in as raw key for indexeddb encryption (#12543) 2024-06-05 08:52:28 +00:00
linkify-matrix-test.ts Fix clicking MXID in timeline going to matrix.to (#11263) 2023-07-14 10:55:55 +00:00
Markdown-test.ts Apply prettier formatting 2022-12-12 12:24:14 +01:00
MatrixClientPeg-test.ts Element-R: pass pickleKey in as raw key for indexeddb encryption (#12543) 2024-06-05 08:52:28 +00:00
MediaDeviceHandler-test.ts Add MatrixClientPeg::safeGet and use it in tests (#10985) 2023-06-05 18:12:23 +01:00
Notifier-test.ts Add ringing for matrixRTC (#11870) 2023-11-21 17:12:08 +00:00
PosthogAnalytics-test.ts Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
predictableRandom.ts GYU: Account Notification Settings (#11008) 2023-06-29 15:46:31 +00:00
PreferredRoomVersions-test.ts Allow creating knock rooms (#11182) 2023-07-10 08:01:03 +00:00
Reply-test.ts Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
RoomNotifs-test.ts Adept KnownMembership imports for new location in types 2024-03-18 14:43:08 +00:00
Rooms-test.ts Pass around MatrixClients instead of using MatrixClientPeg (#10984) 2023-06-01 14:43:24 +01:00
ScalarAuthClient-test.ts Add ESLint Jest (#10261) 2023-03-01 16:23:35 +01:00
SdkConfig-test.ts Make existing and new issue URLs configurable (#10710) 2023-04-26 09:36:00 +00:00
SecurityManager-test.ts Set up key backup using non-deprecated APIs (2nd take) (#12098) 2024-01-10 10:34:03 +00:00
setupTests.ts Fix flaky jest tests (#12486) 2024-05-02 14:53:35 +00:00
SlashCommands-test.tsx Adept KnownMembership imports for new location in types 2024-03-18 14:43:08 +00:00
SlidingSyncManager-test.ts Fix well-known lookup for sliding sync labs check (#12519) 2024-05-14 12:40:10 +00:00
slowReporter.js Apply prettier formatting 2022-12-12 12:24:14 +01:00
submit-rageshake-test.ts Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
Terms-test.tsx Pass around MatrixClients instead of using MatrixClientPeg (#10984) 2023-06-01 14:43:24 +01:00
TestSdkContext.ts Add voice broadcast playback pip (#9603) 2022-11-24 09:08:41 +01:00
TextForEvent-test.ts Avoid using deprecated exports, fields, and duplicate code (#12555) 2024-05-28 08:41:20 +01:00
theme-test.ts Enable custom themes to theme Compound (#12240) 2024-02-13 14:07:58 +00:00
Unread-test.ts Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
UserActivity-test.ts Replace sinon fake timers with jest timers (#11275) 2023-07-17 12:29:51 +00:00
useTopic-test.tsx Switch to importing models/Room from main js-sdk export (#11361) 2023-08-04 07:36:16 +00:00
WorkerManager-test.ts Load web workers in a way that Webpack 5 can bundle them 2023-11-11 16:03:08 +01:00