From GNU Telephony

Jump to: navigation, search


distributed as:libzrtpcpp
external links:
license used:GNU GPL 3.0
required by:SIP Communicator
related to:GNU ZRTP


GNU ZRTP is a Java implementation of Phil Zimmermann's ZRTP specification and is available under the GPL license.

The complete GNU ZRTP4J 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 operating system and consists of the ZRTP protocol state engine, the ZRTP protocol messages, and the GNU ZRTP4J engine. The GNU ZRTP4J 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 RTP/SRTP implementation and provides operating system specific services such as timers, or send data functions. The current GNU ZRTP4J distribution contains glue code to bind GNU ZRTP4J to Java JMF or the open source alternative FMJ.

The JMF/FMJ specific glue code provides the application interface to set up and control the behavior of GNU ZRTP4J. Applications never access the GNU ZRTP4J core directly.


GNU ZRTP4J implements the basic ZRTP as specified in the document draft-zimmermann-avt-zrtp. You may access this via the Zfone page.

GNU ZRTP4J does not support some additional and optional features of ZRTP such as Pre-shared mode, PBX enrollement, and SAS Signature. 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 beta (dated 08-Feb-2009) (see Zfone project site).


A reference manual is distributed with the source package of GNU ZRTP4J. It is automatically generated from the sources through Javadoc.

A ZRTP FAQ and a GNU ZRTP4J How To are also available. Both are mainly addressing the C++ implementation, however the Java implementation follows the same structure and implements the same functions.


GNU ZRTP4J is distributed in GNU libzrtpcpp and may be downloaded from

Related Projects

Personal tools