Add srtp lib package
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 19 Jan 2012 15:43:12 +0000 (15:43 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 19 Jan 2012 15:43:12 +0000 (15:43 +0000)
This patch adds support for the Secure Real-time Transport Protocol (SRTP)
library libsrtp.

This is needed for closing #8915 ticket.

Signed-off-by: Victor Seva <linuxmaniac@torreviejawireless.org>
SVN-Revision: 29807

libs/srtp/Makefile [new file with mode: 0644]
libs/srtp/patches/1003_fix_mips_namespace_collision.patch [new file with mode: 0644]
libs/srtp/patches/1005_fix_data_alignment.patch [new file with mode: 0644]
libs/srtp/patches/1007_update_Doxyfile.patch [new file with mode: 0644]
libs/srtp/patches/1008_shared-lib.patch [new file with mode: 0644]
libs/srtp/patches/series [new file with mode: 0644]

diff --git a/libs/srtp/Makefile b/libs/srtp/Makefile
new file mode 100644 (file)
index 0000000..65c2fa6
--- /dev/null
@@ -0,0 +1,63 @@
+# 
+# Copyright (C) 2011 OpenWrt.org
+# Copyright (C) 2011 Victor Seva <linuxmaniac@torreviejawireless.org>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=srtp
+PKG_VERSION:=1.4.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=@SF/srtp
+PKG_MD5SUM:=9b449edb011c934ca97009e7e0566d22
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+
+include $(INCLUDE_DIR)/package.mk
+
+TARGET_CFLAGS += $(FPIC)
+
+define Package/libsrtp
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=Secure Real-time Transport Protocol (SRTP) library
+  URL:=http://sourceforge.net/projects/srtp
+  MAINTAINER:=Victor Seva <linuxmaniac@torreviejawireless.com>
+endef
+
+define Package/libsrtp/description
+       Open-source implementation of the Secure Real-time Transport
+       Protocol (SRTP) originally authored by Cisco Systems, Inc.
+       It is available under a BSD-style license.
+endef
+
+define Build/Configure
+       $(call Build/Configure/Default, \
+               --disable-stdout \
+               --enable-syslog \
+       )
+endef
+
+define Build/Compile
+       $(MAKE) -C $(PKG_BUILD_DIR) \
+               DESTDIR="$(PKG_INSTALL_DIR)" all install
+endef
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/srtp $(1)/usr/include/
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsrtp.{a,so*} $(1)/usr/lib/
+endef
+
+
+define Package/libsrtp/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsrtp.so.* \
+               $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libsrtp))
diff --git a/libs/srtp/patches/1003_fix_mips_namespace_collision.patch b/libs/srtp/patches/1003_fix_mips_namespace_collision.patch
new file mode 100644 (file)
index 0000000..2aa2f87
--- /dev/null
@@ -0,0 +1,59 @@
+Description: Fix MIPS namespace collision
+Author: Thiemo Seufer <ths@networkno.de>
+Origin: vendor, http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=24;bug=439976
+Bug-Debian: http://bugs.debian.org/439976
+Last-Update: 2010-02-28
+--- a/test/srtp_driver.c
++++ b/test/srtp_driver.c
+@@ -338,7 +338,7 @@
+   if (do_codec_timing) {
+     srtp_policy_t policy;
+     int ignore;
+-    double mips = mips_estimate(1000000000, &ignore);
++    double mips_est = mips_estimate(1000000000, &ignore);
+     crypto_policy_set_rtp_default(&policy.rtp);
+     crypto_policy_set_rtcp_default(&policy.rtcp);
+@@ -350,33 +350,33 @@
+     policy.allow_repeat_tx = 0;
+     policy.next = NULL;
+-    printf("mips estimate: %e\n", mips);
++    printf("mips estimate: %e\n", mips_est);
+     printf("testing srtp processing time for voice codecs:\n");
+     printf("codec\t\tlength (octets)\t\tsrtp instructions/second\n");
+     printf("G.711\t\t%d\t\t\t%e\n", 80, 
+-           (double) mips * (80 * 8) / 
++           (double) mips_est * (80 * 8) / 
+          srtp_bits_per_second(80, &policy) / .01 );
+     printf("G.711\t\t%d\t\t\t%e\n", 160, 
+-           (double) mips * (160 * 8) / 
++           (double) mips_est * (160 * 8) / 
+          srtp_bits_per_second(160, &policy) / .02);
+     printf("G.726-32\t%d\t\t\t%e\n", 40, 
+-           (double) mips * (40 * 8) / 
++           (double) mips_est * (40 * 8) / 
+          srtp_bits_per_second(40, &policy) / .01 );
+     printf("G.726-32\t%d\t\t\t%e\n", 80, 
+-           (double) mips * (80 * 8) / 
++           (double) mips_est * (80 * 8) / 
+          srtp_bits_per_second(80, &policy) / .02);
+     printf("G.729\t\t%d\t\t\t%e\n", 10, 
+-           (double) mips * (10 * 8) / 
++           (double) mips_est * (10 * 8) / 
+          srtp_bits_per_second(10, &policy) / .01 );
+     printf("G.729\t\t%d\t\t\t%e\n", 20, 
+-           (double) mips * (20 * 8) /
++           (double) mips_est * (20 * 8) /
+          srtp_bits_per_second(20, &policy) / .02 );
+     printf("Wideband\t%d\t\t\t%e\n", 320, 
+-           (double) mips * (320 * 8) /
++           (double) mips_est * (320 * 8) /
+          srtp_bits_per_second(320, &policy) / .01 );
+     printf("Wideband\t%d\t\t\t%e\n", 640, 
+-           (double) mips * (640 * 8) /
++           (double) mips_est * (640 * 8) /
+          srtp_bits_per_second(640, &policy) / .02 );
+   }
diff --git a/libs/srtp/patches/1005_fix_data_alignment.patch b/libs/srtp/patches/1005_fix_data_alignment.patch
new file mode 100644 (file)
index 0000000..9443de2
--- /dev/null
@@ -0,0 +1,33 @@
+Description: Fix data alignment
+Author: "Martin Guy" <martinwguy@yahoo.it>
+Origin: vendor, http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;bug=470505
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=1912057&group_id=38894&atid=423799
+Bug-Debian: http://bugs.debian.org/470505
+Last-Update: 2011-05-30
+--- a/test/srtp_driver.c
++++ b/test/srtp_driver.c
+@@ -1195,7 +1195,6 @@
+  * These packets were made with the default SRTP policy.
+  */
+-
+ err_status_t
+ srtp_validate() {
+   uint8_t srtp_plaintext_ref[28] = {
+@@ -1204,14 +1203,14 @@
+     0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 
+     0xab, 0xab, 0xab, 0xab
+   };
+-  uint8_t srtp_plaintext[38] = {
++  uint8_t srtp_plaintext[38] __attribute__((aligned(4))) = {
+     0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, 
+     0xca, 0xfe, 0xba, 0xbe, 0xab, 0xab, 0xab, 0xab,
+     0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 
+     0xab, 0xab, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, 
+     0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+   };
+-  uint8_t srtp_ciphertext[38] = {
++  uint8_t srtp_ciphertext[38] __attribute__((aligned(4))) = {
+     0x80, 0x0f, 0x12, 0x34, 0xde, 0xca, 0xfb, 0xad, 
+     0xca, 0xfe, 0xba, 0xbe, 0x4e, 0x55, 0xdc, 0x4c,
+     0xe7, 0x99, 0x78, 0xd8, 0x8c, 0xa4, 0xd2, 0x15, 
diff --git a/libs/srtp/patches/1007_update_Doxyfile.patch b/libs/srtp/patches/1007_update_Doxyfile.patch
new file mode 100644 (file)
index 0000000..8e71da5
--- /dev/null
@@ -0,0 +1,94 @@
+Description: Update Doxyfile and header template
+Author: Jonas Smedegaard <dr@jones.dk>
+Last-Update: 2010-02-28
+--- a/doc/Makefile.in
++++ b/doc/Makefile.in
+@@ -25,6 +25,7 @@
+               echo "*** Sorry, can't build doc outside source dir"; exit 1; \
+       fi
+       sed 's/LIBSRTPVERSION/$(version)/' header.template > header.tex
++      doxygen -u
+       doxygen
+       sed 's/\subsection/\section/' latex/index.tex > latex/index.tmp
+       mv latex/index.tmp latex/index.tex
+@@ -38,7 +39,7 @@
+       cp latex/refman.pdf crypto.pdf
+ clean:
+-      rm -rf latex/ header.tex
++      rm -rf latex/ header.tex Doxyfile.bak
+       for a in * ; do                                 \
+               if [ -f "$$a~" ] ; then rm -f $$a~; fi; \
+         done;
+--- a/doc/header.template
++++ b/doc/header.template
+@@ -6,28 +6,40 @@
+ % 
+ \documentclass[letterpaper]{book}
+ \usepackage{makeidx}
+-\usepackage{fancyhdr}
+ \usepackage{graphicx}
+ \usepackage{multicol}
+ \usepackage{float}
++\usepackage{listings}
++\usepackage{color}
++\usepackage{ifthen}
++\usepackage[table]{xcolor}
+ \usepackage{textcomp}
+ \usepackage{alltt}
+-\usepackage{times}
+-\usepackage{graphicx}
+-\ifx\pdfoutput\undefined
+-\usepackage[ps2pdf,
++\usepackage{ifpdf}
++\ifpdf
++\usepackage[pdftex,
+             pagebackref=true,
+             colorlinks=true,
+-            linkcolor=blue
++            linkcolor=blue,
++            unicode
+            ]{hyperref}
+ \else
+-\usepackage[pdftex,
++\usepackage[ps2pdf,
+             pagebackref=true,
+             colorlinks=true,
+-            linkcolor=blue
++            linkcolor=blue,
++            unicode
+            ]{hyperref}
++\usepackage{pspicture}
+ \fi
++\usepackage[utf8]{inputenc}
++\usepackage{mathptmx}
++\usepackage[scaled=.90]{helvet}
++\usepackage{courier}
++\usepackage{sectsty}
++\usepackage[titles]{tocloft}
+ \usepackage{doxygen}
++\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=3,numbers=left }
+ \makeindex
+ \setcounter{tocdepth}{1}
+ \renewcommand{\footrulewidth}{0.4pt}
+@@ -59,7 +71,9 @@
+ \selectfont
++\renewcommand{\familydefault}{\sfdefault}
+ \begin{document}
++\hypersetup{pageanchor=false}
+ \begin{titlepage}
+ \vspace*{4cm}
+ %\begin{center}
+@@ -107,9 +121,6 @@
+ \clearemptydoublepage
+ \pagenumbering{roman}
+ \tableofcontents
+-%\clearemptydoublepage
+-
+ \clearemptydoublepage
+ \pagenumbering{arabic}
+-
+-
++\hypersetup{pageanchor=true}
diff --git a/libs/srtp/patches/1008_shared-lib.patch b/libs/srtp/patches/1008_shared-lib.patch
new file mode 100644 (file)
index 0000000..4e70a0d
--- /dev/null
@@ -0,0 +1,55 @@
+Description: Hack build routines to compile shared library
+Author: loki_val and solar
+Origin: http://sources.gentoo.org/viewcvs.py/gentoo-x86/net-libs/libsrtp/files/libsrtp-1.4.4-shared.patch
+Last-Update: 2010-03-19
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -15,7 +15,7 @@
+ .PHONY: all test build_table_apps
+-all: test 
++all: libsrtp.so test
+ runtest: build_table_apps test
+       @echo "running libsrtp test applications..."
+@@ -67,7 +67,7 @@
+ # implicit rules for object files and test apps
+ %.o: %.c
+-      $(COMPILE) -c $< -o $@
++      $(COMPILE) -fPIC -c $< -o $@
+ %$(EXE): %.c
+       $(COMPILE) $(LDFLAGS) $< -o $@ $(SRTPLIB) $(LIBS)
+@@ -105,6 +105,9 @@
+       ar cr libsrtp.a $^
+       $(RANLIB) libsrtp.a
++libsrtp.so: $(srtpobj) $(cryptobj) $(gdoi)
++      $(CC) $(LDFLAGS) -shared -Wl,-soname,libsrtp.so.0 -o libsrtp.so.0.0  $^
++
+ # libcryptomath.a contains general-purpose routines that are used to
+ # generate tables and verify cryptoalgorithm implementations - this
+ # library is not meant to be included in production code
+@@ -198,6 +201,11 @@
+       cp $(srcdir)/crypto/include/*.h $(DESTDIR)$(includedir)/srtp
+       if [ "$(srcdir)" != "." ]; then cp crypto/include/*.h $(DESTDIR)$(includedir)/srtp; fi
+       if [ -f libsrtp.a ]; then cp libsrtp.a $(DESTDIR)$(libdir)/; fi
++      if [ -f libsrtp.so.0.0 ]; then \
++              cp libsrtp.so.0.0 $(DESTDIR)$(libdir)/; \
++              ln -s libsrtp.so.0.0 $(DESTDIR)$(libdir)/libsrtp.so.0; \
++              ln -s libsrtp.so.0.0 $(DESTDIR)$(libdir)/libsrtp.so; \
++      fi
+ uninstall:
+       rm -f $(DESTDIR)$(includedir)/srtp/*.h
+@@ -206,7 +214,7 @@
+ clean:
+       rm -rf $(cryptobj) $(srtpobj) $(cryptomath) TAGS \
+-        libcryptomath.a libsrtp.a core *.core test/core
++        libcryptomath.a libsrtp.a libsrtp.so.0.0 core *.core test/core
+       for a in * */* */*/*; do                        \
+               if [ -f "$$a~" ] ; then rm -f $$a~; fi; \
+         done;
diff --git a/libs/srtp/patches/series b/libs/srtp/patches/series
new file mode 100644 (file)
index 0000000..a18e7ff
--- /dev/null
@@ -0,0 +1,4 @@
+1003_fix_mips_namespace_collision.patch
+1005_fix_data_alignment.patch
+1007_update_Doxyfile.patch
+1008_shared-lib.patch