Commit Graph

357 Commits (5418c887758a2fcd47c12d394ca034ef54e24cbb)

Author SHA1 Message Date
Damir Jelić c85fe6bc21 crypto: Initial support for private cross signing identities. 2020-10-14 15:35:06 +02:00
Damir Jelić 1c6a67d864 matrix-sdk: Bump our deps. 2020-10-13 13:01:18 +02:00
Denis Kasak 7519bec9a3 Tweak descriptions given by Describe impls. 2020-10-12 20:45:47 +02:00
Damir Jelić bf7070b8f2 Merge branch 'client-get-session' into master 2020-10-12 15:45:55 +02:00
Denis Kasak d81a6e6872 cargo fmt 2020-10-12 15:17:46 +02:00
Denis Kasak 2afc0c7661 Implement BaseClient::get_session to retrieve the login session.
Closes #100.
2020-10-12 15:12:23 +02:00
Denis Kasak f349811020 Add Serialize/Deserialize impls for matrix_sdk::Session. 2020-10-12 14:56:08 +02:00
Damir Jelić 661f182382 Merge branch 'master' into crypto-improvements 2020-10-08 18:28:04 +02:00
Dominique Martinet 2602c36ad0 matrix_sdk_base: save room states after successfully parsed account events 2020-10-08 16:10:58 +02:00
Dominique Martinet d858940342 matrix_sdk_base: handle response.account_data events
"m.direct" events are not in room account data events but in main one
2020-10-08 16:10:58 +02:00
Dominique Martinet 883183324f matrix_sdk_base: room: add direct_target field
Rooms marked as "direct" are associated a user_id in "m.direct" events.
Clients could want to handle these separately
2020-10-08 16:10:58 +02:00
Dominique Martinet f7039d9a8d matrix_sdk_base: expose RoomMember 2020-10-08 13:16:33 +02:00
Damir Jelić 17d23eb9e5 matrix-sdk: Add automatic key claiming support. 2020-10-07 14:07:47 +02:00
Damir Jelić 02c765f903 crypto: Don't mark outbound group sessions automatically as shared. 2020-10-01 16:31:24 +02:00
Damir Jelić 8fe1eda169 crypto: Test the full key share flow. 2020-09-29 14:18:03 +02:00
Damir Jelić a357536ade crypto: Initial scaffolding for incoming key share handling. 2020-09-28 09:27:16 +02:00
Alejandro Domínguez 3070c98d26 Export "unstable-synapse-quirks" feature from ruma 2020-09-22 21:03:12 +02:00
Damir Jelić 41529a6bff base: Don't handle the wildcard case for member events anymore. 2020-09-17 17:31:17 +02:00
Damir Jelić f603696ff4 crypto: Expose the olm machine only if the encryption feature is enabled. 2020-09-11 17:06:45 +02:00
Damir Jelić ffd2843b0a matrix-sdk: Expose the import/export keys methods. 2020-09-11 16:34:39 +02:00
Damir Jelić 217543ef38 matrix-sdk: Bump the versions of our deps. 2020-09-05 18:03:47 +02:00
Damir Jelić 22daf0d81e Merge branch 'to-device-txn-uuid' into crypto-improvements 2020-09-04 12:54:40 +02:00
Damir Jelić adf8905d9f crypto: Rename the memory stores into caches and reorder the store module. 2020-09-04 12:42:40 +02:00
Jonas Platte 73c104cac1
Replace IncomingToDeviceRequest with customized request type 2020-09-03 20:02:55 +02:00
Damir Jelić 977e29c3af matrix-sdk: Fix the wasm bot example. 2020-08-26 16:19:39 +02:00
Damir Jelić 39628a308b matrix-sdk: Allow any event content to be sent out with room_send(). 2020-08-26 15:41:27 +02:00
Damir Jelić 6760f81498 matrix-sdk: Update Ruma. 2020-08-26 13:40:38 +02:00
Damir Jelić 95c8708995 crypto: Document and rename the mark_requests_as_sent() method. 2020-08-24 14:49:57 +02:00
Devin Ragotzy 2b389b920d matrix_sdk_base: Add test for update_member_power overflow 2020-08-23 20:57:59 -04:00
Devin Ragotzy 72614e4252 matrix_sdk_crypto: Appease clippy 2020-08-22 08:00:32 -04:00
Devin Ragotzy 8a71cec81a matrix_sdk_base: Member power level math from Int -> i64 2020-08-22 07:52:12 -04:00
Damir Jelić de90da4adc crypto: Make the verification machine compatible with how we queue up requests. 2020-08-21 16:26:34 +02:00
Damir Jelić e38bfc64f4 crypto: Streamline the key claiming so we use the new mark request as sent method. 2020-08-21 14:40:49 +02:00
Damir Jelić 93e1967119 crypto: Initial refactor to switch to the outgoing_requests queue. 2020-08-21 13:35:01 +02:00
Damir Jelić 9fe23227af base: Fix the encryption settings Into implementation. 2020-08-21 12:44:14 +02:00
Damir Jelić ce93869915 crypto: Return an Option instead of an empty result for the key uploads. 2020-08-21 09:50:01 +02:00
Damir Jelić 56309ae12c matrix-sdk: Bump the versions of our deps. 2020-08-19 14:52:11 +02:00
Damir Jelić 90ea0229f2 crypto: Rename TrustState to LocalTrust since.
We might still trust the device event if our local trust isn't set, so
rename the enum to better reflect that meaning.
2020-08-19 11:20:08 +02:00
Damir Jelić 84c0311d80 crypto: Rename the UserDevicesWrap struct. 2020-08-17 17:12:39 +02:00
Damir Jelić 91db502cfe crypto: Rename DeviceWrap to Device. 2020-08-17 16:36:50 +02:00
Damir Jelić 43aea6e482 crypto: Rename Device to ReadOnlyDevice. 2020-08-17 16:17:28 +02:00
Damir Jelić fd8377bce2 crypto: Add device wrappers so that the verification can be started with a device. 2020-08-17 15:36:45 +02:00
Jonas Platte 5040be042f
Update ruma 2020-08-15 15:17:27 +02:00
Damir Jelić 09f009ebd7 matrix-sdk: Bump our deps. 2020-08-14 17:11:54 +02:00
Damir Jelić 344631b4ee crypto: Respect the encryption settings of a room when creating sessions. 2020-08-13 14:41:59 +02:00
Damir Jelić d4de877e09 base: Fix the docs for our feature flags. 2020-08-13 12:17:30 +02:00
Damir Jelić 9b8e11aab9 crypto: Fix the docs for our features. 2020-08-13 11:06:26 +02:00
Damir Jelić 4e99278eac matrix-sdk: Expose the device methods in the Client. 2020-08-13 10:49:38 +02:00
Damir Jelić cdb8b5c1e9 matrix-sdk: Fix a couple of typoes. 2020-08-13 10:28:40 +02:00
Damir Jelić 5883396106 base: Hide the user devices method behind the encryption feature. 2020-08-12 17:49:08 +02:00
Damir Jelić c6b0a19171 base: Fix a stale docstring. 2020-08-12 17:17:56 +02:00
Damir Jelić 7ee0430054 base: Add methods to fetch user devices. 2020-08-12 17:17:22 +02:00
Damir Jelić 0dc232b268 base: Fix a clippy warning. 2020-08-12 15:39:38 +02:00
Damir Jelić 407f9a3da8 matrix-sdk: Make sure to not send out multiple group share requests at once. 2020-08-12 15:12:51 +02:00
Damir Jelić 7cb25361b2 matrix-sdk: Expose an API to start SAS verifications. 2020-08-12 11:39:47 +02:00
Damir Jelić c4ed5b6cda matrix-sdk: Upgrade our deps. 2020-08-11 16:54:58 +02:00
Damir Jelić 7637e79f2c matrix-sdk: Fix the tarpaulin skip directives. 2020-08-11 15:49:04 +02:00
Damir Jelić 528483ef0e crypto: Remove the last mutable self borrows in the Olm machine methods. 2020-08-11 12:22:14 +02:00
Damir Jelić 6f4d2022fd Merge branch 'master' into sas-timeout 2020-08-10 15:00:08 +02:00
Damir Jelić ef5201cf35 Merge branch 'up-ruma' into master 2020-08-10 14:58:47 +02:00
Damir Jelić 7bcdc2a3b6 Merge branch 'master' into sas-timeout 2020-08-10 14:57:32 +02:00
Matthew Hodgson 9c4229dc57 typoes 2020-08-10 13:15:58 +01:00
Damir Jelić d5cd608045 base: Remove some unnecessary mutable borrows of the olm machine. 2020-08-10 14:11:55 +02:00
Jonas Platte d83fc971ce
Update ruma 2020-08-10 13:58:39 +02:00
Jonas Platte d016ce1848
Use identifier macros in tests 2020-08-06 13:03:32 +02:00
Devin Ragotzy ffdb9c4a79 Fix failing wasm test and clippy warnings for wasm 2020-08-04 17:39:25 -04:00
Devin Ragotzy cb8d5ce8fb Rename CustomOrRawEvent -> CustomEvent and use raw json when failed
When deserialization fails we fallback to providing the user with a
serde_json::RawValue, basically the json string. Ruma should handle all
events that conform to a matrix event shape correctly by either
converting them to their type or returning a custom event.
2020-08-04 17:27:57 -04:00
Devin Ragotzy c10120602a Add test actually testing a correct message edit event 2020-08-04 17:22:54 -04:00
Devin Ragotzy 47690bd268 Bump ruma and fix failing unrecognized_event test
The test was broken because the JSON being fed into it was bad.
2020-08-04 17:22:54 -04:00
Damir Jelić 2bf8c99dfe Merge branch 'master' into sas-verification 2020-08-04 11:23:24 +02:00
Devin Ragotzy 33e1601004 matrix_sdk: Fix import error 2020-08-03 20:13:58 -04:00
Damir Jelić 1787d2ebe6 crypto: Hook up marking the device as verified. 2020-08-03 12:38:43 +02:00
Devin Ragotzy 0ac2b84c02 Unify import style across workspace 2020-08-02 08:05:43 -04:00
Devin Ragotzy ed1f12ce37 Run cargo fmt with merge-imports true 2020-08-02 07:46:02 -04:00
Damir Jelić 3f83941d57 Merge branch 'master' into sas-verification 2020-07-31 16:27:52 +02:00
Devin Ragotzy 79e661d1d9 sdk-base: Remove MessageWrapper and do not order messages in queue 2020-07-31 09:16:41 -04:00
Damir Jelić dce06d31aa Merge branch 'master' into sas-verification 2020-07-31 15:14:05 +02:00
Damir Jelić 3472614649 Merge branch 'remove-possibly-redacted-type-alias' into master 2020-07-31 15:13:23 +02:00
Denis Kasak 2ce0765206 Remove confusing type alias for AnyPossiblyRedactedSyncMessageEvent.
There's already a SyncMessageEvent in Ruma which is something else.
Let's prefer the full, unambiguous type.
2020-07-31 14:36:58 +02:00
Denis Kasak e00e94c6c3 Fix input order. 2020-07-31 11:46:52 +02:00
Denis Kasak 359c5280d7 Expose `sender` in `PossiblyRedactedExt`.
Also add a few missing apostrophes.
2020-07-30 14:40:27 +02:00
Damir Jelić a07767d417 base: Hide the SAS getting method behind the encryption feature. 2020-07-30 11:50:42 +02:00
Damir Jelić 117ebeaf4b crypto: Return requests when you want to accept a verification. 2020-07-29 12:47:36 +02:00
Damir Jelić 9facd86d81 base: Expose the verification methods in the base client. 2020-07-28 16:44:06 +02:00
Damir Jelić 7e95d85f17 crypto: Move the cryptostore behind a lock. 2020-07-28 15:03:44 +02:00
Jonas Platte 6a96368048
Upgrade ruma 2020-07-26 16:58:27 +02:00
Jonas Platte d4fe2fe0a2
Remove redundant braces 2020-07-25 02:32:50 +02:00
Jonas Platte 14db34beee
Use Option::and_then over manual match 2020-07-25 02:32:18 +02:00
Jonas Platte bf54b17a2f
Upgrade ruma 2020-07-22 22:31:42 +02:00
Devin R e4f94cbfec Remove FullOrRedacted use ruma::AnyPossiblyRedacted event enum 2020-07-18 08:52:51 -04:00
Devin R 71f2a042c2 Rename Stub -> Sync for all ruma events 2020-07-18 08:37:43 -04:00
Devin R 2e8fc3e232 matrix-sdk-base: Integrate redacted events into message queue
Redact message events according to spec and ruma types. Remove content
using events redact() method and insert the redacting event into the
event being redacted.
2020-07-17 13:41:55 -04:00
Damir Jelić d273786d83 matrix-sdk: Bump our dependencies. 2020-07-17 10:01:22 +02:00
Damir Jelić c1ffed4fc9 base: Sanitize the room id for the path of the state store.
This closes: #71.
2020-07-16 14:08:56 +02:00
Damir Jelić a2a87b9fff matrix-sdk: Fix a bunch of clippy warnings. 2020-07-15 15:53:17 +02:00
Damir Jelić fa0a22b090 Merge branch 'dkasak-master'
High-level summary of changes:

