Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 130 additions & 0 deletions zephyr/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

if(CONFIG_UOSCORE OR CONFIG_UEDHOC)

set(UOSCORE_UEDHOC_SRC_DIR ${ZEPHYR_CURRENT_MODULE_DIR}/src)
set(UOSCORE_UEDHOC_INCLUDE_DIR ${ZEPHYR_CURRENT_MODULE_DIR}/inc)

zephyr_include_directories(${UOSCORE_UEDHOC_INCLUDE_DIR})

# Common part used by both libraries

zephyr_library_named(uoscore_uedhoc_common)

zephyr_library_compile_definitions(MBEDTLS)

if(CONFIG_UOSCORE_DEBUG OR CONFIG_UEDHOC_DEBUG)
zephyr_library_compile_definitions(DEBUG_PRINT)
endif()

zephyr_library_sources(
${UOSCORE_UEDHOC_SRC_DIR}/common/byte_array.c
${UOSCORE_UEDHOC_SRC_DIR}/common/crypto_wrapper.c
${UOSCORE_UEDHOC_SRC_DIR}/common/memcpy_s.c
${UOSCORE_UEDHOC_SRC_DIR}/common/print_util.c
)

zephyr_library_link_libraries(mbedTLS)

if(CONFIG_BUILD_WITH_TFM)
zephyr_library_include_directories(
$<TARGET_PROPERTY:tfm,TFM_BINARY_DIR>/api_ns/interface/include
)
endif()

# UOSCORE

if(CONFIG_UOSCORE)

zephyr_library_named(uoscore)

zephyr_library_compile_definitions(MBEDTLS)

if(CONFIG_UOSCORE_DEBUG)
zephyr_library_compile_definitions(DEBUG_PRINT)
endif()

zephyr_library_sources(
${UOSCORE_UEDHOC_SRC_DIR}/oscore/aad.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/coap2oscore.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/nonce.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/nvm.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/option.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/oscore_coap.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/oscore_cose.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/oscore_hkdf_info.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/oscore_interactions.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/oscore2coap.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/replay_protection.c
${UOSCORE_UEDHOC_SRC_DIR}/oscore/security_context.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/oscore_aad_array.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/oscore_enc_structure.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/oscore_info.c
)

zephyr_library_link_libraries(mbedTLS)

endif() # CONFIG_UOSCORE

# UEDHOC

if(CONFIG_UEDHOC)

zephyr_library_named(uedhoc)

zephyr_library_compile_definitions(MBEDTLS)

if(CONFIG_UEDHOC_DEBUG)
zephyr_library_compile_definitions(DEBUG_PRINT)
endif()

zephyr_library_sources(
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/associated_data_encode.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/bstr_encode_decode.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/cert.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/ciphertext.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/edhoc_cose.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/edhoc_exporter.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/edhoc_method_type.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/hkdf_info.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/initiator.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/int_encode_decode.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/okm.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/plaintext_decode.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/plaintext_encode.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/prk.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/responder.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/retrieve_cred.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/runtime_context.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/signature_or_mac_msg.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/suites.c
${UOSCORE_UEDHOC_SRC_DIR}/edhoc/th.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_bstr_type.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_cert.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_id_cred_x.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_int_type.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_message_1.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_message_2.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_message_3.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_plaintext2.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_decode_plaintext3.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_bstr_type.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_data_2.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_enc_structure.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_id_cred_x.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_info.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_int_type.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_message_1.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_message_2.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_message_3.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_message_error.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_sig_structure.c
${UOSCORE_UEDHOC_SRC_DIR}/cbor/edhoc_encode_th2.c
)

zephyr_library_link_libraries(mbedTLS)

endif() # CONFIG_UEDHOC

endif() # CONFIG_UOSCORE OR CONFIG_UEDHOC
58 changes: 58 additions & 0 deletions zephyr/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

menuconfig UOSCORE
bool "UOSCORE library"
depends on ZCBOR
depends on ZCBOR_CANONICAL
select UOSCORE_UEDHOC_CRYPTO_COMMON

help
This option enables the UOSCORE library.

if UOSCORE

config UOSCORE_DEBUG
bool "Debug logs in the uoscore library"

endif # UOSCORE

menuconfig UEDHOC
bool "UEDHOC library"
depends on ZCBOR
depends on ZCBOR_CANONICAL
select UOSCORE_UEDHOC_CRYPTO_COMMON
help
This option enables the UEDHOC library.

if UEDHOC

config UEDHOC_DEBUG
bool "Debug logs in the uedhoc library"

endif # UEDHOC

if UOSCORE || UEDHOC

config UOSCORE_UEDHOC_CRYPTO_COMMON
bool
select PSA_CRYPTO
select PSA_WANT_ALG_ECDH
select PSA_WANT_ALG_ECDSA
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE
select PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY
select PSA_WANT_ECC_SECP_R1_256
select PSA_WANT_KEY_TYPE_AES
select PSA_WANT_ALG_CCM
select PSA_WANT_KEY_TYPE_HMAC
select PSA_WANT_ALG_HMAC
select PSA_WANT_ALG_SHA_256
# On TF-M platforms the PSA_WANT_xxx above do not enable the legacy
# MBEDTLS_ECP_C build symbol which is required to enable the
# mbedtls_pk_ec() function used in uOSCORE/uEDHOC.
select MBEDTLS_ECP_C if BUILD_WITH_TFM
select MBEDTLS_ECP_DP_SECP256R1_ENABLED if BUILD_WITH_TFM

endif # UOSCORE || UEDHOC
4 changes: 2 additions & 2 deletions zephyr/module.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: uoscore-uedhoc
build:
cmake-ext: True
kconfig-ext: True
cmake: zephyr
kconfig: zephyr/Kconfig
16 changes: 16 additions & 0 deletions zephyr/tests/uoscore/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# SPDX-License-Identifier: Apache-2.0

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(uoscore)

FILE(GLOB
app_sources
src/*.c
src/oscore_testvector_tests/*.c
)

target_sources(app PRIVATE ${app_sources})
target_include_directories(app PRIVATE
src/oscore_testvector_tests
)
14 changes: 14 additions & 0 deletions zephyr/tests/uoscore/prj.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
CONFIG_ZTEST=y
CONFIG_ZTEST_STACK_SIZE=16384
CONFIG_MAIN_STACK_SIZE=4096

CONFIG_ENTROPY_GENERATOR=y
CONFIG_TEST_RANDOM_GENERATOR=y

CONFIG_ZCBOR=y
CONFIG_ZCBOR_CANONICAL=y
CONFIG_UOSCORE=y

CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_ENABLE_HEAP=y
CONFIG_MBEDTLS_HEAP_SIZE=2048
11 changes: 11 additions & 0 deletions zephyr/tests/uoscore/src/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
* Copyright (c) 2021 Fraunhofer AISEC.
*
* SPDX-License-Identifier: Apache-2.0
*/

#include <zephyr/kernel.h>
#include <zephyr/ztest.h>

/* OSCORE testvector tests */
ZTEST_SUITE(oscore_tests, NULL, NULL, NULL, NULL, NULL);
Loading
Loading