* #35924 (zrtp): switch to libzrtpcpp
diff --git a/jni/libzrtp/sources/srtp/SrtpHandler.h b/jni/libzrtp/sources/srtp/SrtpHandler.h
new file mode 100644
index 0000000..1cc420b
--- /dev/null
+++ b/jni/libzrtp/sources/srtp/SrtpHandler.h
@@ -0,0 +1,112 @@
+/*
+  Copyright (C) 2012 Werner Dittmann
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+*/
+
+#include <stdint.h>
+
+class CryptoContext;
+class CryptoContextCtrl;
+
+/**
+ * @brief SRTP and SRTCP protect and unprotect functions.
+ *
+ * The static methods take SRTP or SRTCP crypto contexts, a pointer uint8_t buffer
+ * that must contain an RTP/SRTP packet and perform the actions necessary to protect
+ * the RTP/RTCP packet or to unprotect the SRTP/SRTCP packet.
+ * 
+ * The methods assume that the buffer contains all protocol relevant fields (SSRC,
+ * sequence number etc.) in network order.
+ *
+ * When encrypting the buffer must be big enough to store additional data, usually
+ * 4 - 14 bytes, depending on how the application configured the authentication parameters.
+ *
+ * @author Werner Dittmann <Werner.Dittmann@t-online.de>
+ */
+class SrtpHandler
+{
+public:
+    /**
+     * @brief Protect an RTP packet.
+     *
+     * @param pcc the SRTP CryptoContext instance
+     *
+     * @param buffer the RTP packet to protect
+     *
+     * @param length the length of the RTP packet data in bytes
+     *
+     * @param newLength the length of the resulting SRTP packet data in bytes
+     *
+     * @return @c true if protection was successful, @c false otherwise
+     */
+    static bool protect(CryptoContext* pcc, uint8_t* buffer, size_t length, size_t* newLength);
+
+    /**
+     * @brief Unprotect a SRTP packet.
+     *
+     * @param pcc the SRTP CryptoContext instance
+     *
+     * @param buffer the SRTP packet to unprotect
+     *
+     * @param length the length of the SRTP packet data in bytes
+     *
+     * @param newLength the length of the resulting RTP packet data in bytes
+     *
+     * @return an integer value
+     *         - 1 - success
+     *         - -1 - SRTP authentication failed
+     *         - -2 - SRTP replay check failed
+     */
+    static int32_t unprotect(CryptoContext* pcc, uint8_t* buffer, size_t length, size_t* newLength);
+
+    /**
+     * @brief Protect an RTCP packet.
+     *
+     * @param pcc the SRTCP CryptoContextCtrl instance
+     *
+     * @param buffer the RTCP packet to protect
+     *
+     * @param length the length of the RTCP packet data in bytes
+     *
+     * @param newLength the length of the resulting SRTCP packet data in bytes
+     *
+     * @return @c true if protection was successful, @c false otherwise
+     */
+    static bool protectCtrl(CryptoContextCtrl* pcc, uint8_t* buffer, size_t length, size_t* newLength);
+
+    /**
+     * @brief Unprotect a SRTCP packet.
+     *
+     * @param pcc the SRTCP CryptoContextCtrl instance
+     *
+     * @param buffer the SRTCP packet to unprotect
+     *
+     * @param length the length of the SRTCP packet data in bytes
+     *
+     * @param newLength the length of the resulting RTCP packet data in bytes
+     *
+     * @return an integer value
+     *         - 0 - illegal packet (too short, not a valid RTP header byte), dismiss it
+     *         - 1 - success
+     *         - -1 - SRTCP authentication failed
+     *         - -2 - SRTCP replay check failed
+     */
+    static int32_t unprotectCtrl(CryptoContextCtrl* pcc, uint8_t* buffer, size_t length, size_t* newLength);
+
+private:
+    static bool decodeRtp(uint8_t* buffer, int32_t length, uint32_t *ssrc, uint16_t *seq, uint8_t** payload, int32_t *payloadlen);
+
+};
\ No newline at end of file