diff --git a/pkg/c25519/Makefile b/pkg/c25519/Makefile new file mode 100644 index 0000000000..48b1912572 --- /dev/null +++ b/pkg/c25519/Makefile @@ -0,0 +1,36 @@ +PKG_NAME = c25519 +PKG_URL = https://www.dlbeer.co.nz/downloads +PKG_VERSION = 2017-10-05 +PKG_EXT = zip +PKG_LICENSE = PD +PKG_SHA512 = dbfb4285837ab2ea3d99c448b22877cc7a139ccbaebb1de367e2bec1fd562fe629b389d86603915448078b8fd7e631c8fc9a7d126eb889a1ba0c17611369b190 + +PKG_BUILDDIR ?= $(PKGDIRBASE)/$(PKG_NAME) +PKG_ZIPFILE = $(PKGDIRBASE)/$(PKG_NAME)-$(PKG_VERSION).$(PKG_EXT) + +ifneq ($(RIOTBASE),) +include $(RIOTBASE)/Makefile.base +endif + +.PHONY: all clean distclean + +prepare: $(PKG_BUILDDIR)/ + +all: $(PKG_BUILDDIR)/ + "$(MAKE)" -C $(PKG_BUILDDIR)/src -f $(CURDIR)/Makefile.c25519 + +$(PKG_BUILDDIR)/: $(PKGDIRBASE)/$(PKG_NAME)-$(PKG_VERSION).$(PKG_EXT) + test "$(PKG_SHA512) $(PKG_ZIPFILE)" = "$$(sha512sum "${PKG_ZIPFILE}")" + $(Q)$(UNZIP_HERE) -D -d $(PKGDIRBASE) $< + +$(PKG_ZIPFILE): + mkdir -p $(PKGDIRBASE) + $(Q)$(DOWNLOAD_TO_FILE) $@ $(PKG_URL)/$(PKG_NAME)-$(PKG_VERSION).$(PKG_EXT) + +clean:: + # Reset package to checkout state. + rm -rf $(PKG_BUILDDIR) + +distclean:: + rm -rf $(PKG_BUILDDIR) $(PKGDIRBASE)/$(PKG_NAME)-$(PKG_VERSION).$(PKG_EXT) + rm -rf $(PKG_SHAFILE) diff --git a/pkg/c25519/Makefile.c25519 b/pkg/c25519/Makefile.c25519 new file mode 100644 index 0000000000..3b046abb23 --- /dev/null +++ b/pkg/c25519/Makefile.c25519 @@ -0,0 +1,11 @@ +MODULE := c25519 + +SRC += c25519.c +SRC += ed25519.c +SRC += edsign.c +SRC += f25519.c +SRC += fprime.c +SRC += morph25519.c +SRC += sha512.c + +include $(RIOTBASE)/Makefile.base diff --git a/pkg/c25519/Makefile.include b/pkg/c25519/Makefile.include new file mode 100644 index 0000000000..ef74e6418c --- /dev/null +++ b/pkg/c25519/Makefile.include @@ -0,0 +1 @@ +INCLUDES += -I$(PKGDIRBASE)/c25519/src diff --git a/pkg/c25519/doc.txt b/pkg/c25519/doc.txt new file mode 100644 index 0000000000..8eb5bea8f0 --- /dev/null +++ b/pkg/c25519/doc.txt @@ -0,0 +1,36 @@ +/** + * @defgroup pkg_c25519 C25519 cryptographic library + * @ingroup pkg + * @ingroup sys + * @brief Curve25519 and Ed25519 for low-memory systems + * + * This package contains portable public-domain implementations of Daniel J. + * Bernstein's Curve255191 Diffie-Hellman function, and of the Ed25519 + * signature system. The memory consumption is low enough that they could be + * reasonably considered for most microcontroller applications. In particular, + * Curve25519 scalar multiplication uses less than half a kB of peak stack + * usage. + * + * ## Requirements + * + * C25519 requires around 1K of stack, so beware that you're allocating at + * least `THREAD_STACKSIZE_DEFAULT + 1K` bytes. + * + * You can do it easily by adding: + * + * ```makefile + * CFLAGS += '-DTHREAD_STACKSIZE_MAIN=(THREAD_STACKSIZE_DEFAULT + 1024)' + * ``` + * + * to your makefile. + * + * ## Usage + * + * Just add it as a package in your application: + * + * ```makefile + * USEPKG += c25519 + * ``` + * + * @see https://www.dlbeer.co.nz/oss/c25519.html + */