Commit graph

196 commits

Author SHA1 Message Date
Daniel Gultsch e38a9cd729 omemo changes: use 12 byte IV, no longer accept auth tag appended to payload 2020-01-18 12:08:03 +01:00
Daniel Gultsch b56f6fbf4c updated screenshots 2020-01-18 09:12:50 +01:00
Daniel Gultsch 80e83f77a7 pulled translations from transifex 2020-01-08 19:05:12 +01:00
Daniel Gultsch b135486bb4 prevent crash when deleting account on servers that don't support omemo 2019-12-02 13:21:18 +01:00
Daniel Gultsch 9276eff1db delete omemo keys when deleting account 2019-09-28 21:52:07 +02:00
Daniel Gultsch abe01f18f2 improved logging for messages waiting for join 2019-09-19 10:00:50 +02:00
Daniel Gultsch 4cd652884c do not finish or repair sessions for untrusted senders
finishing (sending a key transport message in response to pre key message) as
well as reparing sessions will leak resource and availability and might in
certain situations in group chat leak the Jabber ID.

Therefor we disable that. Leaking resource might not be considered harmful by
a lot of people however we have always doing similar things with receipts.
2019-09-15 11:49:58 +02:00
Daniel Gultsch e395da18bf when parsing omemo messages ensure we only find one element 2019-09-12 12:43:11 +02:00
Daniel Gultsch 9bf5fb98ac show language in message bubble if multiple language variants were received
XML and by inheritence XMPP has the feature of transmitting multiple language
variants for the same content. This can be really useful if, for example, you
are talking to an automated system. A chat bot could greet you in your own
language.

On the wire this will usually look like this:

```xml
<message to="you">
  <body>Good morning</body>
  <body xml:lang="de">Guten Morgen</body>
</message>
```

However receiving such a message in a group chat can be very confusing and
potentially dangerous if the sender puts conflicting information in there and
different people get shown different strings.

Disabeling support for localization entirely isn’t an ideal solution as on
principle it is still a good feature; and other clients might still show a
localization even if Conversations would always show the default language.

So instead Conversations now shows the displayed language in a corner of the
message bubble if more than one translation has been received.

If multiple languages are received Conversations will attempt to find one in
the language the operating system is set to. If no such translation can be
found it will attempt to display the English string.

If English can not be found either (for example a message that only has ru and
fr on a phone that is set to de) it will display what ever language came first.

Furthermore Conversations will discard (not show at all) messages with with
multiple bodies of the same language. (This is considered an invalid message)

The lanuage tag will not be shown if Conversations received a single body in
a language not understood by the user. (For example operating system set to
'de' and message received with one body in 'ru' will just display that body as
usual.)

As a guide line to the user: If you are reading a message where it is important
that this message is not interpreted differently by different people (like a
vote (+1 / -1) in a chat room) make sure it has *no* language tag.
2019-09-12 10:12:51 +02:00
Daniel Gultsch b2ea91909b introduced type private_file_message to handle attachments in PMs. fixes #3372 2019-04-27 11:46:43 +02:00
Daniel Gultsch ad64058d25 hide lock icon in channels; modify muc user context 2019-02-07 13:18:42 +01:00
Daniel Gultsch dac088428c handle decrypting/encrypting of omemo messages with duplicate device ids 2019-01-05 15:34:19 +01:00
Daniel Gultsch bcfd3f20c2 postpone prekey removal and republish to after mam 2018-12-05 10:42:56 +01:00
Daniel Gultsch c02676ea4c implement self healing omemo
after receiving a SignalMessage that can’t be decrypted because of broken sessions
Conversations will attempt to grab a new pre key bundle and send a new PreKeySignalMessage
wrapped in a key transport message.
2018-12-02 14:41:29 +01:00
Daniel Gultsch 1de385dcb9 set access model to open when publishing avatar. fixes #3291 2018-11-25 20:58:48 +01:00
Daniel Gultsch 2e0b26a5ab revert 12 byte ivs that got commited by accident 2018-11-21 16:44:24 +01:00
Daniel Gultsch 03d5aa8aeb show 'show password' toggle for all magically created accounts. make quicksy accounts magically created 2018-11-20 21:33:43 +01:00
Daniel Gultsch 409bf3c0cb use bouncycastle provider up to api 27
apparently using conscrypt on Android below version 7? throws an exception when using 16 byte IVs.
so we now use BC when ever possible (excluding api 28)

