1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

c25519: Initial support for c25519 package

c25519[1] is a library optimized for embedded applications handling ed25519
signing and x25519 crypto. It uses significantly less memory and flash
compared to TweetNaCl and is significantly faster when used on a
samr21-xpro

[1]: https://www.dlbeer.co.nz/oss/c25519.html
This commit is contained in:
Koen Zandberg 2018-06-21 11:18:16 +02:00
parent e83ea659c8
commit 6d8e18b57e
No known key found for this signature in database
GPG Key ID: 0895A893E6D2985B
4 changed files with 84 additions and 0 deletions

36
pkg/c25519/Makefile Normal file
View File

@ -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)

View File

@ -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

View File

@ -0,0 +1 @@
INCLUDES += -I$(PKGDIRBASE)/c25519/src

36
pkg/c25519/doc.txt Normal file
View File

@ -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
*/