Synechist: Regarding your op announcement (So, there's a new OP...):
Under the section "XCHAT MESSAGE PROCESS", step 3), recommend the following change for clarity:
change from: ".....encrypts a packet containing his/her public key and sends to user B."
to: ".....encrypts a packet using user B's public key and sends to user B."
My first impression was that that step 3 implied it was (or could be interrupted as) user A's public key. It's only when you get to step 4 that it becomes clear that it's user B's public key being used to encrypt the packet.
Nice one. Yes.
Though it'll need to be "user A encrypts a packet that contains his/her public key, using user B's public key."
Yes, that's better