Commit graph

876 commits

Author SHA1 Message Date
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
Bruno Windels
4c1aaaf416 show "setting up encryption keys..." step during login 2020-09-08 17:16:34 +02:00
Bruno Windels
36a8ec0110 dont attempt to decrypt redacted events
this will show them as undecryptable for now though
2020-09-08 17:16:01 +02:00
Bruno Windels
773cb3420f ignore duplicate curve25519 keys in /keys/query response 2020-09-08 17:14:23 +02:00
Bruno Windels
b653022a5a do store our own device, otherwise need special case verifying own msgs 2020-09-08 15:25:36 +02:00
Bruno Windels
1cd93df81c
Merge pull request #87 from vector-im/bwindels/megolm-member-changes
Rotate and share room key on membership changes
2020-09-08 13:07:29 +00:00
Bruno Windels
65660a1e3b remove double jsdoc 2020-09-08 15:06:44 +02:00
Bruno Windels
650df6fea8 forgot await 2020-09-08 15:00:29 +02:00
Bruno Windels
5a8aac57ac there might not be a member yet 2020-09-08 15:00:20 +02:00
Bruno Windels
7bba83aa9e add outbound session store to sync txn 2020-09-08 15:00:00 +02:00
Bruno Windels
5e65eb10ef docs 2020-09-08 14:39:33 +02:00
Bruno Windels
1aa044667c try sending out pending room keys after first sync 2020-09-08 14:39:07 +02:00
Bruno Windels
31d4b6f75d send room keys to newly joined members in afterSyncCompleted stage 2020-09-08 14:38:27 +02:00
Bruno Windels
c158e3da77 support running afterSyncCompleted step on rooms as well
and make it in parallel with next sync request
2020-09-08 14:37:24 +02:00
Bruno Windels
52c3c7c03d support sending out room key in room encryption for newly joined members 2020-09-08 14:36:50 +02:00
Bruno Windels
7b35a3c46c memberChanges is a map, not array 2020-09-08 14:23:38 +02:00
Bruno Windels
bbaf3a5605 write needsRoomKey flag when new members joins to tracked e2ee room 2020-09-08 14:22:11 +02:00
Bruno Windels
d184be2d22 rotate outbound megolm session when somebody leaves the room 2020-09-08 11:09:09 +02:00
Bruno Windels
7da4f5c9ce
Merge pull request #86 from vector-im/bwindels/verify-events
Verify events come from the device/fingerprint key they claim
2020-09-08 08:59:37 +00:00
Bruno Windels
cd172f6df2 log new room keys for debugging 2020-09-08 10:55:38 +02:00
Bruno Windels
dea9fd90b4 name devices at login "Hydrogen"
so you can somewhat identify them in a device list
2020-09-08 10:53:15 +02:00
Bruno Windels
2c5c3ac8e2 formatting 2020-09-08 10:53:02 +02:00
Bruno Windels
2b59c8bb7c store ed25519 key from olm event rather than one in m.room_key payload
that's the docs/js-sdk do it, even though it probably
doesn't matter much as we verify the key anyway
2020-09-08 10:52:02 +02:00
Bruno Windels
40ed66dc5e document return type 2020-09-08 10:51:45 +02:00
Bruno Windels
4cf3b3569d storage method takes EventKey actually 2020-09-08 10:51:28 +02:00
Bruno Windels
3e100ff5ec ensure /keys/query devices have the keys we need 2020-09-08 10:51:01 +02:00
Bruno Windels
c32ac2c764 use decryption result to show message verification status in timeline 2020-09-08 10:50:39 +02:00
Bruno Windels
9137d5dcbb make decryption algorithms return DecryptionResult
which contains curve25519 key and claimed ed25519 key as well as payload
2020-09-08 10:48:11 +02:00
Bruno Windels
b8ba4c5771
Merge pull request #84 from vector-im/bwindels/megolm-decrypt
Implement megolm decryption and hooking up decryption in the room
2020-09-04 14:50:46 +00:00
Bruno Windels
fbb534fa16 add todo 2020-09-04 16:46:13 +02:00
Bruno Windels
a817a9aaf9 return decrypted type and content 2020-09-04 16:41:03 +02:00
Bruno Windels
7bfcfc9eed correct store name 2020-09-04 16:40:51 +02:00
Bruno Windels
f31efe3e87 encode key with proper names 2020-09-04 16:40:39 +02:00
Bruno Windels
8e5d5db32b add event prop on entry 2020-09-04 16:40:15 +02:00
Bruno Windels
e06cb1eb5f fix param order 2020-09-04 16:29:20 +02:00
Bruno Windels
1af118a443 don't assume we have a timeline 2020-09-04 16:27:39 +02:00
Bruno Windels
9b771120e4 actually accept megolm decryption dep 2020-09-04 16:27:14 +02:00
Bruno Windels
dc0576f2db cleanup 2020-09-04 15:31:45 +02:00
Bruno Windels
baad4bd37f hookup megolm decryption in session 2020-09-04 15:31:27 +02:00
Bruno Windels
32a399afec implement storage changes for megolm decryption 2020-09-04 15:31:00 +02:00
Bruno Windels
5a731903da implement decrypting when loading timeline 2020-09-04 15:30:06 +02:00
Bruno Windels
62bcb27784 implement decryption retrying and decrypting of gap/load entries
turns out we do have to always check for replay attacks because
failing to decrypt doesn't prevent an item from being stored,
so if you reload and then load you might be decrypting it
for the first time
2020-09-04 15:29:58 +02:00
Bruno Windels
565fdb0f8c use proper error codes 2020-09-04 12:10:36 +02:00
Bruno Windels
28b46a1e5b add some comments 2020-09-04 12:10:28 +02:00
Bruno Windels
fe9245dd04 first draft of retrying decryption when receiving room keys 2020-09-04 12:10:12 +02:00
Bruno Windels
502ba5deea first draft of decryption in Room and RoomEncryption 2020-09-04 12:09:19 +02:00
Bruno Windels
fab58e8724 first draft of megolm decryption 2020-09-04 12:06:26 +02:00
Bruno Windels
80ede4f411 session will always be true here, we want to check sessionEntry 2020-09-04 12:05:58 +02:00
Bruno Windels
74a86c8377
Merge pull request #82 from vector-im/bwindels/megolm-encrypt
Implement megolm encryption
2020-09-03 15:56:29 +00:00