Bruno Windels
c7370d7b01
Use continue in for loop rather than return
...
this was running in a Promise.all(array.map)) closure before
2020-09-21 14:11:28 +02:00
Bruno Windels
2c6a3a7ce7
fix afterSyncCompleted not being run after a sync error occurs
...
the error was not cleared when calling start again.
Also we should better look at the sync status to decide whether to run
afterSyncCompleted.
This prevented the room keys from being applied once you
had a connection error or other error at some point
since you started the app.
2020-09-21 13:55:35 +02:00
Bruno Windels
8cf29e344b
don't send access token on /versions
...
as it's not a good idea, and some CORS configs might not be happy with
an Authorization header on that path
2020-09-18 18:13:20 +02:00
Bruno Windels
1d33ab20a5
fix decrypted tiles not corresponding to a tile
2020-09-18 13:36:16 +02:00
Bruno Windels
4d604f7357
log all sync errors
2020-09-18 13:11:18 +02:00
Bruno Windels
3704de1a26
more dispose
2020-09-18 13:11:10 +02:00
Bruno Windels
da780d0aa2
delay backup 10s if missing session event came from sync
2020-09-18 13:11:02 +02:00
Bruno Windels
3aead4eae2
createEnum does not take an array
2020-09-18 13:08:35 +02:00
Bruno Windels
ed913ca24b
add dispose to room encryption
2020-09-18 13:08:18 +02:00
Bruno Windels
6c46cc98de
be more specific in error message
2020-09-18 12:12:52 +02:00
Bruno Windels
2de406afa0
log secret storage error as well
2020-09-18 12:12:19 +02:00
Bruno Windels
cb32f4201e
note for future cleanup
2020-09-18 12:12:12 +02:00
Bruno Windels
9fd39ab57f
aes-js doesn't work with ArrayBuffers
2020-09-18 12:04:48 +02:00
Bruno Windels
36b56132b0
add TextEncoder/Decoder polyfill to legacy bundle
2020-09-18 12:04:22 +02:00
Bruno Windels
6375574a56
show error
2020-09-17 18:59:40 +02:00
Bruno Windels
f58a3ee975
use olm from param
2020-09-17 18:56:02 +02:00
Bruno Windels
7d6fcfafa8
pass olm, better naming, don't reuse var
2020-09-17 18:55:39 +02:00
Bruno Windels
5b45c00322
switch to security key
2020-09-17 18:55:28 +02:00
Bruno Windels
ceac6008bc
fix import
2020-09-17 18:55:09 +02:00
Bruno Windels
fe5b732c97
cleanup, better copy text
2020-09-17 18:54:55 +02:00
Bruno Windels
494c5cbcf0
notify UI when we need session backup
2020-09-17 18:00:00 +02:00
Bruno Windels
06ccd74680
this should be read-write, oops
2020-09-17 17:59:35 +02:00
Bruno Windels
1b8e481559
keys from backup need to be imported with import_session, not create
2020-09-17 17:59:02 +02:00
Bruno Windels
915925d6ee
don't throw when trying to restore session from backup, check sender key
2020-09-17 17:57:52 +02:00
Bruno Windels
a205ae8841
fixes
2020-09-17 17:57:12 +02:00
Bruno Windels
5752cca69c
go back to bs58 and use other base64 decoder
...
as base-x isn't meant for base64
2020-09-17 17:56:05 +02:00
Bruno Windels
9d622434fb
integrate session backup with session class
2020-09-17 15:58:46 +02:00
Bruno Windels
3cebd17cbe
adjust paths
2020-09-17 15:17:46 +02:00
Bruno Windels
c9d8d40242
move ssss out of e2ee dir as not really e2ee related
2020-09-17 15:17:00 +02:00
Bruno Windels
33aa475e18
add function to create key from either passphrase or recovery key
2020-09-17 15:16:01 +02:00
Bruno Windels
7f97c540fb
obsolete comment, this is already the case
2020-09-17 14:20:42 +02:00
Bruno Windels
092547bfc8
renaming
2020-09-17 14:20:36 +02:00
Bruno Windels
17fc249fa8
integrate session backup with room encryption and megolm decryption
2020-09-17 14:20:15 +02:00
Bruno Windels
3941af93d2
more impl of SessionBackup
2020-09-17 14:19:57 +02:00
Bruno Windels
fff8308259
first draft of SessionBackup
2020-09-17 12:34:39 +02:00
Bruno Windels
1a105d391b
cleanup: rename session name to hydrogen as well
...
as we'll need people to resync because of account data as well
2020-09-17 12:34:10 +02:00
Bruno Windels
b7401a148c
some ssss cleanup
2020-09-17 12:33:57 +02:00
Bruno Windels
8204e942d9
first draft of reading a ssss secret
2020-09-17 11:39:40 +02:00
Bruno Windels
c44ab3e55e
derive ssss key from recovery key
2020-09-17 11:39:25 +02:00
Bruno Windels
7c4c266fe0
derive ssss key from passphrase
2020-09-17 11:39:07 +02:00
Bruno Windels
45c62eb0e5
common types and storage for ssss
2020-09-17 11:38:53 +02:00
Bruno Windels
7412b3aae8
forgot to commit account data store
2020-09-17 11:38:44 +02:00
Bruno Windels
4ec0e67384
use base-x to support both base64 and base58
2020-09-17 11:36:54 +02:00
Bruno Windels
abfde76e24
store account data in storage
...
needs a resync, need to think how to handle this
2020-09-17 10:39:51 +02:00
Bruno Windels
00eade1c16
add crypto driver with primitives needed for 4S & session backup
2020-09-17 10:19:09 +02:00
Bruno Windels
ab01c903a6
turns out that rollup-plugin-cleanup doesn't like line 259 in aes-js
...
so don't remove comments for now in the legacy build
2020-09-17 09:36:37 +02:00
Bruno Windels
77a21c08eb
add legacy extras, so deps only needed for legacy are not in main bundle
2020-09-16 18:31:17 +02:00
Bruno Windels
b63aaa6dcb
add typed array polyfills to worker bundle
2020-09-16 14:42:13 +02:00
Bruno Windels
12262f2824
actually use correct method to get all device ids for a user
2020-09-14 18:31:54 +02:00
Bruno Windels
75bff228ec
fix data not being passed on, caused crash on initial sync
2020-09-14 17:45:13 +02:00
Bruno Windels
a11b612640
await this
2020-09-14 17:45:02 +02:00
Bruno Windels
b2e6e8687e
dispose tiles
...
also add more defence against emitting event when disposed
2020-09-14 17:44:37 +02:00
Bruno Windels
9ea961ae53
don't crash when we don't have a subscription anymore
2020-09-14 17:43:06 +02:00
Bruno Windels
49f330279b
also pass timeline entries to summary after initial decryption failed
2020-09-14 16:34:07 +02:00
Bruno Windels
f3f07a0672
centralize update emitting in room
2020-09-14 16:33:43 +02:00
Bruno Windels
bce46daa9c
this is shorter
2020-09-14 16:33:30 +02:00
Bruno Windels
3325f12092
remove devices not present in /keys/query response
2020-09-14 15:47:00 +02:00
Bruno Windels
504371eaf3
this is outdated (and not really needed)
2020-09-14 15:47:00 +02:00
Bruno Windels
8555fd5f18
a little extra caution
2020-09-14 15:47:00 +02:00
Bruno Windels
aa5d55bbf2
show when e2ee is enabled in timeline
2020-09-14 15:47:00 +02:00
Bruno Windels
8c4d68def9
show decryption errors in timeline
2020-09-14 15:47:00 +02:00
Bruno Windels
a2f8731a23
Keep room key with earliest index
2020-09-14 15:47:00 +02:00
Bruno Windels
9fad5b3b29
only load olm once
2020-09-14 15:47:00 +02:00
Bruno Windels
0c3ea90ab4
also update room list when encrypted events come in
2020-09-14 15:46:58 +02:00
Bruno Windels
fb69688d47
also update room list when encrypted events come in
2020-09-14 14:01:47 +02:00
Bruno Windels
4875095ea3
fix event tiles not updating when event is decrypted when room keys come
2020-09-11 17:47:35 +02:00
Bruno Windels
2855166239
migrate encryption flag so old sessions dont send unencrypted events
2020-09-11 16:48:04 +02:00
Bruno Windels
e763771cc2
cleanup
2020-09-11 14:45:38 +02:00
Bruno Windels
96119b4e58
load all pending operations when starting the session, pass to room
2020-09-11 14:41:40 +02:00
Bruno Windels
ab1fe711ad
implement room key sharing with operations store
2020-09-11 14:41:12 +02:00
Bruno Windels
b00865510f
add operation store
2020-09-11 14:40:05 +02:00
Bruno Windels
9f6822f362
remove needsRoomKey flag on member
2020-09-11 14:38:36 +02:00
Bruno Windels
bba53b3477
dont store duplicated key values for replay detection
2020-09-11 12:08:06 +02:00
Bruno Windels
0dece5b04f
make continuation logic work well with pending events
...
- don't use display name to compare but user id
(pending doesn't have display name yet)
- use current time as timestamp
2020-09-11 11:43:40 +02:00
Bruno Windels
2c186554a1
this works better in ie11 for some reason
2020-09-11 11:36:08 +02:00
Bruno Windels
843e3e6b1c
show encrypted status of room
2020-09-11 11:35:53 +02:00
Bruno Windels
0e3084cce3
provide alternative spinner for ie11
2020-09-11 11:28:59 +02:00
Bruno Windels
95c6fd5a5b
reenable only using worker when wasm is not supported
2020-09-11 10:53:15 +02:00
Bruno Windels
e0d9d703b7
offload olm account creation in worker
2020-09-11 10:43:17 +02:00
Bruno Windels
0b26e6f53a
compress new e2ee stores into one new idb version
2020-09-11 08:40:43 +02:00
Bruno Windels
78fecd003a
cleanup
2020-09-10 18:57:29 +02:00
Bruno Windels
af36c71a59
load worker in main and pass paths so it works both on compiled and non-compiled
2020-09-10 18:41:23 +02:00
Bruno Windels
de1cc0d739
abort decrypt requests when changing room
2020-09-10 17:43:01 +02:00
Bruno Windels
0bf1723d99
Worker WIP
2020-09-10 15:40:30 +01:00
Bruno Windels
fdbc5f3c1d
WIP worker work
2020-09-10 13:00:11 +02:00
Bruno Windels
17412bbb2f
more validation
2020-09-10 12:12:39 +02:00
Bruno Windels
94b0cfbd72
add prepareSync and afterPrepareSync steps to sync, run decryption in it
2020-09-10 12:11:43 +02:00
Bruno Windels
1c77c3b876
expose multi-step decryption from RoomEncryption, adjust room timeline
...
sync code hasn't been adjusted yet
2020-09-10 12:11:25 +02:00
Bruno Windels
7c1f9dbed0
split up megolm decryption so it can happen in multiple steps,see README
2020-09-10 12:05:53 +02:00
Bruno Windels
a4c8e56ab0
fix getKey not working on IE11
2020-09-09 11:42:26 +01:00
Bruno Windels
f8e3a75471
fix typo
2020-09-09 10:22:29 +02:00
Bruno Windels
a18d2c0e78
update comment
2020-09-09 09:51:48 +02:00
Bruno Windels
212efe823c
fix memberlist not containing all members
...
we were using the prev_batch of the last sync to pass to
/members, but this points at the timeline *before* the last
sync, so wouldn't contain all members. Use the sync token instead.
2020-09-09 09:50:03 +02:00
Bruno Windels
1f9d6191c2
this happens often when room is not tracked yet, so don't log
2020-09-08 18:32:51 +02:00
Bruno Windels
0ed2d14887
log OTK claim failures
2020-09-08 18:32:12 +02:00
Bruno Windels
da4b710e49
don't return promise here, not used
2020-09-08 18:30:45 +02:00
Bruno Windels
4ca5ff9b9f
only load 50 olm sessions at once
2020-09-08 18:30:06 +02:00
Bruno Windels
10b5614fd9
m.dummy events don't have content
2020-09-08 18:27:49 +02:00
Bruno Windels
9a7abb1899
make logic more explicit
2020-09-08 18:27:35 +02:00
Bruno Windels
4a2faed198
don't assume roomKeys is an array
2020-09-08 18:27:12 +02:00