dino icon indicating copy to clipboard operation
dino copied to clipboard

No OMEMO offered even though contact uses it

Open RalfJung opened this issue 7 years ago • 11 comments

For one of my contacts, dino offers no OMEMO encryption (and shows no OMEMO key in "contact details"), all the while Conversations can send OMEMO-encrypted messages to that contact just fine. dino is also happy to received and decrypt OMEMO-encrypted messages from that contact, it just refuses to use encryption for outgoing messages.

I guess you need some additional debug information for this, but have no idea how to collect that information...

RalfJung avatar Nov 07 '17 09:11 RalfJung

It seems that more generally speaking, dino is extremely slow at noticing OMEMO keys of my contact. Conversations by now sees both keys (laptop+phone) of my contact, but dino still insists that there is only one key and doesn't show OMEMO messages my contact sends that are encrypted with the other key. I did restart dino, to no avail.

EDIT: After another restart, at least dino now shows the messages my contact sends on his laptop. It doesn't show his 2nd key though, so I still cannot send him messages. It seems like Dino's OMEMO key handling is still rather fragile...

I am seeing messages like this in the log:

Nov 07 11:21:13 r-thinktop im.dino.desktop[10236]: NS URI eu.siacs.conversations.axolotl not found.
Nov 07 11:21:13 r-thinktop im.dino.desktop[10236]: NS URI http://jabber.org/protocol/pubsub#event not found.

but I can't tell if that's even about the same contact.

RalfJung avatar Nov 07 '17 10:11 RalfJung

You can check what Dino currently "knows" about an omemo contact by running

sqlite3 -header -column ~/.local/share/dino/omemo.db "select * from identity_meta where address_name = '%jid%'"

You can log omemo related xmpp traffic to the terminal by using the switch

--print-xmpp="....list|....bundle|message.encrypted.payload"

The NS URI not found messages seem to be a bug, would be great if you can run dino using a debugger, add a breakpoint at namespace_state.vala:59 and do a stack trace at the point it halts.

mar-v-in avatar Nov 07 '17 11:11 mar-v-in

Might be related: https://github.com/dino/dino/issues/112

I always need to wait for the contact to go online and them restart dino. The problem is, that then I cannot send other contacts offline messages, if they went offline till then.

NicoHood avatar Nov 08 '17 19:11 NicoHood

also interesting about this bug is.

I can send an omemo encrypted message with conversations to a contact of mine. that message gets encrypted and synced into dino but, still i cannot activate omemo in dino for that contact.

the query above shows no result for that contact, and theres also no omemo keys in the contact details within omemo.

iit seems that this https://github.com/dino/dino/issues/112#issuecomment-329333036 could be a very good thing todo since source of all seems to be that dino doesnt correctly gets all the keys it needs.

my server: Prosody 0.9.12 contact server : Prosody dont know which version (dismail.de) conversations: 1.22.1 dino-git r198.f6ac5bb-1 ( arch repo)

client of my contact: chatsecure

have the same also with multiple other useres. it seems like i cannot send omemo encrypted messages to anyone i have not written to with dino while they were online once..

paskalito avatar Dec 10 '17 16:12 paskalito

Since some days it happens that for one of my contact I cannot send him encrypted messages anymore. Normally this was fixed if he is online and I restart dino, but this doesnt happen anymore. We are both using conversations.im servers, he is using the conversations app. In the contact details one omemo fingerprint is listed. He can send me encrypted messages, I cannot send him anymore.

NicoHood avatar Dec 11 '17 16:12 NicoHood

Still a problem with current master.

RalfJung avatar Jan 18 '18 14:01 RalfJung

I encountered the same problem. My contact in dino showed only one old key and none of the new ones.

Dino version: 4a3cef89fd7ebf15bfc6a108ac31f36e469cf80a

Thanks to https://github.com/dino/dino/issues/206#issuecomment-342455205 I looked in the omemo database:

identity_id  address_name      device_id   identity_key_public_base64                    trust_level now_active  last_active
-----------  ----------------  ----------  --------------------------------------------  -----------  ----------  -----------
1            [email protected]      1826948132  BYArPDiCfo8Xz3kl/zF4auh+2bNgHTkMAjuIy8LEXdFe  2            1           1577267230 

Somehow the key was still marked as active. After deleting this entry with

sqlite3 -header -column ~/.local/share/dino/omemo.db "delete from identity_meta where address_name = '[email protected]'"

and restarting dino, all current keys were received and the encryption works now:

identity_id  address_name      device_id   identity_key_public_base64                    trust_level  now_active  last_active
-----------  ----------------  ----------  --------------------------------------------  -----------  ----------  -----------
1            [email protected]      44480768    BWAo5xMSbsjCDjW9JxPlfJqkfQqeKizwqho8o/RJ8vAt  1            1           1577521510 
1            [email protected]      966748987   BVJyh+NBsBMPfddrE52iYeK6Lbbc4zOZ3dzy8JALZvVt  1            1           1577521510 
1            [email protected]      1826948132  BYArPDiCfo8Xz3kl/zF4auh+2bNgHTkMAjuIy8LEXdFe  1            1           1577521510 
1            [email protected]      99240223    Bca70y/mdZwpzERZLZPgnvkVWIBZ6ZD2Vr4guhTXPUJd  1            1           1577521510 

Can someone confirm this ?

theatischbein avatar Dec 28 '19 08:12 theatischbein

I have a similar issue. I can receive and decrypt messages ok, but not send them encrypted. The key is marked as inactive, even after I trusted it manually. Deleting the key from the database and restarting dino didn't help and shows the same result:

1 [email protected] 1833596376 BSxFgGdobJsPRmsSZUNrKALdG4pTayeSFfv7vSdFE1sz 1 0

After trusting it manually: 1 [email protected] 1833596376 BSxFgGdobJsPRmsSZUNrKALdG4pTayeSFfv7vSdFE1sz 0 0

vzsze avatar Jul 10 '20 08:07 vzsze

Same issue here. A = some client (e.g. profanity) B = dino I can send from A->B using B's fingerprint. B lists A's fingerprint (which can be trusted), albeit as "inactive". The UI doesn't offer an option to manually "activate" A's fingerprint. This can be changed manually in the sqlite database, however. After this, I can send from B to A.

ghost avatar Feb 26 '21 15:02 ghost

Same issue as previous commenters. Had to manually set new keys to "active" in the database in the end.

Edit: this didn't work for long. The keys are marked as inactive again shortly after. :/

raucao avatar Apr 27 '23 12:04 raucao

Same issue. I set sqlite3 -header -column ~/.local/share/dino/omemo.db "update identity_meta set trust_level =1, now_active=1, last_active=xxxxxx where device_id = xxxxxxx;" and restarted. It works now, let's see for how long.

irunonayran avatar Oct 23 '23 10:10 irunonayran