- Rewrite the disambiguation algorithm to simplify it.
- Fixes to state tracking, e.g. use `state_key` instead of `user_id` when
  determining which member an event is acting on.
- Changes to `RoomMember`:
  * Make `RoomMember` "dumber" and don't let it mutate itself. This came about
    primarily because `update_profile` cannot live on `RoomMember` because it
    needs some information from `Room`. The other few mutating methods then
    looked odd so it seemed best to move them to `Room` so that the room takes
    care of updating its members.
  * Each `RoomMember` now contains all information to calculate its set of
    names:
      + `.name()` (short/ergonomic but potentially ambiguous),
      + `.unique_name()` (unique but may be contain MXID when not necessary),
      + `.disambiguated_name()` (shortest possible while being unique).
- Add some logging using the `tracing` crate.
- Improvements to `EventBuilder`:
  * Add a docstring.
  * Make it clear itself when building a sync response so the same builder can
    be reused for later sync responses.
- A few tests.
2020-07-15 12:52:25 +02:00
Denis Kasak bce7fe0217 Equivalence class -> equivalence set. 2020-07-15 11:58:52 +02:00
Denis Kasak 1fd21ee206 Fix docstrings regarding return value related to disambiguation. 2020-07-15 11:54:30 +02:00
Denis Kasak 8a4a4140b3 Remove stale comment. 2020-07-15 11:22:47 +02:00
Denis Kasak 62943f055d Rewrap docstrings and comments to 80 chars. 2020-07-15 11:21:01 +02:00
Denis Kasak ea149ebd8e Update docstring for disambiguation_updates. 2020-07-15 11:16:13 +02:00
Denis Kasak 9e48b7172b cargo fmt 2020-07-14 12:38:55 +02:00
Damir Jelić a38efc0f29 room: Fix a clippy warning, use unwrap_or_else for the member counts. 2020-07-14 10:56:06 +02:00
Denis Kasak 048a2000e7 Merge 2020-07-13 17:10:13 +02:00
Damir Jelić 740a5af068 Merge branch 'dan/bugfix/implable-StateStore' 2020-07-13 10:19:37 +02:00
Dan Enman 8c3855221c mark state::AllRooms and state::ClientState as public 2020-07-11 19:14:55 -03:00
Jonas Platte eea00301ff
Remove immediately-deref'ed double references 2020-07-11 21:20:02 +02:00
Jonas Platte 85522ac35a
Slightly simplify RoomName::calculate_name 2020-07-11 21:14:32 +02:00
Jonas Platte 9b5f95672b
Use js_int macros to improve readability 2020-07-11 21:06:21 +02:00
Jonas Platte ffc5204109
Fix two pattern matching related warnings 2020-07-11 20:57:01 +02:00
Jonas Platte a607d70371
Upgrade mockito in matrix-sdk-base 2020-07-11 20:55:19 +02:00
Jonas Platte 3ee06be87b
Rewrite MessageQueue deserialization to reduce allocations 2020-07-10 21:41:46 +02:00
Jonas Platte 3a07a17e9d
Remove unnecessary calls to clone() 2020-07-10 21:24:01 +02:00
Denis Kasak 05a41d3b4d Move and rename member_display_name to RoomMember::disambiguated_name.
This makes more sense as all the required information is now available
on `RoomMember`. We also don't have to handle the case of the missing
member since now you have to actually get a `RoomMember` before you can
ask for their name.
2020-07-10 15:47:11 +02:00
Denis Kasak 4134ba969a DRY the membership logging a bit. 2020-07-10 15:11:03 +02:00
Denis Kasak a8f24da3ba cargo fmt 2020-07-10 15:11:03 +02:00
Denis Kasak 390a1aa12c Clarify member_display_name docstring. 2020-07-10 15:11:03 +02:00
Denis Kasak b16724841d Correct state tracking of room members.
- use `state_key` instead of `user_id` to determine which member is
  affected by the event
