I observed the following while doing muc testing on aTalk.
-
While the muc conference is on going between 3 members i.e.
a. swordfish@atalk.org (the monitoring device - aTalk on Note08)
b. leopard@atalk.org (aTalk)
b. hawk@atalk.org (Conversations) -
Then swordfish invites swan@atalk.org into muc. swan is a client installed on gajim on ubuntu.
swan does not have any previously established omemo session with swordfish. Therefore the identity table contains no active record of swan. Hence it does not get included in the omemo message recipients list, since getDevicesOf(swan@atalk.org) returns zero active device.
public OmemoMessage.Sent encrypt(Set<BareJid> recipients, String message)
throws CryptoFailedException, UndecidedOmemoIdentityException,
InterruptedException, SmackException.NotConnectedException,
SmackException.NoResponseException, SmackException.NotLoggedInException
{
synchronized (LOCK) {
LoggedInOmemoManager guard = new LoggedInOmemoManager(this);
Set<OmemoDevice> devices = getDevicesOf(getOwnJid());
for (BareJid recipient : recipients) {
devices.addAll(getDevicesOf(recipient));
}
return service.createOmemoMessage(guard, devices, message);
}
}
-
swordfish muc chat indicates swan has joined the conference when swan accept the invitation.
-
swordfish send a new omemo message and all the 3 memebers in #1 receive the message, decrypt and display correctly.
-
swan receives the encrypted message via server relay omem message. However the omemo message does not contact the rid key for swan, so display only the omemo hint text i.e. I sent you an OMEMO encrypted message but your client doesn’t seem to support that.
I am not sure if the problem is due to Gajim problem. As later I found that the omemo is not working on Gajim until I re-install omemo plugin. However after few repeated tests, i am now unable to get gajim omemo working with aTalk again. I also observed with Gajim is that it always use the same omemoDevice even I re-installed the plugin. I would have thought it should refresh a new omemoDevice on fresh installation. Concern this may have problem on aTalk if gajim keep the deviceID but changes its identity.
Does the omemo protocol design take care the above scenario? If so appreciate if you can give a brief process flow how it takes care the above.
Please comment.