mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
pkg/edhoc-c: initial commit
Co-authored-by: Timothy Claeys <timothy.claeys@inria.fr>
This commit is contained in:
parent
137dd14911
commit
4cef100781
19
pkg/edhoc-c/Makefile
Normal file
19
pkg/edhoc-c/Makefile
Normal file
@ -0,0 +1,19 @@
|
||||
PKG_NAME = EDHOC-C
|
||||
PKG_URL = https://github.com/future-proof-iot/EDHOC-C.git
|
||||
PKG_VERSION = 1847c2c558d3ea97a070f6a9546a5913432ecf96
|
||||
PKG_LICENSE = BSD-3-Clause
|
||||
|
||||
include $(RIOTBASE)/pkg/pkg.mk
|
||||
|
||||
.PHONY: edhoc-c_%
|
||||
|
||||
EDHOC_C_MODULES := $(filter edhoc-c_%,$(USEMODULE))
|
||||
|
||||
all: $(EDHOC_C_MODULES)
|
||||
"$(MAKE)" -C $(PKG_SOURCE_DIR)/src -f $(RIOTBASE)/Makefile.base MODULE=edhoc-c
|
||||
|
||||
edhoc-c_crypto_%:
|
||||
"$(MAKE)" -C $(PKG_SOURCE_DIR)/src/crypto -f $(RIOTBASE)/Makefile.base MODULE=$@ SRC=$*.c
|
||||
|
||||
edhoc-c_cbor_%:
|
||||
"$(MAKE)" -C $(PKG_SOURCE_DIR)/src/cbor -f $(RIOTBASE)/Makefile.base MODULE=$@ SRC=$*.c
|
22
pkg/edhoc-c/Makefile.dep
Normal file
22
pkg/edhoc-c/Makefile.dep
Normal file
@ -0,0 +1,22 @@
|
||||
ifneq (,$(filter edhoc-c_crypto_wolfssl,$(USEMODULE)))
|
||||
USEPKG += wolfssl
|
||||
USEMODULE += wolfcrypt
|
||||
USEMODULE += wolfcrypt_aes
|
||||
USEMODULE += wolfcrypt_ed25519
|
||||
USEMODULE += wolfcrypt_curve25519
|
||||
USEMODULE += wolfcrypt_hmac
|
||||
USEMODULE += wolfcrypt_random
|
||||
USEMODULE += wolfcrypt_sha256
|
||||
endif
|
||||
|
||||
ifneq (,$(filter edhoc-c_crypto_tinycrypt,$(USEMODULE)))
|
||||
USEPKG += tinycrypt
|
||||
# Blacklist platforms using nimble, mynewt-nimble has an in-tree copy
|
||||
# of tinycrypt that conflicts with the remote one
|
||||
FEATURES_BLACKLIST += ble_nimble
|
||||
USEPKG += c25519
|
||||
endif
|
||||
|
||||
ifneq (,$(filter edhoc-c_cbor_nanocbor,$(USEMODULE)))
|
||||
USEPKG += nanocbor
|
||||
endif
|
23
pkg/edhoc-c/Makefile.include
Normal file
23
pkg/edhoc-c/Makefile.include
Normal file
@ -0,0 +1,23 @@
|
||||
INCLUDES += -I$(PKGDIRBASE)/EDHOC-C/include \
|
||||
-I$(PKGDIRBASE)/EDHOC-C/src \
|
||||
-I$(RIOTBASE)/pkg/edhoc-c/include \
|
||||
#
|
||||
|
||||
ifneq (,$(filter edhoc-c_crypto_wolfssl,$(USEMODULE)))
|
||||
CFLAGS += -DHAVE_AESCCM
|
||||
CFLAGS += -DHAVE_HKDF
|
||||
CFLAGS += -DWOLFSSL
|
||||
endif
|
||||
|
||||
ifneq (,$(filter edhoc-c_crypto_tinycrypt,$(USEMODULE)))
|
||||
CFLAGS += -DTINYCRYPT
|
||||
endif
|
||||
|
||||
ifneq (,$(filter edhoc-c_cbor_nanocbor,$(USEMODULE)))
|
||||
CFLAGS += -DNANOCBOR
|
||||
endif
|
||||
|
||||
# EDHOC-C configuration file for RIOT
|
||||
CFLAGS += -DEDHOC_CONFIG_FILE=\"edhoc_config.h\"
|
||||
# X509 backend in EDHOC-C is mbedtls currently not supported in RIOT
|
||||
CFLAGS += -DEMPTY_X509
|
48
pkg/edhoc-c/doc.txt
Normal file
48
pkg/edhoc-c/doc.txt
Normal file
@ -0,0 +1,48 @@
|
||||
/**
|
||||
* @defgroup pkg_edhoc_c EDHOC-C
|
||||
* @ingroup pkg
|
||||
* @brief Support for Ephemeral Diffie-Hellman Over COSE (EDHOC)
|
||||
* @see https://github.com/openwsn-berkeley/EDHOC-C
|
||||
*
|
||||
* # EDHOC-C RIOT package
|
||||
*
|
||||
* ## Usage
|
||||
*
|
||||
* Just add it as a package in your application:
|
||||
*
|
||||
* ```makefile
|
||||
* USEPKG += edhoc-c
|
||||
* ```
|
||||
*
|
||||
* ### Backends
|
||||
*
|
||||
* EDHOC-C does not implement crypographic algorithms, instead it uses external
|
||||
* libraries as a backend. Libraries that provide all requirements are
|
||||
* currently @ref pkg_tinycrypt and @ref pkg_wolfssl. Pick one through the
|
||||
* following module:
|
||||
*
|
||||
* ```makefile
|
||||
* USEMODULE += edhoc-c_crypto_wolfssl
|
||||
* USEMODULE += edhoc-c_crypto_tinycrypt
|
||||
* ```
|
||||
*
|
||||
* EDHOC-C does not implement a CBOR library either, currently the only possible
|
||||
* backend is @ref pkg_nanocbor. Select it through the following module:
|
||||
*
|
||||
* ```makefile
|
||||
* USEMODULE += edhoc-c_cbor_nanocbor
|
||||
* ```
|
||||
*
|
||||
* Don't forget to include the header for the EDHOC-C public API:
|
||||
*
|
||||
* ```c
|
||||
* #include <edhoc/edhoc.h>
|
||||
* ```
|
||||
*
|
||||
* ### Current Support
|
||||
*
|
||||
* - EDHOC-C supports @ref pkg_hacl as a crypto backend but it's using a different
|
||||
* version than the one supported currently in RIOT
|
||||
* - x509 certificates require MBED-TLS, which is currently not supported in
|
||||
* RIOT so only RPK and CBOR certificates are supported.
|
||||
*/
|
121
pkg/edhoc-c/include/edhoc_config.h
Normal file
121
pkg/edhoc-c/include/edhoc_config.h
Normal file
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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_edhoc_c
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief EDHOC-C configuration file
|
||||
*
|
||||
* @author Timothy Claeys <timothy.claeys@inria.fr>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
#ifndef EDHOC_CONFIG_H
|
||||
#define EDHOC_CONFIG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief EDHOC_CIPHER_SUITE_X_ENABLED
|
||||
*
|
||||
* Enables support for a specific EDHOC cipher suite
|
||||
*
|
||||
*/
|
||||
#define EDHOC_CIPHER_SUITE_0_ENABLED
|
||||
|
||||
/**
|
||||
* @brief EDHOC_AUTH_METHOD_X_ENABLED
|
||||
* @{
|
||||
*
|
||||
* Enables support for a specific EDHOC authentication method
|
||||
*
|
||||
*/
|
||||
#define EDHOC_AUTH_METHOD_0_ENABLED
|
||||
#define EDHOC_AUTH_METHOD_1_ENABLED
|
||||
#define EDHOC_AUTH_METHOD_2_ENABLED
|
||||
#define EDHOC_AUTH_METHOD_3_ENABLED
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief EDHOC_ASYNC_API_ENABLED
|
||||
*
|
||||
* Exposes the individual EDHOC message functions for asynchronous usage.
|
||||
*
|
||||
*/
|
||||
#define EDHOC_ASYNC_API_ENABLED
|
||||
|
||||
/**
|
||||
* @brief EDHOC_DEBUG_ENABLE
|
||||
*
|
||||
* Enables some extra methods that allow for easier testing and debugging
|
||||
*
|
||||
*/
|
||||
#define EDHOC_DEBUG_ENABLED
|
||||
|
||||
/**
|
||||
* @brief EDHOC_AUTH_CERT_ENABLED
|
||||
* @{
|
||||
*
|
||||
* Enables CBOR certificates as the EDHOC local credential
|
||||
*
|
||||
*/
|
||||
#define EDHOC_AUTH_CERT_ENABLED
|
||||
#if defined(EDHOC_AUTH_CERT_ENABLED)
|
||||
#define EDHOC_AUTH_CBOR_CERT
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief EDHOC_AUTH_RPK_ENABLED
|
||||
*
|
||||
* Enables COSE raw public keys as the EDHOC local credential
|
||||
*
|
||||
*/
|
||||
#define EDHOC_AUTH_RPK_ENABLED
|
||||
|
||||
/**
|
||||
* @brief EDHOC_COSE_HEADER_SIZE
|
||||
*
|
||||
* Sets the maximum number of COSE header elements
|
||||
*/
|
||||
#define EDHOC_COSE_HEADER_SIZE (5)
|
||||
|
||||
/**
|
||||
* @brief EDHOC_CREDENTIAL_MAX_SIZE
|
||||
*
|
||||
* Sets the maximum buffer size for credentials (raw keys or certificates)
|
||||
*
|
||||
*/
|
||||
#define EDHOC_CRED_SIZE (256)
|
||||
|
||||
/**
|
||||
* @brief EDHOC_CREDENTIAL_ID_MAX_SIZE
|
||||
*
|
||||
* Sets the maximum buffer size for credential identifiers
|
||||
*
|
||||
*/
|
||||
#define EDHOC_CRED_ID_SIZE (256)
|
||||
|
||||
/**
|
||||
* @brief EDHOC_ADD_DATA_MAX_SIZE
|
||||
*
|
||||
* Maximum number of additional data bytes to piggy-back on the EDHOC exchange
|
||||
*
|
||||
*/
|
||||
#define EDHOC_ADDITIONAL_DATA_SIZE (64)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* EDHOC_CONFIG_H */
|
Loading…
Reference in New Issue
Block a user