- assign state directly from the event in `add_member` instead of using
  `membership_change`
- expand/fix docstrings
- add some logging
2020-07-10 15:11:03 +02:00
Denis Kasak ec81a5e539 Implement Room::member_is_tracked. 2020-07-10 15:11:03 +02:00
Denis Kasak 949305da72 Clarify comment. 2020-07-10 15:11:03 +02:00
Denis Kasak 559306a33c Rewrite disambiguation algorithm to handle profile changes.
The new algorithm is simpler. Instead of tracking a list of
disambiguated display names in `Room`, we instead track the display name
ambiguity status in `RoomMember`. This allows a client to generate the
correct name for a member using solely the information available in
`RoomMember`.

The disambiguation algorithm itself now only calculates the set of members
whose ambiguity status had changed instead of producing disambiguated
display names for everyone affected. This is called on each room entry
(join or invite), room entry and profile change, and the updates are
propagated to the affected `RoomMember`s.
2020-07-10 15:11:01 +02:00
Denis Kasak 24d2aa8078 Style (cargo fmt, reordering import). 2020-07-10 15:07:21 +02:00
Denis Kasak e70929317a Revert "add_member provably always returns true."
This reverts commit 7943baee49.
2020-07-10 15:07:17 +02:00
Devin R 62eeb3707f Fix wasm test failure gate unknown import 2020-07-10 08:59:02 -04:00
Devin R 3fa06eeb99 matrix-sdk-base: Add test for MessageQueue/JsonStore interaction
Ruma can't currently handle an event with the wrong event content type.
When replacing the MessageEventStub's content it automatically
serializes as "m.room.redaction".
2020-07-10 08:59:02 -04:00
Devin R c0e6279837 matrix-sdk: Update request_builder to use new constructors
The create_room::Request and get_message_events::Request now have
constructors that we use in our builder structs.
2020-07-10 08:59:02 -04:00
Devin R e7c70854ab sdk_base: message events in message queue have content redacted
The MessageQueue holds MessageEventStub<AnyMessageEventContent> so when
a redaction event is encountered the redacted event's content can be
replaced. The Unsigned field redacted_because is also populated with the
redaction event itself with the addition of a room_id Stub -> full
event.
2020-07-10 08:59:02 -04:00
Devin R dcc3d6e755 sdk_base: Remove room_id as argument from all Room methods
Remove room_id paramater from some client methods. Make CreationContent
two methods of RoomBuilder. Add docs for MessageWrapper.
2020-07-10 08:59:02 -04:00
Devin R 2338d3e8fd matrix-sdk-base: clean up recv/iter joined post rebase
The types for account data in a sync response have changed, no longer
Option. Re word comment in hoist prev_content test.
2020-07-10 08:59:02 -04:00
Devin R b83b9dc59d matrix-sdk-base: Use new accessor methods for models/message.rs
ruma now has field access methods for all of the Any*Event enums use
them for MessageWrapper's AnyMessageEventStub contents.
2020-07-10 08:59:02 -04:00
Devin R 68822861d5 Rebase upstream/master into ruma-mono branch 2020-07-10 08:59:02 -04:00
Devin R b1e7bc77a4 Use ruma/ruma master, address review issues 2020-07-10 08:59:02 -04:00
Devin R eb5949dbc2 Move matrix-sdk to ruma monorepo 2020-07-10 08:59:00 -04:00
Denis Kasak 7943baee49 add_member provably always returns true. 2020-07-10 11:08:40 +02:00
Denis Kasak 7abdeed449 fix: Don't issue a disambiguation in case of a unique display name. 2020-07-10 11:08:40 +02:00
Denis Kasak eeebb43e32 Move mutating methods from RoomMember to Room.
The `update_profile` method cannot live in `RoomMember` since that
operation needs information which only exists in `Room` (for instance,
it needs other members in order to perform display name disambiguation).

