Richard van der Hoff
2c54d76085
Implement sharing of megolm keys
2017-06-06 14:46:54 +01:00
Richard van der Hoff
70f39ed760
Fix lint failure
2017-06-06 14:46:24 +01:00
Richard van der Hoff
ab7e0a9266
Merge branch 'room_key_sharing' into rav/handle_room_key_requests
2017-06-06 14:30:34 +01:00
Richard van der Hoff
ea2a04135f
Send a room key request on decryption failure
...
When we are missing the keys to decrypt an event, send out a request for those
keys to our other devices and to the original sender.
2017-06-06 14:24:19 +01:00
Richard van der Hoff
1664312c80
Address review comments
...
Avoid gut-wrenching properties on IncomingRoomKeyRequest.
2017-06-05 16:07:38 +01:00
Richard van der Hoff
2daa39520a
Room key request cancellation handling
2017-06-01 18:30:32 +01:00
Richard van der Hoff
c8eca50f43
Processing of received room key requests
...
Doesn't actually do any of the crypto magic yet.
2017-06-01 18:30:26 +01:00
Richard van der Hoff
4c7afe5af0
Initial framework for indexeddb-backed crypto store
...
Doesn't do anything useful yet - just demonstrates a framework for how I hope
it will fit into the sdk.
2017-05-30 23:25:07 +01:00
Richard van der Hoff
b26c1c57dc
crypto/algorithms/base.js: Convert to es6
...
Convert base to an es6 module with es6 classes, for clarity and to help with
jsdoccing.
Complications are:
* jsdoc gets confused by `export class`, so the exports are separated.
* turns out that extending Error is a bit difficult, so instanceof doesn't work
on derived Error classes. This only really affects us in one place (app-side
code shouldn't be doing instanceofs anyway), so just use `name` instead.
2017-05-23 14:32:13 +01:00
Richard van der Hoff
5020d4e99f
Rework device list tracking logic ( #425 )
...
Yet another attempt at fixing
https://github.com/vector-im/riot-web/issues/2305 .
This now implements the algorithm described at
http://matrix.org/speculator/spec/HEAD/client_server/unstable.html#tracking-the-device-list-for-a-user :
* We now keep a flag to tell us which users' device lists we are tracking. That
makes it much easier to figure out whether we should care about device-update
notifications from /sync (thereby fixing
https://github.com/vector-im/riot-web/issues/3588 ).
* We use the same flag to indicate whether the device list for a particular
user is out of date. Previously we did this implicitly by only updating the
stored sync token when the list had been updated, but that was somewhat
complicated, and in any case didn't help in cases where we initiated the key
download due to a user joining an encrypted room.
Also fixes https://github.com/vector-im/riot-web/issues/3310 .
2017-04-25 17:56:01 +01:00
Richard van der Hoff
98d606fca4
Upload one-time keys on /sync rather than a timer
...
Delay the upload of one-time keys until we have received a sync *without any
to-device messages*. Doing so means that we can try to avoid throwing away our
private keys just before we receive the to-device messages which use them.
Once we've decided to go ahead and upload them, we keep uploading them in
batches of 5 until we get to the desired 50 keys on the server. We then
periodically check that there are still enough on the server.
2017-02-20 16:26:24 +00:00
Richard van der Hoff
54297cacd1
Fix race when downloading initial device change list
...
Fixes a problem if the user initiates a device query before the /changes
response comes back.
2017-02-13 18:33:02 +00:00
Richard van der Hoff
82f5997e61
Fix race condition in device list query
...
Fix a race where device list queries completing out-of-order could lead to us
thinking that we were more in-sync than we actually were.
2017-02-13 18:33:02 +00:00
Richard van der Hoff
0baea5c1a6
Invalidate device lists when encryption is enabled in a room
...
Fixes https://github.com/vector-im/riot-web/issues/2672
2017-02-08 23:23:46 +00:00
Richard van der Hoff
bd07310e15
Remove redundant invalidation of our own device list
...
89ced198 added some code which flagged our own device list as in need of an
update. However, 8d502743 then added code such that we invalidate *all* members
of e2e rooms on the first initialsync - which should include ourselves. We can
therefore remove the redundant special-case, which mostly serves to simplify
the tests.
2017-02-08 23:04:23 +00:00
Richard van der Hoff
6ca7661510
Fix some lint
2017-02-06 10:33:50 +00:00
Richard van der Hoff
5fd74109ff
Fix device list update
...
s/flushNewDeviceRequests/refreshOutdatedDeviceLists/ - this got fixed on one PR
and apparenlty I failed to merge the changes correctly
2017-02-03 14:29:50 +00:00
Richard van der Hoff
a3cc8eb1f6
Include DeviceInfo in deviceVerificationChanged events
...
... to help the UI update itself
2017-02-03 14:27:08 +00:00
Richard van der Hoff
c3a8aeca42
Merge pull request #348 from matrix-org/rav/device_list_stream
...
Use the device change notifications interface
2017-02-03 12:49:33 +00:00
Richard van der Hoff
eaa95fb1e5
Merge pull request #347 from matrix-org/rav/rewrite_device_query_logic
...
Rewrite the device key query logic
2017-02-03 12:49:11 +00:00
Richard van der Hoff
8d502743a5
Refresh device list on startup
...
On initialsync, call the /keys/changes api to see which users have updated
their devices. (On failure, invalidate all of them).
2017-02-03 00:33:56 +00:00
Richard van der Hoff
732a764ec6
Refactor crypto initialsync handling
...
Pass a store into the Crypto object so that it doesn't need to make assumptions
about the EventEmitter, and use the new metadata on sync events to distinguish
between initialsyncs and normal syncs
2017-02-03 00:33:54 +00:00
Richard van der Hoff
89ef4aa6e7
Handle device change notifications from /sync
...
When we get a notification from /sync that a user has updated their device
list, mark the list outdated, and then fire off a device query.
2017-02-03 00:32:16 +00:00
Richard van der Hoff
7e82ac3620
Merge branch 'develop' into rav/rewrite_device_query_logic
2017-02-03 00:12:46 +00:00
Richard van der Hoff
c3440c506c
Address review comments
...
Update some comments, and s/flushNewDeviceRequests/refreshOutdatedDeviceLists/.
2017-02-03 00:10:13 +00:00
Matthew Hodgson
b6f3fc5466
Merge branch 'develop' into matthew/blacklist-unverified
2017-02-02 22:02:22 +00:00
Richard van der Hoff
6690f59410
Merge pull request #346 from matrix-org/rav/factor_out_devicelist
...
Factor out device list management
2017-02-02 19:40:27 +00:00
Richard van der Hoff
94addb6315
Rewrite the device key query logic
...
Only permit one query per user at a time.
2017-02-02 13:49:43 +00:00
Richard van der Hoff
f81d6b6157
Factor out device list management
...
crypto/index.js was getting huge, so move the device list update management out
to a separate file.
This shouldn't have any effect on functionality.
2017-02-02 10:18:30 +00:00
Matthew Hodgson
5d544c773d
Merge branch 'develop' into matthew/warn-unknown-devices
2017-02-01 22:35:25 +00:00
Richard van der Hoff
656c54ead9
Record all e2e room settings in localstorage
...
I can't quite remember what the logic behind only recording the algorithm in
localstorage was, but the upshot is that if you try to set any e2e config
options (such as the megolm rotation periods) via the room state, then the
state gets rejected and you can't send any events.
2017-01-30 11:40:09 +00:00
Richard van der Hoff
c9b700ef6a
Merge branch 'matthew/warn-unknown-devices' into matthew/blacklist-unverified
2017-01-26 13:25:10 +00:00
Richard van der Hoff
34fde7d16d
Store device 'known' status in session store
2017-01-26 13:15:50 +00:00
Richard van der Hoff
5245c7f2ab
Merge remote-tracking branch 'origin/develop' into matthew/warn-unknown-devices
2017-01-25 11:03:23 +00:00
Richard van der Hoff
4ccd649358
Address my own review comments
2017-01-25 11:02:49 +00:00
Matthew Hodgson
512d5882c9
track whether we blacklist unverified devices per-room & globally
2017-01-21 17:38:35 +00:00
Matthew Hodgson
fb820fa9a7
experimental support for warning users when unknown devices show up in a room.
...
hopefully a step towards fixing https://github.com/vector-im/riot-web/issues/2143
2017-01-21 05:10:51 +00:00
David Baker
423175f539
eslint --fix for dangley commas on function calls
2017-01-20 16:12:02 +00:00
David Baker
7bca05af64
eslint ---fix for prefer-const
2017-01-19 17:42:10 +00:00
Richard van der Hoff
c8b26eeac4
Support for importing megolm session keys
2017-01-14 00:45:03 +00:00
Richard van der Hoff
766d8f0ba4
Support for exporting megolm session data
2017-01-14 00:45:03 +00:00
Kegan Dougal
5abf6b9f20
Manually patch up files which were formatted wrong
...
`eslint --fix` expands `if` statements incorrectly (wrong indentation).
2017-01-13 11:50:00 +00:00
Kegan Dougal
7ed65407e6
Pass through eslint --fix
2017-01-13 10:49:32 +00:00
David Baker
0a11404be2
Fix legitimate JSDoc errors
2017-01-12 11:46:07 +00:00
Kegan Dougal
ae6a409cc2
Move /lib to /src
2017-01-11 10:09:04 +00:00