From GNU Telephony
GNU ZRTP is a C++ implementation of Phil Zimmermann's ZRTP specification and is available under the GPL license.
The complete GNU ZRTP implementation consists of two main parts, the GNU ZRTP core and RTP/SRTP implementation specific glue code:
- The GNU ZRTP core is independent of a specific RTP/SRTP stack and the operationg system and consists of the ZRTP protocol state engine, the ZRTP protocol messages, and the GNU ZRTP engine. The GNU ZRTP engine provides methods to setup ZRTP message and to analyze received ZRTP messages, to compute the cryptographic data required for SRTP, and to maintain the required hashes and HMAC.
- The second part of a GNU ZRTP implementation is specific glue code the binds the GNU ZRTP core to the actual RTP/SRTP implementation and provides operating system specific services such as timers, threads, or mutexes. The current GNU ZRTP distribution contains glue code to bind GNU ZRTP to GNU ccRTP.
The RTP/SRTP specific glue code provides the application interface to set up and control the behaviour of GNU ZRTP. Applications never access the GNU ZRTP core directly.
GNU ZRTP C++ implements ZRTP as specified in the RFC6189.
GNU ZRTP C++ does not support some additional and optional features of ZRTP such as Pre-shared mode. However, to keep the external interface as stable as possible I already implemented stubs for the additional features. Some later versions may have these features implemented, depending if they are required by the community.
The current version is compatible and was tested to work with the latest Zfone implementation (see Zfone project site) and myn other VoIP clients that use ZRTP.
A reference manual is distributed with the source package of GNU ZRTP C++. It is automatically generated from the sources through Doxygen. You can look at it online:
The GNU ZRTP main repository is available on Github. The master Git branch of this repository contains the latest release. The code in the Github repository was peer-reviewed several times and many VoIP projects use this code. GNU ZRTP is also available for the PJSIP project and as a Gstreamer filter. Please check the relevant repositories here
Other versions, usually modified or older versions of GNU ZRTP, are in libzrtpcpp and may be downloaded from ftp.gnu.org.
Please make sure that you download the most current version.
GNU ZRTP C++ may be available from other sites in various "package" formats, including GNU/Linux "RPM" and "deb" packages, ".pkg" files under various Unix operating systems, etc. I do encourage people to distribute GNU ZRTP C++ in a package form where convenient for simple installation.
As the current GNU ZRTP maintainer, I am very open to bringing new ideas and code into GNU ZRTP.
GNU ZRTP uses the same e-mail mailing list as GNU ccRTP. This list is available at firstname.lastname@example.org. There is also a web interface for subscribing, modifying subscription options and searching the list archives. Feel free to send any bug reports, patches, and questions to this list.
- Twinkle SIP soft phone - Uses GNU ZRTP as a plugin