Leaving other mutating methods on `RoomMember` (like `update_power` and
`update_presence`) then seemed illogical so they were all moved into
`Room`.

In addition, a small refactoring was done to remove
`did_update_presence` and `update_presence` since their existence
doesn't make much sense anymore and it saves us from repeating work.
Their function is now done in `receive_presence_event`.

Also, several docstrings were corrected and reworded.
2020-07-10 11:08:38 +02:00
Denis Kasak 5f49dab1fa Correct docstring. 2020-07-10 11:05:51 +02:00
Denis Kasak 6cacf83661 Add (failing) test for displayname disambiguation on profile updates. 2020-07-10 11:05:51 +02:00
Denis Kasak 599c1ba98f Add test to ensure member is only treated as joined or invited, not both. 2020-07-10 11:05:51 +02:00
Denis Kasak c2ec69cf44 Style fixes (comment grammar and correctness, whitespace). 2020-07-10 11:05:51 +02:00
Denis Kasak 32bdcede0c Small refactoring to simplify member_disambiguations. 2020-07-10 11:05:51 +02:00
Denis Kasak 9af48920f6 Add some TODOs and FIXMEs. 2020-07-10 11:05:51 +02:00
Damir Jelić 283cf0d782 matrix-sdk: Bump all our deps. 2020-07-07 15:52:08 +02:00
Damir Jelić 98d36d0ef0 base: Only update the tracked users when we're done with the state and timeline. 2020-07-07 15:48:28 +02:00
Damir Jelić 11aa306de2 base: Swap around the store creation.
The state store creates directory structure but the crypto store does
not.

This can lead to confusing errors where we require a directory to be
created by the library user but it gets created by the library.
2020-07-06 10:54:01 +02:00
Denis Kasak ff5f638b60 Remove member from invited_members when he joins. 2020-07-03 15:35:54 +02:00
Denis Kasak 2a0c6c6474 Add test and example event to ensure display name changes work correctly. 2020-07-03 15:35:54 +02:00
Denis Kasak c57f076375 Remove unused import. 2020-07-03 15:35:54 +02:00
Denis Kasak 4561b94f33 Remove outdated TODO. 2020-07-03 15:35:54 +02:00
Denis Kasak 9bd8699e18 Get rid of match on membership change in RoomMember::update_profile.
The calling method already did this when it determined that
update_profile should be called so we don't need to repeat it.
2020-07-03 15:35:54 +02:00