lurch icon indicating copy to clipboard operation
lurch copied to clipboard

Problem with interaction of pidgin+lurch and "Psi+" with omemo plugin

Open rosso- opened this issue 3 years ago • 8 comments

Hi. I'm trying to talk with another client, which is "Psi+" v1.4.1453 with omemo plugin v2.7 at Windows7. It doesn't work.

There was an error decrypting an OMEMO message addressed to this device. See the debug log for details.

<message lang='en' to='[email protected]/24637619222826490897601430' from='[email protected]/-' type='chat' id='ab34a'>
	<active xmlns='http://jabber.org/protocol/chatstates'/>
	<request xmlns='urn:xmpp:receipts'/>
	<encrypted xmlns='eu.siacs.conversations.axolotl'>
		<header sid='703017658'>
			<iv>SgdH5IosZyk3VQOg</iv>

			<key rid='59122785' prekey='true'>MwgHEiEFefusJ9yaMK+cIweHqoNQySXpJp1w88KJ4CoB9OZqVSYaIQUMJA++uwYP8qTgp+gkebuimUe/iPAxtM/GgsHBMeQbASJiMwohBe6WrEwhKU+V1re33OLVk4D+ewr9tEFxHRJBpI9wLMouEAkYACIwSFDtj6xVWNrWceYmJKugAwHkNCRG8cECoOizNwMTmrfG/GH3qwKX0Sg+FhRtvFzG4VI0ZCLMu5kouuWczwIwAA==</key>

</header>

		<payload>F9bDwnV/T8wM2hCWKg==</payload>

</encrypted>
	<store xmlns='urn:xmpp:hints'/>
	<encryption xmlns='urn:xmpp:eme:0' namespace='eu.siacs.conversations.axolotl'/>
</message>

Can we debug it somehow?

rosso- avatar Nov 05 '20 13:11 rosso-

hi again, and thanks for the report.

are you on the dev branch? it uses a more recent version for the libomemo submodule, which includes a fix required for Dino (client) compatibility. if you're not, it's worth a try.

if that doesn't help (or you're already on the dev branch anyway), i'm sure there's a way to debug it. is there more output in the debug log after the xml dump of the message that happens on receive?

gkdr avatar Nov 06 '20 06:11 gkdr

This plugin was built from dev branch. Here it is: https://pastebin.com/tmhGZcXV . Near line 900 there is something interesting.

rosso- avatar Nov 06 '20 21:11 rosso-

libomemo returns "malformed xml", not entirely sure why right now but it might be the legacy namespace eu.siacs.conversations.axolotl (should be omemo:0 or something like that currently).

edit: maybe i'm wrong, after looking at the XEP history it probably was the other way round. weird. i'll just plug it into some tests later.

ps: are you aware that your sent messages seem to be in plaintext?

gkdr avatar Nov 09 '20 18:11 gkdr

Not linked to 12-byte IVs?

Neustradamus avatar Nov 12 '20 10:11 Neustradamus

It was a test conversation, so I've tried crypted and unencrypted messages.

rosso- avatar Nov 16 '20 13:11 rosso-

i failed to reproduce it. the line in the debug log points to exactly one line: when omemo_message_prepare_decryption() is called on the incoming message. the error code -12000 is OMEMO_ERR_MALFORMED_XML, which only happens if it can't find one of message, encrypted, or header nodes, whiich are obviously there. maybe mxml gets confused by the lang attribute? which version of it do you have insalled?

just for reference, i added the following test in test_libomemo.c, you could navigate in the submodule and do the same:

void test_issue(void ** state) {
  (void) state;

  char * msg = "<message xml:lang='ru' to='[email protected]/14433697384696207361175319042' from='[email protected]/123' type='chat' id='ac6da'>"
    "<active xmlns='http://jabber.org/protocol/chatstates'/>"
    "<request xmlns='urn:xmpp:receipts'/>"
    "<encrypted xmlns='urn:xmpp:omemo:0'>"
      "<header sid='1001292924'>"
        "<iv>49JLbGlAkHDh6rbb</iv>"
        "<key prekey='true' rid='59122785'>MwhAEiEFWXJNjJfwpO3A4t/q/1zQG5wWqYKWZbHDTuRDNjlUrXQaIQUcTUuhJQnKksHsjccRTzkpTwpvaSTH4cegcmXlQK7xDiJiMwohBT8s8EyzoJyBbcQ7i7j52wl8ayPU9MamC/Qi9ZTITGINEDcYACIwGWypOs61B2Egd3/ykN7xwcGjALDIGfVs6Oon2eafYwjlFIE3DekMrcafyqxMN1B3xIz+rzgR2mso/Ii63QMwAA==</key>"
        "<key rid='1936111278'>MwohBZita0Lxu8U+w/MPwwYNuLm+Xf3i2aidNIiz/xPsq0guEAIYASIw9TiOYZwAM2U1ZTiAZHd8szcDCAHrY5k8r8PFC6Sd6MO+DTK29U1bJJP7Qt7Sm5XXrjwpK1zYHPA=</key>"
      "</header>"
      "<payload>7A==</payload>"
    "</encrypted>"
    "<store xmlns='urn:xmpp:hints'/>"
    "<encryption xmlns='urn:xmpp:eme:0' namespace='eu.siacs.conversations.axolotl'/>"
    "</message>";

  omemo_message * msg_p;
  assert_int_equal(omemo_message_prepare_decryption(msg, &msg_p), 0);

  omemo_message_destroy(msg_p);
}

(don't forget to add it to tests[] in the test file's main() function if you do)

gkdr avatar Nov 21 '20 20:11 gkdr

@rosso-, @gkdr: It is possible to check with Psi+ 1.5.1911+?

Neustradamus avatar May 18 '24 11:05 Neustradamus