we don’t know why Conscrypt behaves differently on various android versions
2018-10-11 04:36:37 +02:00
Daniel Gultsch ce46b36c33 go back to 16 byte IVs for OMEMO
clients like Dino can’t handle 12 byte IVs
2018-10-04 22:32:42 +02:00
Daniel Gultsch bfa63e13c5 added a few TODOs in regards to the handling of inactive devices 2018-10-04 18:48:45 +02:00
Daniel Gultsch 23282484d6 prevent race condition when fetching device ids 2018-10-03 22:03:47 +02:00
Daniel Gultsch 4c08ba8d03 use 12 byte IV for omemo and http upload 2018-10-03 17:44:48 +02:00
Daniel Gultsch 7fa8811f64 refresh ui after device list update only if list has changed 2018-10-03 11:53:02 +02:00
Daniel Gultsch 67e7d2cf9e do not use BC provider on android 22+ 2018-09-17 17:47:36 +02:00
Daniel Gultsch a1f933924c open trust key screen when download is in progress 2018-07-07 08:53:11 +02:00
Daniel Gultsch e6532e739a do not include white listed domains in room list. fixes #3082 2018-06-22 20:25:50 +02:00
Daniel Gultsch c8a0bf7090 OMEMO: remove omemo device from own list if bundle is broken 2018-05-28 22:08:20 +02:00
Daniel Gultsch 18a8a6e5ac make session completion work with untrusted devices as well 2018-05-09 09:24:31 +02:00
Daniel Gultsch 7b3d871f28 improved logging for node configuration change 2018-05-03 22:44:28 +02:00
Daniel Gultsch d3b20544c9 do not invoke onPushFailed() on timeout 2018-05-01 17:35:29 +02:00
Daniel Gultsch 35020702fb very much unoptimized search functionality 2018-04-26 13:22:31 +02:00
Daniel Gultsch 7fd25abea2 code cleanup in AxolotlService.fetchDeviceIds() 2018-04-12 08:55:50 +02:00
Daniel Gultsch aff2b33e27 load currently open conversation faster 2018-04-11 18:07:40 +02:00
Daniel Gultsch bda95bc571 make error message for 'not encrypted for this device' 2018-04-04 18:21:22 +02:00
Daniel Gultsch 85caaf084b create dedicated exception for not encrypted for this device 2018-04-04 09:11:53 +02:00
Daniel Gultsch dccd3f1c8e figure out fallbacks with omemo source id 2018-03-22 13:26:35 +01:00
Daniel Gultsch 64f040b631 offer a more convienient way to disable omemo from trust keys dialog 2018-03-15 13:37:08 +01:00
Daniel Gultsch 1accf9d961 migrate to xmpp-addr 2018-03-07 22:30:36 +01:00
Daniel Gultsch a33984acc5 encrypt muc PM only to actual recipient 2018-01-27 20:55:43 +01:00
Daniel Gultsch be70eb5650 improvements for self messages
* fix omemo in group chats w/o participants
* don't create two axolotl messages when messaging self
* fix read marker for self messages
2018-01-27 10:45:05 +01:00
Daniel Gultsch 3e111e7f58 allow axolotl header to be empty in empty mucs 2018-01-27 09:15:47 +01:00
Daniel Gultsch eee5d885ba make chat markers opportunistic in private mucs 2018-01-22 23:21:24 +01:00
Daniel Gultsch 6009b8ebf0 disable offline messages. postpone prekey handling until after mam catchup 2018-01-19 18:17:13 +01:00
Daniel Gultsch 036dd82698 properly handle key transport messages. use prekeyparsing only when that attribute is set 2018-01-18 20:58:55 +01:00
Daniel Gultsch 127557df56 show pep as available if omemo_all_access has been installed on server 2017-12-18 13:47:53 +01:00
Daniel Gultsch e0ec6ad8b6 fixed omemo device list not getting annouced on empty list 2017-12-18 13:18:58 +01:00
Daniel Gultsch 782b8fb744 fixup for pep omemo notification dedup 2017-12-13 20:28:30 +01:00
Daniel Gultsch 328c6dea0f fixed workaround that allowed us to expire devices 2017-12-07 14:47:21 +01:00
Daniel Gultsch 75b4926025 fixed publish-options migration 2017-12-01 18:54:39 +01:00
Daniel Gultsch 013822fe82 excute db read and writes on different threads 2017-11-16 15:53:03 +01:00