Commit graph

237 commits

Author SHA1 Message Date
2a14807c02 xep_0384: _receive_device_list was never called because event system doesn't do async.
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:10:10 +01:00
9591cf0ced xep_0384: Modify device list handling
When receiving the device list, do not read from storage before checking
if our JID is included, because the OMEMO library always includes it.
The method now verifies directly from the items and calls the set method
if necessary.

Also fix an issue where the `device_ids` parameter of ̀_set_device_list`
was never used.

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
7492508d6c xep_0384: Move publish calls on session_bind
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
0c3946c556 xep_0384: Remove own Storage implementation, use JSONFileStorage from lib
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
ae8fd402f8 xep_0384: Add a way to specify parameters to the plugin
Users can now specify replacements for the storage backend, otpk policy,
and the omemo backend.

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
a490ca6066 xep_0384: Add check on data_dir before loading plugin
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
15f34aa145 xep_0384: Use variables for filenames in Storage
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
1f6c13fdd1 xep_0384: only clean specified session for a user; use existing storeSession method
Thanks Syndace

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
3fdb7cc953 xep_0384: add types to Storage
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
d3c2db0d08 xep_0384: use correct variable name in deleteJID impl
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
011aeaa7a2 xep_0384: Change listJIDs' return value to set
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
77dccdb332 xep_0384: Change behaviour for NoElibibleDevices, add comments
Thanks to Syndace for the explanation.

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
2880aef846 xep_0384: Use Optional instead of Union[None, T]
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
46a7e414a4 xep_0384: update plugin to work with OMEMO lib updates
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
2c90249462 xep_0384: update storage with new lib updates
Add:
- deleteSession
- storeTrust
- loadTrust
- listJIDs
- deleteJID

Fix:
- loadInactiveDevices
- storeInactiveDevices

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
623ca1e2bb xep_0384: get_device_list now always returns active devices
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
57addc3b39 xep_0384: add _fetch_device_list method for manual fetching
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
09083d0724 xep_0384: handle IqError and IqTimeout in _fetch_bundle
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
71c592d666 xep_0384: Move _fetching_bundle method out of plugin class
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
be6b0efb0f xep_0384: rework _store_device_ids method
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
8d35f7f80a xep_0384: Allow Devices in Items as well as EventItems
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
eb3916e92e xep_0384: handle OMEMO devices ns explicitely
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
b64371e8fe xep_0384: Move _generate_encrypted_payload out of plugin class
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
2891e92269 xep_0384: move _parse_bundle out of plugin class
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
bc97de440a xep_0384: don't register the plugin twice
We're already calling `register_plugin` in __init__.py

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
b6fb1ec015 xep_0384: rename cache_dir to data_dir. This data should be persisted
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
53d49f838d xep_0384: add bare_jid and device_id to NoAvailableSession exception
We actually had the data all along!

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
a8fb31a4b1 xep_0384: republish our bundle after decryption if necessary
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
4b565c0f7b xep_0384: document & raise NoAvailableSession
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
f81e6525cd xep_0384: import omemo.exceptions directly
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
05ef6d75c3 xep_0384: store sessions to file
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
23ac4a5bff xep_0384: Fix issue when loading session
Slixmpp was never able to load the session as ids would mismatch, thus
unable to decrypt incoming messages.

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
4b51f117bb xep_0384: Generate XML from encrypted payload received from the lib
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
c355b14f79 xep_0384: loop again until encryption errors are fixed or until we're stuck
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
112bdddf11 xep_0384: Use set instead of list for no_eligible_devices
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
a12dad7241 xep_0384: Fixup; get check for eligible devices out of the loop
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
bc85bc7efd xep_0384: raise NoEligibleDevices all at once
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
8465936715 xep_0384: Handle NoEligibleDevicesException
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
c192c180e1 xep_0384: fix type annotation for bundles
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
85e5d44bb8 xep_0384: encryption: handle MissingBundleException
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
4bdea25179 xep_0384: encryption, return empty payload (doesn't encrypt anything)
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
fb13027906 xep_0384: Remove custom encode function; use bundle API
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
02f140614f xep_0384: use exception instead of log when missing own key when decrypting
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
3227e58d8a xep_0384: Moar mypy; add types, fix stuff
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
8117248bc7 xep_0384: document encode_public_key fn
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
41919a7a5e xep_0384: some more mypy checks
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
252b789f85 xep_0384: add some types to storage
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
5e55120317 xep_0384: simplify trust management even more for now
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
f15626c6d1 xep_0384: Fix message decryption. Hello world!
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00
11cbbdcda4 xep_0384: Make storage synchronous
The OMEMO lib provides a way to do async operations, but slixmpp and
poezio are not entirely ready for this:
- The plugin_init method is not awaited, in slixmpp
- Event handlers are not awaited, in poezio

This would need to be fixed before being able to do what I am trying to
do asynchronously.

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-01-29 18:05:59 +01:00