1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00
Commit Graph

5186 Commits

Author SHA1 Message Date
Paul Fariello
6d39f49f57 Fix server_event unit tests
roster_update_presence now requires that
roster_process_pending_presence() has been called. Otherwise presence
are set to pending and not processed yet.
2019-04-17 14:19:31 +02:00
Paul Fariello
973a05d15a Handle presence received before roster
Presence of contact not found in roster are filtered out.
But sometimes roster is received after a first few presences.

We choose to store presences until we receive roster and then process
this presences.

Fixes #1050
2019-04-17 14:19:31 +02:00
Michael Vetter
3d3eabb63f
Merge pull request #1062 from paulfariello/feature/omemo-policy
Add OMEMO policy
2019-04-17 14:13:43 +02:00
Paul Fariello
21ae946896 Handle MUC anonymous state when auto starting OMEMO
When auto joining a MUC we don't have access to required information so
we just don't start OMEMO at this time.

Once we receive disco info we then try to start OMEMO.
2019-04-17 14:03:14 +02:00
Paul Fariello
a6eb0d2c43 Handle missing real jid in OMEMO encrypted MUC
This should never happens since we should ensure MUC is Non-Anonymous
before enabling OMEMO.

But we should neither segfault if this happens.
2019-04-17 14:03:14 +02:00
Paul Fariello
3ef9123ccb Fix OTR unit test after account_new API change 2019-04-17 14:03:14 +02:00
Paul Fariello
7df7e05639 Fix unit test after account_new API change 2019-04-17 14:03:14 +02:00
Paul Fariello
5f015e32b2 Add OMEMO policy
There is 3 policy:

- manual: OMEMO session are only started manually
- automatic: OMEMO session are only started if they have been started
  manually before
- always: OMEMO session are always started unless they have been ended
  manually before

Closes #1040 and fixes #1052
2019-04-17 14:03:14 +02:00
Michael Vetter
9574127177
Merge pull request #1066 from paulfariello/hotfix/OMEMO-ensure-muc-is-nonanonymous
Ensure MUC is Non-Anonymous before starting OMEMO
2019-04-17 13:58:45 +02:00
Paul Fariello
8c71a74afe Ensure MUC is Non-Anonymous before starting OMEMO
Store MUC anonymous type in mucwin for that purpose.

Fixes #1065
2019-04-17 13:56:27 +02:00
Michael Vetter
2eaec58c41
Merge pull request #1064 from paulfariello/hotfix/omemo-crypto-generation-too-long
Alert about long OMEMO cryptographic generation
2019-04-17 10:16:22 +02:00
Paul Fariello
fc8dc328a4 Alert about long OMEMO cryptographic generation
Fixes #1055
2019-04-17 09:55:16 +02:00
Michael Vetter
02d0f7fc38
Merge pull request #1061 from paulfariello/hotfix/handle-message-without-id-in-muc
Handle message without id in MUC
2019-04-15 10:43:39 +02:00
Michael Vetter
a22ddb3306
Merge pull request #1054 from paulfariello/hotfix/omemo_disconnect_while_not_loaded
Don't touch OMEMO cryto keys on disconnect if OMEMO wasn't loaded
2019-04-15 10:42:40 +02:00
Paul Fariello
9c0a395408 Don't persist OMEMO {signed,}prekey cleaning on disconnect
We should not remove signed prekey and prekey from persistent storage
when cleaning OMEMO store on disconnect.
2019-04-14 22:03:16 +02:00
Paul Fariello
94a39b2e9b Handle malformed OMEMO identity.txt
If OMEMO identity.txt is malformed just abort loading.
User should be able to call `/omemo gen` again.
2019-04-14 22:03:16 +02:00
Paul Fariello
c33d8e5f0b Don't unload OMEMO cryto on disconnect if OMEMO wasn't loaded
If OMEMO wasn't loaded, removing key would create empty identity.txt
file. Then at load time it would segfault profanity.

Another commit should fix load of malformed identity.txt.
2019-04-14 22:03:16 +02:00
Paul Fariello
cdc0290a59 Handle message without id in MUC
Some clients seems to send message without id.
2019-04-14 21:53:26 +02:00
Michael Vetter
0857b5ee4e Set locale in docker container
Install libmicrohttpd which are used for (currently disabled) functional
tests).
Install glibc-locale to get the locales.

