GNU ZRTP4J is a Java implementation of Phil Zimmermann's ZRTP specification and is available under the GPL license. The corresponding C++ implementation is GNU ZRTP.

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 of 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 set up ZRTP messages 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 that 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 JMF or its free software conterpart 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.


[2010] – GNU ZRTP4J implements the basic ZRTP as specified in the document draft-zimmermann-avt-zrtp.

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 whether they are required by the community.

The current version is compatible and was tested to work with Zfone beta (dated 08-Feb-2009).


The GNU ZRTP4J main repository is hosted on Github.

A modified version is distributed in GNU libzrtpcpp and may be downloaded from or one of its mirrors. Please use a nearby mirror if you can.


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 Howto are also available. Both are mainly addressing the C++ implementation, however the Java implementation follows the same structure and implements the same functions.

  • Jitsi (formerly SIP Communicator) supports secure voice and video.

This page was retrieved from the Wayback Machine archive of the GNU Telephony website (licensed under the Free Documentation License 1.3), and slightly edited.