Skip to content

Commit

Permalink
pkg/libcose: bump, set random function on init
Browse files Browse the repository at this point in the history
  • Loading branch information
fjmolinas committed May 17, 2022
1 parent 5a6bb44 commit 8b6ddca
Show file tree
Hide file tree
Showing 12 changed files with 191 additions and 104 deletions.
4 changes: 4 additions & 0 deletions makefiles/default_modules.deps.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ ifneq (,$(filter auto_init_saul,$(USEMODULE)))
USEMODULE += saul_init_devs
endif

ifneq (,$(filter auto_init_libcose_crypt,$(USEMODULE)))
USEMODULE += libcose_crypt_init
endif

ifneq (,$(filter xtimer,$(USEMODULE)))
ifeq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
USEMODULE += div
Expand Down
10 changes: 10 additions & 0 deletions pkg/libcose/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ config MODULE_LIBCOSE_CRYPT_MONOCYPHER
depends on TEST_KCONFIG
depends on PACKAGE_MONOCYPHER

config MODULE_LIBCOSE_CRYPT_INIT
bool "LibCose Crypt Initialization functions"
default y

config MODULE_AUTO_INIT_LIBCOSE_CRYPT
bool "Auto initialize LibCose Crypt"
depends on MODULE_AUTO_INIT
select MODULE_LIBCOSE_CRYPT_INIT
default y

endif # PACKAGE_LIBCOSE

config MODULE_LIBCOSE_CRYPT
Expand Down
2 changes: 1 addition & 1 deletion pkg/libcose/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PKG_NAME=libcose
PKG_URL=https://github.com/bergzand/libcose
PKG_VERSION=2929fdce7affbd5bb9db201370d95d8f7cf680f9
PKG_VERSION=ea1fed87d6ca9b478f8bed323af97e6b192c0a6d
PKG_LICENSE=LGPL

include $(RIOTBASE)/pkg/pkg.mk
Expand Down
6 changes: 6 additions & 0 deletions pkg/libcose/Makefile.dep
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,9 @@ endif
ifneq (,$(filter libcose_crypt_tinycrypt,$(USEMODULE)))
USEPKG += tinycrypt
endif
ifneq (,$(filter libcose_crypt_monocypher,$(USEMODULE)))
USEPKG += monocypher
endif

DEFAULT_MODULE += auto_init_libcose_crypt
DEFAULT_MODULE += libcose_crypt_init
12 changes: 11 additions & 1 deletion pkg/libcose/Makefile.include
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ endif
ifneq (,$(filter libcose_crypt_tinycrypt,$(USEMODULE)))
CFLAGS += -DCRYPTO_TINYCRYPT
endif
ifneq (,$(filter libcose_crypt_monocypher,$(USEMODULE)))
CFLAGS += -DCRYPTO_MONOCYPHER
endif
ifneq (,$(filter libcose_crypt_init,$(USEMODULE)))
DIRS += $(RIOTBASE)/pkg/libcose/init
endif

# Declare pseudomodules here to be selfcontained
PSEUDOMODULES += libcose_crypt_%
PSEUDOMODULES += libcose_crypt_c25519
PSEUDOMODULES += libcose_crypt_hacl
PSEUDOMODULES += libcose_crypt_tinycrypt
PSEUDOMODULES += libcose_crypt_monocypher
PSEUDOMODULES += auto_init_libcose_crypt
2 changes: 2 additions & 0 deletions pkg/libcose/Makefile.libcose_crypt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
MODULE := libcose_crypt
SUBMODULES = 1

SRC += keygen_symm.c

include $(RIOTBASE)/Makefile.base
3 changes: 3 additions & 0 deletions pkg/libcose/contrib/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
MODULE = libcose_crypt_riot

include $(RIOTBASE)/Makefile.base
48 changes: 48 additions & 0 deletions pkg/libcose/include/cose/crypto/riot.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* Copyright (C) 2022 Inria
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/

/**
* @ingroup pkg_libcose
*
* @{
*
* @file
* @brief Crypto function api for glueing RIOT crypto libraries
*
* @author Francisco Molina <francois-xavier.molina@inria.fr>
*/