Unit test for `prof_whole_occurrences_tests` uses UTF-8 character and
fails without proper locale being set.
2019-04-14 10:39:24 +02:00
Michael Vetter
b40fcf248c Add omemo_start_sessions to unittest stub 2019-04-14 00:02:17 +02:00
Michael Vetter
9cd5dfbdaa Move travis from Ubuntu to docker+openSUSE
Travis supports only quite old Ubuntu releases.
They don't ship with libsignal-protocol-c and not with a recent enough
libgrcypt.
We could build libsignal-protocol-c manually but for libgcrypt it's more
annoying.
Let us switch to Docker and use openSUSE Tumbleweed, which is rolling
release) and thus have up to date libs.
2019-04-13 23:18:44 +02:00
Michael Vetter
4532735956 travis: Build libgcrypt by hand
Ubuntu xenial only has 1.6.x and we need 1.7.
2019-04-13 11:03:25 +02:00
Michael Vetter
f73500ae32 Use xenial on travis 2019-04-13 10:34:44 +02:00
Michael Vetter
c7d7e70b8d
Merge pull request #1056 from paulfariello/feature/omemo_travis
Build OMEMO support in travis
2019-04-13 10:27:20 +02:00
Paul Fariello
b2dfdc7509 Add libgcrypt minimum version in configure error log 2019-04-13 00:41:24 +02:00
Paul Fariello
c00ab0351d Look for gcry_md_extract (libgcrypt >= 1.7.0) 2019-04-13 00:35:28 +02:00
Paul Fariello
991153d8bd test 2019-04-13 00:27:10 +02:00
Paul Fariello
28334d2955 Build with libcmocka from packages 2019-04-12 22:02:50 +02:00
Paul Fariello
13ae6f4efd Add manual build of libsignal in travis 2019-04-12 16:42:28 +02:00
Michael Vetter
0f5df134ed Update travis from Ubuntu trusty to bionic 2019-04-12 16:18:35 +02:00
Michael Vetter
fa8ffe3e56 Update travis
Add OMEMO dependencies.
Build with and without OMEMO enabled.
2019-04-12 16:11:27 +02:00
Michael Vetter
17a17a84a9
Merge pull request #1053 from paulfariello/feature/random_resource
Add random string at the end of the default resource
2019-04-12 15:58:12 +02:00
Paul Fariello
9714d1d867 Add random string at the end of the default resource
When connecting for the first time or when creating a new account don't
use only 'profanity' as default resource.

Some server don't support having 2 connection with same resource. Using
profanity as default lead to deconnections.
2019-04-12 15:49:54 +02:00
Michael Vetter
0dfe61c01c Revert "Set C99 standard in configure"
This reverts commit 7be6158c80.
2019-04-12 15:36:11 +02:00
Michael Vetter
7be6158c80 Set C99 standard in configure
We already use uint_32 from stdint.h which AFAIK is C99.
I seem to remember there is more C99 in the code. Let's explicitly
define it here.

Also fixes build for https://github.com/boothj5/profanity/pull/1053
2019-04-12 12:18:51 +02:00
Michael Vetter
61df0c8e85
Merge pull request #1039 from paulfariello/feature/omemo
Add basic OMEMO support.
2019-04-11 10:58:22 +02:00
Paul Fariello
f75e1d7a7b Support contact name in /omemo fingerprint command 2019-04-10 17:24:56 +02:00
Paul Fariello
ad21021ce7 Fix issue with first encrypted message
When decrypting first message with prekey, libsignal wants to remove
used prekey from storage. Return value on success should be 0.

We used to return number of deleted keys. Thus libsignal was considering
we failed to remove the key and we were ignoring plaintext.
2019-04-10 17:24:56 +02:00
Paul Fariello
df648ba959 Try to start sessions with every jid in roster 2019-04-10 17:24:56 +02:00
Paul Fariello
f9b2fdc7db OMEMO should be written uppercase 2019-04-10 17:24:56 +02:00
Paul Fariello
381d85bcca Fix build on travis 2019-04-10 17:24:56 +02:00
Paul Fariello
277e8dc901 Add /omemo char command 2019-04-10 17:24:56 +02:00
Paul Fariello
0bc660400b Automatically starts OMEMO if one identity is trusted 2019-04-10 17:24:56 +02:00
Paul Fariello
25eb138d0b Rework trusted fingerprint storage
Stop using "jid:device_id" keys. And move long term storage to its own
file: trust.txt.
2019-04-10 17:23:46 +02:00
Paul Fariello
4ad6904216 Wait for discovery end to publish omemo devicelist and bundle
Add sv_ev_connection_features_received for that purpose
2019-04-10 17:23:46 +02:00
Paul Fariello
edbc15fa2b Don't build OMEMO by default 2019-04-10 17:23:46 +02:00
Paul Fariello
01e96769c2 Prefix static function with _ 2019-04-10 17:23:46 +02:00
Paul Fariello
0f4dd61776 Ensure pre keys are generated if missing from long term storage 2019-04-10 17:23:46 +02:00
Paul Fariello
e69f947547 Rework MUC reflected message filtering
Reflected messages can't be filtered by nick only otherwise you might
ignore messages comming from you on another devices.

Consequently we maintain a list of sent messages id in mucwin.
To be sure the id will be correctly reflected we use the origin-id
stanza.
2019-04-10 17:23:46 +02:00
Paul Fariello
e7be3a605b Add OMEMO in prefs command 2019-04-10 17:23:46 +02:00