libstrophe is a minimal XMPP library written in C. It has almost no external dependencies, only an XML parsing library (expat or libxml are both supported). It is designed for both POSIX and Windows systems.
Quick Links
License
libstrophe is dual licensed under the MIT or GPLv3 licenses.
Author
libstrophe was originally created by Jack Moffitt and has been maintained by him until 2014. After that Dmitry Podgorny was the major maintainer until 2022, when he passed the maintainer hat over to Steffen Jaeckel.
Features
-
Authentication with RFC4422
SASL
.Supported methods are:
PLAIN
,DIGEST-MD5
,ANONYMOUS
,SCRAM-SHA{1,256,512}
,SCRAM-SHA{1,256}-PLUS
,EXTERNAL
.Legacy authentication via
_xmpp_auth1
can be enabled if required (disabled by default). -
Secure connection with TLS via GnuTLS, LibreSSL, OpenSSL or SCHANNEL (only on Windows).
Supported mechanisms are:
STARTTLS
on port5222
and legacy mode on port5223
. - TLS client authentication with XEP-0178
SASL EXTERNAL
(only with GnuTLS, LibreSSL or OpenSSL). - Stream Management with XEP-0198.
- Stream Compression with XEP-0138.
- DNS resolution via an internal implementation or c-ares.
Documentation
Older versions of the documentation can be found here