diff --git a/contrib/src/zrtpcpp/SHA512SUMS b/contrib/src/zrtpcpp/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..280834116aa1f966fce6c7ac2be414497db01db7
--- /dev/null
+++ b/contrib/src/zrtpcpp/SHA512SUMS
@@ -0,0 +1 @@
+fbadb826ae26b2729e10d64197c58d545e0e6e7bd9524775cbf4838d2ce3e6ae559932b5c20bb579a3e0cab33abd50251adf129e761cfdcf3fb25347e71ffc36  libzrtpcpp-2.3.4.tar.gz
diff --git a/contrib/src/zrtpcpp/forcegcrypt.patch b/contrib/src/zrtpcpp/forcegcrypt.patch
new file mode 100644
index 0000000000000000000000000000000000000000..194d802430e79a895ad40365bb29cfc19db0eca5
--- /dev/null
+++ b/contrib/src/zrtpcpp/forcegcrypt.patch
@@ -0,0 +1,11 @@
+--- a/CMakeLists.txt.orig   2014-05-06 19:35:46.443707232 -0400
++++ b/CMakeLists.txt    2014-05-06 19:13:04.235686028 -0400
+@@ -107,7 +107,7 @@
+ endif()
+ 
+ # now get info about crypto libraries
+-pkg_check_modules(OPENSSL libcrypto>=0.9.8)
++#pkg_check_modules(OPENSSL libcrypto>=0.9.8)
+ if (OPENSSL_FOUND)
+   set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${OPENSSL_INCLUDE_DIRS}) #update include files search directory
+   check_include_files(openssl/bn.h HAVE_OPENSSL_BN_H)
diff --git a/contrib/src/zrtpcpp/rules.mak b/contrib/src/zrtpcpp/rules.mak
new file mode 100644
index 0000000000000000000000000000000000000000..849d70d034e385f700b191e2709d5fb5a0133560
--- /dev/null
+++ b/contrib/src/zrtpcpp/rules.mak
@@ -0,0 +1,31 @@
+# ZRTPCPP
+ZRTPCPP_VERSION := 2.3.4
+ZRTPCPP_URL := $(GNUTELEPHONY)/libzrtpcpp-$(ZRTPCPP_VERSION).tar.gz
+
+PKGS += zrtpcpp
+ifeq ($(call need_pkg,'libzrtpcpp >= 2.0.0'),)
+PKGS_FOUND += zrtpcpp
+endif
+
+DEPS_zrtpcpp = ccrtp ucommon gcrypt
+
+ZRTPCPP_CMAKECONF := -DBUILD_STATIC:BOOL=ON \
+                     -DBUILD_SHARED:BOOL=OFF \
+                     -DBUILD_SHARED_LIBS:BOOL=OFF
+
+$(TARBALLS)/libzrtpcpp-$(ZRTPCPP_VERSION).tar.gz:
+	$(call download,$(ZRTPCPP_URL))
+
+.sum-zrtpcpp: libzrtpcpp-$(ZRTPCPP_VERSION).tar.gz
+
+zrtpcpp: libzrtpcpp-$(ZRTPCPP_VERSION).tar.gz .sum-zrtpcpp
+	$(UNPACK)
+	$(APPLY) $(SRC)/zrtpcpp/forcegcrypt.patch
+	$(APPLY) $(SRC)/zrtpcpp/threadcbsupdate.patch
+	$(APPLY) $(SRC)/zrtpcpp/standardheader.patch
+	$(MOVE)
+
+.zrtpcpp: zrtpcpp toolchain.cmake
+	cd $< && $(HOSTVARS) $(CMAKE) . $(ZRTPCPP_CMAKECONF)
+	cd $< && $(MAKE) install VERBOSE=1
+	touch $@
diff --git a/contrib/src/zrtpcpp/standardheader.patch b/contrib/src/zrtpcpp/standardheader.patch
new file mode 100644
index 0000000000000000000000000000000000000000..9f5faedcf252a6f59515dae6f8517ed43318e90d
--- /dev/null
+++ b/contrib/src/zrtpcpp/standardheader.patch
@@ -0,0 +1,10 @@
+--- a/src/libzrtpcpp/crypto/gcrypt/InitializeGcrypt.cpp.orig	2014-06-25 20:40:20.000000000 -0400
++++ b/src/libzrtpcpp/crypto/gcrypt/InitializeGcrypt.cpp	2014-06-25 20:40:32.000000000 -0400
+@@ -17,7 +17,7 @@
+ 
+ #include <stdio.h>
+ 
+-#include <malloc.h>
++#include <stdlib.h>
+ #include <errno.h>
+ #include <gcrypt.h>
diff --git a/contrib/src/zrtpcpp/threadcbsupdate.patch b/contrib/src/zrtpcpp/threadcbsupdate.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6a9ddb29dd34e317f2fd7cd577c6e41d12960c04
--- /dev/null
+++ b/contrib/src/zrtpcpp/threadcbsupdate.patch
@@ -0,0 +1,16 @@
+--- a/src/libzrtpcpp/crypto/gcrypt/InitializeGcrypt.cpp.orig	2014-06-12 17:36:14.367890764 -0400
++++ b/src/libzrtpcpp/crypto/gcrypt/InitializeGcrypt.cpp	2014-06-12 17:36:52.899889626 -0400
+@@ -68,9 +68,12 @@
+ }
+  
+ static struct gcry_thread_cbs gcry_threads = { 
+-    GCRY_THREAD_OPTION_PTHREAD, NULL,
++    GCRY_THREAD_OPTION_PTHREAD,
++#if 0
++    NULL,
+     gcry_thread_mutex_init, gcry_thread_mutex_destroy,
+     gcry_thread_mutex_lock, gcry_thread_mutex_unlock 
++#endif
+ };
+ 
+ #else