#ifndef COSE_CRYPTO_RIOT_H
#define COSE_CRYPTO_RIOT_H

#ifdef __cplusplus
extern "C" {
#endif

#ifndef AUTO_INIT_PRIO_MOD_LIBCOSE
/**
* @brief libCOSE init priority
*/
#define AUTO_INIT_PRIO_MOD_LIBCOSE 1050
#endif

/**
* @brief Initialize libCOSE RIOT crypto backend
*
* @note Automatically called if 'auto_init_libcose_crypt_riot' is included
*
*/
void libcose_crypt_init(void);

#ifdef __cplusplus
}
#endif

#endif /* COSE_CRYPTO_RIOT_H */

/** @} */
3 changes: 3 additions & 0 deletions pkg/libcose/init/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
MODULE = libcose_crypt_init

include $(RIOTBASE)/Makefile.base
48 changes: 48 additions & 0 deletions pkg/libcose/init/init.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* Copyright (C) 2022 Inria
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/

/**
* @ingroup pkg_libcose
* @{
*
* @file
* @brief RIOT as a crypto backend common functions
*
* @author Francisco Molina <francois-xavier.molina@inria.fr>
*
* @}
*/


#include <stdint.h>
#include "random.h"
#include "kernel_defines.h"
#include "xfa.h"

#include "cose/crypto.h"

#if IS_USED(MODULE_AUTO_INIT)
#include "auto_init_utils.h"
#endif

static int _riot_random_bytes(void* arg, unsigned char * buf, size_t len)
{
(void)arg;
random_bytes((uint8_t*) buf, len);
return 1;
}

void libcose_crypt_init(void)
{
cose_crypt_set_rng(_riot_random_bytes, NULL);
}

#if IS_USED(MODULE_AUTO_INIT_LIBCOSE_CRYPT)
/* initialize just after random module */
AUTO_INIT(libcose_crypt_init, AUTO_INIT_PRIO_MOD_LIBCOSE);
#endif

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
From 27c9da70b2bc80030dd55cc2e449a22c1b290e9d Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Thu, 24 Feb 2022 13:20:46 +0100
Subject: [PATCH] cose/crypto: add defines for RIOT crypto backend

---
include/cose/crypto.h | 3 +++
include/cose/crypto/selectors.h | 6 ++++--
2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/include/cose/crypto.h b/include/cose/crypto.h
index e81fd2c..6df6d14 100644
--- a/include/cose/crypto.h
+++ b/include/cose/crypto.h
@@ -48,6 +48,9 @@
#if defined(CRYPTO_TINYCRYPT)
#include "cose/crypto/tinycrypt.h"
#endif
+#ifdef CRYPTO_RIOT
+#include "cose/crypto/riot.h"
+#endif

#include "cose/crypto/selectors.h"

diff --git a/include/cose/crypto/selectors.h b/include/cose/crypto/selectors.h
index 575263a..cc5c786 100644
--- a/include/cose/crypto/selectors.h
+++ b/include/cose/crypto/selectors.h
@@ -46,6 +46,8 @@
#define CRYPTO_MBEDTLS_INCLUDE_CHACHAPOLY
#elif defined(CRYPTO_HACL)
#define CRYPTO_HACL_INCLUDE_CHACHAPOLY
+#elif defined(CRYPTO_RIOT)
+#define CRYPTO_RIOT_INCLUDE_CHACHAPOLY
#endif
/** @} */

@@ -61,8 +63,6 @@
#endif
#endif

-#endif /* COSE_CRYPTO_SELECTORS_H */
-
#if defined(HAVE_ALGO_AES128GCM) || \
defined(HAVE_ALGO_AES192GCM) || \
defined(HAVE_ALGO_AES256GCM)
@@ -81,3 +81,5 @@
#endif

/** @} */
+
+#endif /* COSE_CRYPTO_SELECTORS_H */
--
2.32.0

0 comments on commit 8b6ddca

Please sign in to comment.