Tag: caps

Entity Capabilities support in libpurple

Here a long overdue and promised update on my work on libpurple's XMPP protocol plugin.

Currently I'm finishing support for XEP-0115 version 1.5 in the protocol plugin. I've decided to only support latest version of the XEP because it's most secure. However, what does this mean exactly?

Well, former caps worked so you give a version string and so called short names with your presence stanzas. Though shortnames are really obsolete and we already have a registry for features identified by their namespace and the former version of the protocol didn't provide any amount of security. One could tell you that it's Psi or Tkabber and send a whole different feature set and all clients with that version would be associated with the wrong feature set of the poisoned cache.

Version 1.5 doesn't have these flaws. Whether your contact has a client distributing its capabilities using SHA-1 or MD5 hash, both are supported by the future libpurple. Sadly for contacts having clients not supporting caps it will simply mean a bit more disco requests. For contacts using clients supporting latest version everything will go smoothly and as soon as their hash is confirmed by own recalculation it's added to the own cache.

In the end Entity Capabilities pave the way for painless and user-friendly modern instant messaging features like voice and video over IP, using Jingle, and gaming applications. In the end libpurple based clients will soon join the row of Entity Capabilities supporting clients, which currently is already supported by the latest versions of Gajim and Tkabber.

Next on the list after finishing caps support. A little bit of ad-hoc support cleanup and after that a BOSH implementation for libpurple.


Posted with tags , , , ,