Despite some twists and obstacles I have finally managed to implement decent OTR support for KTp as my GSOC project. Now you can have encrypted conversations along with other features:
- three ways of peer authentication
- OTR policy settings
- management of known fingerprints
- per account private key generation
When it comes to the insides, there is a completely separate DBus service responsible for the entire encryption and providing access to the settings. When explicitly called it starts acting as a proxy on a given channel. KTp itself is only responsible for turning it on and reflecting the new functionality in its GUI. Thanks to such approach support for OTR can be relatively easy adapted in other client applications living in the Telepathy’s ecosystem too.
Here is some short demo presenting the changes I have made. It shows the conversation between the two clients: KTp on the left and Pidgin on the right. On the top you can see Google Talk web client recording all exchanged messages.