Michael Vetter
2a952cb4c5
Expand omemo error message
2020-02-21 10:30:09 +01:00
Michael Vetter
0089fbcf0a
omemo: switch to 12 byte IV
...
We decrypt both 12 and 16 bytes.
And send 12 instead of 16 bytes now.
Close https://github.com/profanity-im/profanity/issues/1272
2020-02-17 14:04:24 +01:00
Michael Vetter
11b6e1bfa0
xep-0308: enable corrections for outgoing encrypted messages
2020-02-12 08:54:12 +01:00
Paul Fariello
a52e3ea1d8
Add context to autocomplete_with_func and use it for omemo trust command
...
Fix #1068
2020-01-31 10:07:08 +01:00
Paul Fariello
8d1202efbd
Add support for 12 bytes IV
...
16 bytes IV should be used. Some clients can't use it so we should also
support decrypting 12 bytes IV.
Fix #1253
2020-01-20 14:41:18 +01:00
Paul Fariello
84506cbaeb
Use OMEMO for offline MUC members ( #1242 )
2020-01-20 14:28:13 +01:00
Michael Vetter
be13e98fe7
Update my Copyright to 2020
2020-01-03 19:52:31 +01:00
Michael Vetter
46fd7150e5
Add vim modeline
2019-11-13 12:11:05 +01:00
Michael Vetter
ab60a61fb9
omemo: use lower case to log info
2019-08-23 10:18:20 +02:00
Michael Vetter
976c2ec524
Fix typo in OMEMO materials log
2019-08-23 10:14:04 +02:00
Michael Vetter
1b2e71faac
Fix memleak in save_identity()
...
I don't see a reason for strdupping here.
2019-07-23 08:34:46 +02:00
Michael Vetter
a9db705faa
Fix potential leak in omemo_untrust()
2019-07-23 08:34:46 +02:00
Michael Vetter
fade378fee
Dont use not needed strdup() in save_identity()
...
I don't see a reason for strdupping here.
2019-07-23 08:34:46 +02:00
Michael Vetter
e540ccd50e
Remove dead assignments
2019-07-22 14:27:14 +02:00
Paul Fariello
c22df13d95
Dirty fix libgcrypt memleak
2019-07-11 14:25:42 +02:00
Paul Fariello
b7144d82fe
Enable secure memory in gcrypt initialisation
2019-07-11 11:01:07 +02:00
Paul Fariello
b110da9a92
Fix various OMEMO memleaks
2019-07-10 17:32:23 +02:00
Michael Vetter
0410802753
Free omemo_ctx.device_list_handler
2019-07-04 10:47:50 +02:00
Michael Vetter
d0047c8376
Dont initialize omemo autocompleter twice
...
We already do this in omemo_init() no need to do it again in
omemo_on_connect().
2019-07-04 10:38:24 +02:00
Michael Vetter
199162b11a
Add omemo_close function
...
We call omemo_init() when starting profanity and should have an
omemo_close() at exit.
For now we free the fingerprint autocompleter in there.
Fixes valgrind:
```
==13226== 24 bytes in 1 blocks are definitely lost in loss record 2,855
of 6,958
==13226== at 0x483677F: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==13226== by 0x48AD39: autocomplete_new (autocomplete.c:57)
==13226== by 0x4AB89F: omemo_init (omemo.c:127)
==13226== by 0x42C283: _init (profanity.c:206)
==13226== by 0x42BFF3: prof_run (profanity.c:98)
==13226== by 0x4B25E6: main (main.c:172)
```
Regards https://github.com/profanity-im/profanity/issues/1131
2019-07-04 10:30:56 +02:00
Paul Fariello
f081766913
Mark messages received from a session as trusted
2019-06-25 18:43:15 +02:00
Paul Fariello
44d16e9141
Add prof_message_t to wrap all message attributes
...
Probably missing copy of body to plain in carbon and privmessage.
Only covers the incoming message path because goal is OMEMO decryption
of untrusted message.
Cover some of the log functions but not all.
2019-06-20 14:30:42 +02:00
Paul Fariello
a650ecc67d
Add trusted state after OMEMO decryption
...
Use it to print message on red background if not trusted.
2019-06-20 14:29:55 +02:00
Paul Fariello
2604786cb6
Decrypt all incoming OMEMO msg
...
Trust all key as long as it's for reading. This code isn't multithread
safe.
2019-06-20 14:29:55 +02:00
Michael Vetter
29e2d16e14
Free contacts in omemo_start_sessions()
2019-06-19 23:18:45 +02:00
Michael Vetter
0d698d4898
Free OMEMO session store upon disconnect
2019-06-19 23:15:24 +02:00
Michael Vetter
e4b007c9da
Add copyright to omemo code
2019-06-17 10:47:56 +02:00
Paul Fariello
5731a7c472
Remove OMEMO session when untrusting a fingerprint
...
We have to store known_devices in a long term fashion otherwise we might
not be able to delete session if it is remove from device list server
side.
2019-06-07 23:43:40 +02:00
Paul Fariello
04cd1b4409
Correctly handle malformed OMEMO messages
...
Fix #1101
2019-05-23 13:12:02 +02:00
Michael Vetter
722cb5fdc3
OMEMO: Initialize result in omemo_automatic_start
...
This is actually not needed because result will always be set.
hartmann had problems building profanity on OpenBSD and he proposed this
patch.
Let's use it to make the compiler happy there.
2019-04-29 11:32:22 +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
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
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
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
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
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
5cd2b8dc9d
Permanently store pre keys
2019-04-10 17:23:46 +02:00
Paul Fariello
562302846a
Handle bundle publication error on publish-options
...
We try to reconfigure node and publish again.
If it fails again then we give up.
2019-04-10 17:23:45 +02:00
Paul Fariello
904528b490
Ensure signal context is built on connection
...
We can't keep it between two connection because signal context is
specific to a given account.
2019-04-10 17:23:45 +02:00
Paul Fariello
075d4cf35b
Don't use glib 2.58 func
2019-04-10 17:23:45 +02:00
Paul Fariello
678bff9169
Add fingerprint autocompletion
2019-04-10 17:12:31 +02:00
Paul Fariello
3d8f47a724
Use /omemo fingerprint to show contact fingerprints
...
Don't print fingerprints when they are received
2019-04-10 17:12:31 +02:00
Paul Fariello
91ee289c77
Add support for disconnect in OMEMO
2019-04-10 17:12:31 +02:00
Paul Fariello
9a66e74986
Handle absent muc member
2019-04-10 17:12:31 +02:00