This is useful, but it would be nice if it could be made to use the OpenSSL AES 
implementation instead of its own, which just duplicates functionality and adds 
to image size...

-Philip

On 12/28/11 5:23 AM, Victor Seva wrote:
> 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 <linuxman...@torreviejawireless.org>
> ---
>  libs/srtp/Makefile                                 |   63 +++++++++++++
>  .../1003_fix_mips_namespace_collision.patch        |   59 ++++++++++++
>  libs/srtp/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(+), 0 deletions(-)
>  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 0000000..65c2fa6
> --- /dev/null
> +++ b/libs/srtp/Makefile
> @@ -0,0 +1,63 @@
> +# 
> +# Copyright (C) 2011 OpenWrt.org
> +# Copyright (C) 2011 Victor Seva <linuxman...@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 <linuxman...@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
> index 0000000..2aa2f87
> --- /dev/null
> +++ b/libs/srtp/patches/1003_fix_mips_namespace_collision.patch
> @@ -0,0 +1,59 @@
> +Description: Fix MIPS namespace collision
> +Author: Thiemo Seufer <t...@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
> index 0000000..9443de2
> --- /dev/null
> +++ b/libs/srtp/patches/1005_fix_data_alignment.patch
> @@ -0,0 +1,33 @@
> +Description: Fix data alignment
> +Author: "Martin Guy" <martinw...@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
> index 0000000..8e71da5
> --- /dev/null
> +++ b/libs/srtp/patches/1007_update_Doxyfile.patch
> @@ -0,0 +1,94 @@
> +Description: Update Doxyfile and header template
> +Author: Jonas Smedegaard <d...@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
> index 0000000..4e70a0d
> --- /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 0000000..a18e7ff
> --- /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

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to