Gajim 0.12 ESessions UI

I'm willing to accept that XMPP ESessions are dead; as far as I can tell there's no interest in other implementations, and some form of client-to-client TLS is looking promising (though I'm a bit worried about requiring Jingle).

Implementing ESessions hasn't been a total loss, though. I think we've built a good casual crypto UI model for Gajim, and I would like to see something similar to it in other clients.

Here's an overview. Please ignore the specific text used in the screenshots, I know it sucks. Suggestions would be appreciated.

UI Flow

If the other client supports end-to-end encryption, an encrypted session is negotiated in the background as soon as you start typing.

The shield icon is from Tango. It's not a great metaphor, but I think that it's better than a padlock. The question mark is our own addition. We use a different icon when the contact has been authenticated.

When you click the shield icon, you get this dialog. The idea is to provide the basic information about the session; something like Firefox's Page Info Security dialog. If we were using public keys for authentication, that info would appear here.

When you click "Verify" on the session info dialog, you get this dialog. Clicking "Yes" marks the session (and all future sessions using the same shared retained secret) as authenticated. Clicking "No" just closes the dialog.

I think the core idea is to encrypt by default without requiring the user's intervention (even for authentication), but to make it clear what that means and make it easy to authenticate at any time.