From 79c9e8681dc292dd24a695e5cabd51fb80b9cba5 Mon Sep 17 00:00:00 2001 From: jow Date: Thu, 19 Jan 2012 15:43:12 +0000 Subject: [PATCH] Add srtp lib package 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 git-svn-id: svn://svn.openwrt.org/openwrt/packages@29807 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- libs/srtp/Makefile | 63 +++++++++++++ .../1003_fix_mips_namespace_collision.patch | 59 ++++++++++++ .../patches/1005_fix_data_alignment.patch | 33 +++++++ libs/srtp/patches/1007_update_Doxyfile.patch | 94 +++++++++++++++++++ libs/srtp/patches/1008_shared-lib.patch | 55 +++++++++++ libs/srtp/patches/series | 4 + 6 files changed, 308 insertions(+) create mode 100644 libs/srtp/Makefile create mode 100644 libs/srtp/patches/1003_fix_mips_namespace_collision.patch create mode 100644 libs/srtp/patches/1005_fix_data_alignment.patch create mode 100644 libs/srtp/patches/1007_update_Doxyfile.patch create mode 100644 libs/srtp/patches/1008_shared-lib.patch create mode 100644 libs/srtp/patches/series diff --git a/libs/srtp/Makefile b/libs/srtp/Makefile new file mode 100644 index 000000000..65c2fa62f --- /dev/null +++ b/libs/srtp/Makefile @@ -0,0 +1,63 @@ +# +# Copyright (C) 2011 OpenWrt.org +# Copyright (C) 2011 Victor Seva +# +# 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 +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 index 000000000..2aa2f8748 --- /dev/null +++ b/libs/srtp/patches/1003_fix_mips_namespace_collision.patch @@ -0,0 +1,59 @@ +Description: Fix MIPS namespace collision +Author: Thiemo Seufer +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 index 000000000..9443de211 --- /dev/null +++ b/libs/srtp/patches/1005_fix_data_alignment.patch @@ -0,0 +1,33 @@ +Description: Fix data alignment +Author: "Martin Guy" +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 index 000000000..8e71da5ac --- /dev/null +++ b/libs/srtp/patches/1007_update_Doxyfile.patch @@ -0,0 +1,94 @@ +Description: Update Doxyfile and header template +Author: Jonas Smedegaard +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 index 000000000..4e70a0ddd --- /dev/null +++ b/libs/srtp/patches/1008_shared-lib.patch @@ -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 index 000000000..a18e7ff53 --- /dev/null +++ b/libs/srtp/patches/series @@ -0,0 +1,4 @@ +1003_fix_mips_namespace_collision.patch +1005_fix_data_alignment.patch +1007_update_Doxyfile.patch +1008_shared-lib.patch