[OTR-dev] OTRv3 instance tag and session switching

Ian Goldberg ian at cypherpunks.ca
Fri Dec 6 09:39:41 EST 2013

On Fri, Dec 06, 2013 at 10:24:07AM +0200, Marin Dzhigarov wrote:
>  Hello all,
> I'm a developer who is trying to better understand the implementation behind the OTRv3 protocol and more specifically - the instance tags.
> According to the protocol draft:
> "For version 3 messages, someone receiving a message with a recipient instance tag specified that does not equal their own should discard the message and optionally warn the user. The exception here is the D-H Commit Message where the recipient instance tag may be 0, indicating that no particular instance is specified."
> In Pidgin, however, it does not seem that these messages are being discarded - seems to me that instead of discarding them Pidgin is somehow maintaining a separate session for every logged in instance and very session maintains its own Authentication state and Message state, keys, macs etc.
> But that is not specified in the OTR protocol and I was wondering how is all of this accomplished? Are you doing something off the protocol?
> Could someone please help me with that?
> P.S (I'm not looking for code examples or anything like this, just the basic idea behind).

Pidgin keeps separate state when it sees different *sender* instance
tags.  (Indeed, that's the whole point of the new instance tags.)  But
it discards received messages with unexpected *recipient* instance tags.
(Or at least it's supposed to be; are you seeing something different?)

   - Ian

More information about the OTR-dev mailing list