Encrypted Sessions and XMPP support for SIM-IM

Introduction
This project aims to create fully-featured implementation of experimental Encrypted Sessions (XEP-0116) enhancement of XMPP protocol into multi-IM client SIM-IM. During the course of development, I also plan to fix bugs present in XMPP support in SIM (basic working XMPP support is there, contrary to what name of this project would suggest), as well as add new features that will improve usability of XMPP support in this client (administrator tools, better service support, presence detection fixes, fixes of more than one logins on one account, etc...). This will, however, be side effect of my work, main focus will remain on Encrypted sessions support, which is something that XMPP network presently lacks, because feel of security is essential for most power users and should be for all users, and XMPP network might not be accepted well by some people in that area (mostly unencrypted server-to-server links, XMPP servers running on not completely trusted machines, etc.). It should be allowed to encrypt traffic in such manner that it is not decrypted (and decryptable) on any servers it passes on its way.

Project schedule
As I have written in my proposal, during the end of May and entire June, there are exams on our university and I will spent quite a lot of time learning and doing exams, so I cannot commit myself to this project fully during that time, however, I hope I will find enough time to work on this project. During first week of the project, I plan to familiarize myself with internals of XMPP protocol and Encrypted sessions enhancement and I will study XMPP parts of SIM source. Then, I will work on designing the project, and when designed, start coding. Detailed schedule will be issued as soon as design part is over.

Week 1 (24.5. to 30.5.)

 * Deeply within exam stuff and will remain so for several more weeks. Studying specifications of Encrypted sessions protocol, some of it's dependencies and of XMPP itself.
 * Looking around SIM XMPP code and core.
 * Got permission to use branch in SIM-IM main repository from SIM-IM maintainer.

Week 2 (31.5. to 6.6.)

 * Unfortunately, this whole week has been taken up by exams. I didn't have almost any free time, I had to finish several school projects and take 2 quite difficult exams. At least I was able to setup subversion branch, but that's not what I'd imagine under Summer of Code. I hope next week I will do some real work, but seeing my exam schedule, I don't really know.

Week 3 (7.6. to 13.6.)

 * Finally some free time, yet still mostly occupied by exams that will not end until late June. Still finishing projects. Aaargh :-(.
 * I finally got thru reading both important XMPP RFCs and even better, I understood them and I found XMPP protocol even more capable and better than I first suspected. Well, XML namespace stuff is quite complicated (entire XML namespace model has been causing me headaches since I first stumbled upon it year ago, but it is powerful and well worth it), and I still don't remember URI of stream namespace. Fortunately, doesn't matter, that's what my pastefile is for ;-). I was then playing with my XMPP server via telnet and was disappointed to know that some things I learned just don't work there. Mainly SASL auth stuff... maybe that's better, I can't do CRAM-MD5 in my head anyway. So I went to observing XML console in Psi and Network monitor in SIM. I learned few things there, combined with looking up relevant XEPs that were in use there.

Week 4 (13.6. to 20.6.)

 * Fixed one small annoying vCard bug in SIM, some servers didn't like that SIM set iq@to in vCard set, so vCard ended up empty. Psi doesn't add @to there, so I inspired myself there. I don't know if this is the right solution, I found XEP somehow unclear there.
 * Found some XMPP address weird case sensitivity issues in SIM, but was unable to find solution in protocol specs. Will talk to mentor about this in few days and now will concentrate on writing at least some infrastructure code. Another exam ahead, so I will have to multiplex.

Relevant links

 * XEP-0116
 * WebSVN access to project repository
 * Anonymous SVN access: svn://svn.berlios.de/sim-im/branches/branch-esession


 * XMPP Core RFC
 * XMPP IM & presence RFC
 * Advanced Message Processing