tinydtls: new package
authorFabrice Fontaine <fontaine.fabrice@gmail.com>
Thu, 28 Jul 2016 07:14:07 +0000 (09:14 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 30 Jul 2016 13:34:57 +0000 (15:34 +0200)
tinydtls is a library for Datagram Transport Layer Security
(DTLS) covering both the client and the server state machine.
It is implemented in C and provides support for the mandatory
cipher suites specified in CoAP.

https://sourceforge.net/projects/tinydtls

Signed-off-by: Fabrice Fontaine <fabrice.fontaine@orange.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/Config.in
package/tinydtls/0001-Update-Makefile.in-to-allow-cross-compilation.patch [new file with mode: 0644]
package/tinydtls/0002-Fix-compilation-of-tests-directory.patch [new file with mode: 0644]
package/tinydtls/Config.in [new file with mode: 0644]
package/tinydtls/tinydtls.hash [new file with mode: 0644]
package/tinydtls/tinydtls.mk [new file with mode: 0644]

index 0eaeb1b2ed6b55e717a33da2cc962b46df6f4c62..27b934a97f98fd78efdf538a17accc93da77cf73 100644 (file)
@@ -889,6 +889,7 @@ menu "Crypto"
        source "package/nettle/Config.in"
        source "package/openssl/Config.in"
        source "package/polarssl/Config.in"
+       source "package/tinydtls/Config.in"
        source "package/trousers/Config.in"
 endmenu
 
diff --git a/package/tinydtls/0001-Update-Makefile.in-to-allow-cross-compilation.patch b/package/tinydtls/0001-Update-Makefile.in-to-allow-cross-compilation.patch
new file mode 100644 (file)
index 0000000..5e91f2e
--- /dev/null
@@ -0,0 +1,170 @@
+From a6f312dfb4497d5e72664c4772a8b122e25b81d8 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fabrice.fontaine@orange.com>
+Date: Tue, 26 Jul 2016 09:09:53 +0200
+Subject: [PATCH] Update Makefile.in to allow cross-compilation
+
+Use CC, CPP and DESTDIR environment variables passed to configure in Makefile.in files
+Fix definition of LIBS and LDFLAGS (LDFLAGS was set to @LIBS@)
+
+Signed-off-by: Fabrice Fontaine <fabrice.fontaine@orange.com>
+---
+ Makefile.in       | 13 ++++++++-----
+ aes/Makefile.in   |  7 +++++--
+ doc/Makefile.in   |  4 ++--
+ ecc/Makefile.in   |  7 +++++--
+ sha2/Makefile.in  |  7 +++++--
+ tests/Makefile.in |  4 +++-
+ 6 files changed, 28 insertions(+), 14 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 38cc665..7dcd424 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -40,7 +40,9 @@ OBJECTS:= $(patsubst %.c, %.o, $(SOURCES)) $(SUB_OBJECTS)
+ HEADERS:=dtls.h hmac.h dtls_debug.h dtls_config.h uthash.h numeric.h crypto.h global.h ccm.h \
+  netq.h alert.h utlist.h prng.h peer.h state.h dtls_time.h session.h \
+  tinydtls.h
++CC:=@CC@
+ CFLAGS:=-Wall -pedantic -std=c99 @CFLAGS@
++CPP:=@CPP@
+ CPPFLAGS:=@CPPFLAGS@ -DDTLS_CHECK_CONTENTTYPE
+ SUBDIRS:=tests doc platform-specific sha2 aes ecc
+ DISTSUBDIRS:=$(SUBDIRS)
+@@ -48,7 +50,8 @@ DISTDIR=$(top_builddir)/$(package)
+ FILES:=Makefile.in configure configure.in dtls_config.h.in tinydtls.h.in \
+   Makefile.tinydtls $(SOURCES) $(HEADERS)
+ LIB:=libtinydtls.a
+-LDFLAGS:=@LIBS@
++LDFLAGS:=@LDFLAGS@
++LIBS:=@LIBS@
+ ARFLAGS:=cru
+ doc:=doc
+@@ -100,10 +103,10 @@ dist:    $(FILES) $(DISTSUBDIRS)
+       tar czf $(package).tar.gz $(DISTDIR)
+ install:      $(LIB) $(HEADERS) $(SUBDIRS)
+-      test -d $(libdir) || mkdir -p $(libdir)
+-      test -d $(includedir) || mkdir -p $(includedir)
+-      $(install) $(LIB) $(libdir)/
+-      $(install) $(HEADERS) $(includedir)/
++      test -d $(DESTDIR)$(libdir) || mkdir -p $(DESTDIR)$(libdir)
++      test -d $(DESTDIR)$(includedir) || mkdir -p $(DESTDIR)$(includedir)
++      $(install) $(LIB) $(DESTDIR)$(libdir)/
++      $(install) $(HEADERS) $(DESTDIR)$(includedir)/
+       for dir in $(SUBDIRS); do \
+               $(MAKE) -C $$dir install="$(install)" includedir=$(includedir) install; \
+       done
+diff --git a/aes/Makefile.in b/aes/Makefile.in
+index 7c9f6ef..9ff7799 100644
+--- a/aes/Makefile.in
++++ b/aes/Makefile.in
+@@ -28,8 +28,11 @@ top_srcdir:= @top_srcdir@
+ SOURCES:= rijndael.c
+ HEADERS:= rijndael.h
+ OBJECTS:= $(patsubst %.c, %.o, $(SOURCES))
++CPP=@CPP@
+ CPPFLAGS=@CPPFLAGS@
++CC=@CC@
+ CFLAGS=-Wall -std=c99 -pedantic @CFLAGS@
++LDFLAGS=@LDFLAGS@
+ LDLIBS=@LIBS@
+ FILES:=Makefile.in $(SOURCES) $(HEADERS) 
+ DISTDIR=$(top_builddir)/@PACKAGE_TARNAME@-@PACKAGE_VERSION@
+@@ -60,8 +63,8 @@ dist:        $(FILES)
+       cp -p $(FILES) $(DISTDIR)/aes
+ install:      $(HEADERS)
+-      test -d $(includedir)/aes || mkdir -p $(includedir)/aes
+-      $(install) $(HEADERS) $(includedir)/aes
++      test -d $(DESTDIR)$(includedir)/aes || mkdir -p $(DESTDIR)$(includedir)/aes
++      $(install) $(HEADERS) $(DESTDIR)$(includedir)/aes
+ .gitignore:
+       echo "core\n*~\n*.[oa]\n*.gz\n*.cap\n$(PROGRAM)\n$(DISTDIR)\n.gitignore" >$@
+diff --git a/doc/Makefile.in b/doc/Makefile.in
+index a07101e..5ab0a35 100644
+--- a/doc/Makefile.in
++++ b/doc/Makefile.in
+@@ -32,5 +32,5 @@ dist:        doc
+       cp -r $(FILES) $(DISTDIR)/doc
+ install:      $(doc) html
+-      test -d $(htmldir) || mkdir -p $(htmldir)
+-      cp -r html/* $(htmldir)
++      test -d $(DESTDIR)$(htmldir) || mkdir -p $(DESTDIR)$(htmldir)
++      cp -r html/* $(DESTDIR)$(htmldir)
+diff --git a/ecc/Makefile.in b/ecc/Makefile.in
+index 2ba17a1..2086d4f 100644
+--- a/ecc/Makefile.in
++++ b/ecc/Makefile.in
+@@ -36,8 +36,11 @@ include Makefile.contiki
+ else
+ ECC_OBJECTS:= $(patsubst %.c, %.o, $(ECC_SOURCES)) ecc_test.o
+ PROGRAMS:= testecc testfield
++CPP=@CPP@
+ CPPFLAGS=@CPPFLAGS@
++CC=@CC@
+ CFLAGS=-Wall -std=c99 -pedantic @CFLAGS@ -DTEST_INCLUDE
++LDFLAGS=@LDFLAGS@
+ LDLIBS=@LIBS@
+ .PHONY: all dirs clean install distclean .gitignore doc
+@@ -74,8 +77,8 @@ dist:        $(FILES)
+       cp -p $(FILES) $(DISTDIR)/ecc
+ install:      $(HEADERS)
+-      test -d $(includedir)/ecc || mkdir -p $(includedir)/ecc
+-      $(install) $(HEADERS) $(includedir)/ecc
++      test -d $(DESTDIR)$(includedir)/ecc || mkdir -p $(DESTDIR)$(includedir)/ecc
++      $(install) $(ECC_HEADERS) $(DESTDIR)$(includedir)/ecc
+ .gitignore:
+       echo "core\n*~\n*.[oa]\n*.gz\n*.cap\n$(PROGRAM)\n$(DISTDIR)\n.gitignore" >$@
+diff --git a/sha2/Makefile.in b/sha2/Makefile.in
+index 9f19314..69f8793 100644
+--- a/sha2/Makefile.in
++++ b/sha2/Makefile.in
+@@ -28,8 +28,11 @@ top_srcdir:= @top_srcdir@
+ SOURCES:= sha2.c
+ HEADERS:=sha2.h
+ OBJECTS:= $(patsubst %.c, %.o, $(SOURCES))
++CPP=@CPP@
+ CPPFLAGS=@CPPFLAGS@ -I$(top_srcdir)
++CC=@CC@
+ CFLAGS=-Wall -std=c99 -pedantic @CFLAGS@
++LDFLAGS=@LDFLAGS@
+ LDLIBS=@LIBS@
+ FILES:=Makefile.in $(SOURCES) $(HEADERS) README sha2prog.c sha2speed.c sha2test.pl 
+ DISTDIR=$(top_builddir)/@PACKAGE_TARNAME@-@PACKAGE_VERSION@
+@@ -62,8 +65,8 @@ dist:        $(FILES)
+       cp -pr testvectors $(DISTDIR)/sha2/testvectors
+ install:      $(HEADERS)
+-      test -d $(includedir)/sha2 || mkdir -p $(includedir)/sha2
+-      $(install) $(HEADERS) $(includedir)/sha2
++      test -d $(DESTDIR)$(includedir)/sha2 || mkdir -p $(DESTDIR)$(includedir)/sha2
++      $(install) $(HEADERS) $(DESTDIR)$(includedir)/sha2
+ .gitignore:
+       echo "core\n*~\n*.[oa]\n*.gz\n*.cap\n$(PROGRAM)\n$(DISTDIR)\n.gitignore" >$@
+diff --git a/tests/Makefile.in b/tests/Makefile.in
+index a8a2ed0..b45f440 100644
+--- a/tests/Makefile.in
++++ b/tests/Makefile.in
+@@ -32,9 +32,11 @@ SOURCES:= dtls-server.c ccm-test.c prf-test.c \
+ OBJECTS:= $(patsubst %.c, %.o, $(SOURCES))
+ PROGRAMS:= $(patsubst %.c, %, $(SOURCES))
+ HEADERS:=
++CC:=@CC@
+ CFLAGS:=-Wall @CFLAGS@ 
++CPP:=@CPP@
+ CPPFLAGS:=-I$(top_srcdir) @CPPFLAGS@
+-LDFLAGS:=-L$(top_builddir) 
++LDFLAGS:=-L$(top_builddir) @LDFLAGS@ 
+ LDLIBS:=-ltinydtls @LIBS@
+ DISTDIR=$(top_builddir)/@PACKAGE_TARNAME@-@PACKAGE_VERSION@
+ FILES:=Makefile.in $(SOURCES) ccm-testdata.c #cbc_aes128-testdata.c
+-- 
+2.7.4
+
diff --git a/package/tinydtls/0002-Fix-compilation-of-tests-directory.patch b/package/tinydtls/0002-Fix-compilation-of-tests-directory.patch
new file mode 100644 (file)
index 0000000..0ab579c
--- /dev/null
@@ -0,0 +1,31 @@
+From c629a108f5d03cd365c0ba71143ad507f6cd97f0 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fabrice.fontaine@orange.com>
+Date: Thu, 28 Jul 2016 08:36:06 +0200
+Subject: [PATCH] Fix compilation of tests directory
+
+binaries in tests subdirectory depends on libtinydtls so add $(LIB) dependency
+for dirs target in Makefile.in
+
+Signed-off-by: Fabrice Fontaine <fabrice.fontaine@orange.com>
+---
+ Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 7dcd424..c493705 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -68,8 +68,8 @@ check:
+       echo top_builddir: $(top_builddir)
+       $(MAKE) -C tests check
+-dirs: $(SUBDIRS)
+-      for dir in $^; do \
++dirs: $(LIB) $(SUBDIRS)
++      for dir in $(SUBDIRS); do \
+               $(MAKE) -C $$dir ; \
+       done
+-- 
+2.7.4
+
diff --git a/package/tinydtls/Config.in b/package/tinydtls/Config.in
new file mode 100644 (file)
index 0000000..33b08fe
--- /dev/null
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_TINYDTLS
+       bool "tinydtls"
+       depends on BR2_TOOLCHAIN_HAS_THREADS
+       help
+         tinydtls is a library for Datagram Transport Layer Security
+         (DTLS) covering both the client and the server state
+         machine.  It is implemented in C and provides support for
+         the mandatory cipher suites specified in CoAP.
+
+         https://sourceforge.net/projects/tinydtls
+
+comment "tinydtls needs a toolchain w/ threads"
+        depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/tinydtls/tinydtls.hash b/package/tinydtls/tinydtls.hash
new file mode 100644 (file)
index 0000000..909c8d1
--- /dev/null
@@ -0,0 +1,2 @@
+# Locally computed:
+sha256 ccf6d8fbae03fb2e0ba32878ed8e57d8b4f73538b1064df90a3e764da5fac010        tinydtls-0.8.2.tar.gz
diff --git a/package/tinydtls/tinydtls.mk b/package/tinydtls/tinydtls.mk
new file mode 100644 (file)
index 0000000..90796b1
--- /dev/null
@@ -0,0 +1,15 @@
+################################################################################
+#
+# tinydtls
+#
+################################################################################
+
+TINYDTLS_REL = r5
+TINYDTLS_VERSION = 0.8.2
+TINYDTLS_SITE = http://downloads.sourceforge.net/project/tinydtls/$(TINYDTLS_REL)
+TINYDTLS_LICENSE = MIT
+TINYDTLS_LICENSE_FILES = tinydtls.h
+TINYDTLS_INSTALL_STAGING = YES
+TINYDTLS_STRIP_COMPONENTS = 2
+
+$(eval $(autotools-package))