mirror of
https://github.com/polhenarejos/pico-keys-sdk
synced 2026-05-28 17:11:23 +02:00
Reorganize tree for ESP32
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
23
config/esp32/components/mlkem1024/CMakeLists.txt
Normal file
23
config/esp32/components/mlkem1024/CMakeLists.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
set(MLKEM_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../../mlkem/mlkem)
|
||||
|
||||
file(GLOB_RECURSE MLKEM_SOURCES
|
||||
${MLKEM_DIR}/src/*.c
|
||||
)
|
||||
list(FILTER MLKEM_SOURCES EXCLUDE REGEX "/native/")
|
||||
|
||||
idf_component_register(
|
||||
SRCS ${MLKEM_SOURCES}
|
||||
INCLUDE_DIRS ${MLKEM_DIR}
|
||||
)
|
||||
|
||||
target_compile_definitions(${COMPONENT_LIB} PRIVATE
|
||||
MLK_CONFIG_PARAMETER_SET=1024
|
||||
MLK_CONFIG_MULTILEVEL_NO_SHARED
|
||||
MLK_CONFIG_NAMESPACE_PREFIX=mlkem
|
||||
)
|
||||
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE
|
||||
-O2
|
||||
-fno-builtin
|
||||
-fno-strict-aliasing
|
||||
)
|
||||
23
config/esp32/components/mlkem512/CMakeLists.txt
Normal file
23
config/esp32/components/mlkem512/CMakeLists.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
set(MLKEM_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../../mlkem/mlkem)
|
||||
|
||||
file(GLOB_RECURSE MLKEM_SOURCES
|
||||
${MLKEM_DIR}/src/*.c
|
||||
)
|
||||
list(FILTER MLKEM_SOURCES EXCLUDE REGEX "/native/")
|
||||
|
||||
idf_component_register(
|
||||
SRCS ${MLKEM_SOURCES}
|
||||
INCLUDE_DIRS ${MLKEM_DIR}
|
||||
)
|
||||
|
||||
target_compile_definitions(${COMPONENT_LIB} PRIVATE
|
||||
MLK_CONFIG_PARAMETER_SET=512
|
||||
MLK_CONFIG_MULTILEVEL_WITH_SHARED
|
||||
MLK_CONFIG_NAMESPACE_PREFIX=mlkem
|
||||
)
|
||||
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE
|
||||
-O2
|
||||
-fno-builtin
|
||||
-fno-strict-aliasing
|
||||
)
|
||||
23
config/esp32/components/mlkem768/CMakeLists.txt
Normal file
23
config/esp32/components/mlkem768/CMakeLists.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
set(MLKEM_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../../mlkem/mlkem)
|
||||
|
||||
file(GLOB_RECURSE MLKEM_SOURCES
|
||||
${MLKEM_DIR}/src/*.c
|
||||
)
|
||||
list(FILTER MLKEM_SOURCES EXCLUDE REGEX "/native/")
|
||||
|
||||
idf_component_register(
|
||||
SRCS ${MLKEM_SOURCES}
|
||||
INCLUDE_DIRS ${MLKEM_DIR}
|
||||
)
|
||||
|
||||
target_compile_definitions(${COMPONENT_LIB} PRIVATE
|
||||
MLK_CONFIG_PARAMETER_SET=768
|
||||
MLK_CONFIG_MULTILEVEL_NO_SHARED
|
||||
MLK_CONFIG_NAMESPACE_PREFIX=mlkem
|
||||
)
|
||||
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE
|
||||
-O2
|
||||
-fno-builtin
|
||||
-fno-strict-aliasing
|
||||
)
|
||||
7
config/esp32/components/pico-keys-sdk/CMakeLists.txt
Executable file
7
config/esp32/components/pico-keys-sdk/CMakeLists.txt
Executable file
@@ -0,0 +1,7 @@
|
||||
set(PICO_KEYS_SDK_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../..)
|
||||
idf_component_register(
|
||||
SRCS ${PICO_KEYS_SOURCES}
|
||||
INCLUDE_DIRS ${PICO_KEYS_SDK_DIR}/src ${PICO_KEYS_SDK_DIR}/src/fs ${PICO_KEYS_SDK_DIR}/src/rng ${PICO_KEYS_SDK_DIR}/src/usb ${PICO_KEYS_SDK_DIR}/src/led ${PICO_KEYS_SDK_DIR}/tinycbor/src ${PICO_KEYS_SDK_DIR}/mlkem/mlkem ${PICO_KEYS_SDK_DIR}/config/mlkem
|
||||
REQUIRES bootloader_support esp_partition esp_tinyusb efuse mbedtls mlkem512 mlkem768 mlkem1024 tinycbor
|
||||
)
|
||||
idf_component_set_property(${COMPONENT_NAME} WHOLE_ARCHIVE ON)
|
||||
6
config/esp32/components/tinycbor/CMakeLists.txt
Executable file
6
config/esp32/components/tinycbor/CMakeLists.txt
Executable file
@@ -0,0 +1,6 @@
|
||||
set(PICO_KEYS_SDK_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../..)
|
||||
idf_component_register(
|
||||
SRCS ${CBOR_SOURCES}
|
||||
INCLUDE_DIRS ${PICO_KEYS_SDK_DIR}/tinycbor/src
|
||||
)
|
||||
idf_component_set_property(${COMPONENT_NAME} WHOLE_ARCHIVE ON)
|
||||
27
config/mlkem/mlkem_native_all.h
Normal file
27
config/mlkem/mlkem_native_all.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) The mlkem-native project authors
|
||||
* SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
|
||||
*/
|
||||
|
||||
#if !defined(MLK_ALL_H)
|
||||
#define MLK_ALL_H
|
||||
|
||||
/* API for MLKEM-512 */
|
||||
#define MLK_CONFIG_PARAMETER_SET 512
|
||||
#include "mlkem_native.h"
|
||||
#undef MLK_CONFIG_PARAMETER_SET
|
||||
#undef MLK_H
|
||||
|
||||
/* API for MLKEM-768 */
|
||||
#define MLK_CONFIG_PARAMETER_SET 768
|
||||
#include "mlkem_native.h"
|
||||
#undef MLK_CONFIG_PARAMETER_SET
|
||||
#undef MLK_H
|
||||
|
||||
/* API for MLKEM-1024 */
|
||||
#define MLK_CONFIG_PARAMETER_SET 1024
|
||||
#include "mlkem_native.h"
|
||||
#undef MLK_CONFIG_PARAMETER_SET
|
||||
#undef MLK_H
|
||||
|
||||
#endif /* !MLK_ALL_H */
|
||||
13
config/mlkem/mlkem_native_config.h
Normal file
13
config/mlkem/mlkem_native_config.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
/* Disable all native/asm backends */
|
||||
#define MLK_NO_NATIVE_BACKENDS 1
|
||||
|
||||
/* No CBMC */
|
||||
#undef CBMC
|
||||
|
||||
/* Platform characteristics */
|
||||
#define MLK_LITTLE_ENDIAN 1
|
||||
|
||||
/* Memory model */
|
||||
#define MLK_NO_MALLOC 1
|
||||
@@ -213,6 +213,14 @@ if(NOT ESP_PLATFORM)
|
||||
endif()
|
||||
endif(NOT ESP_PLATFORM)
|
||||
|
||||
option(ENABLE_PQC "Enable/disable PQC support" OFF)
|
||||
if(ENABLE_PQC)
|
||||
message(STATUS "PQC support:\t\t\t enabled")
|
||||
add_definitions(-DENABLE_PQC)
|
||||
else()
|
||||
message(STATUS "PQC support:\t\t\t disabled")
|
||||
endif(ENABLE_PQC)
|
||||
|
||||
set(MBEDTLS_SOURCES
|
||||
${CMAKE_CURRENT_LIST_DIR}/mbedtls/library/aes.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/mbedtls/library/asn1parse.c
|
||||
@@ -260,6 +268,54 @@ if (ENABLE_EDDSA)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_PQC)
|
||||
if (NOT ESP_PLATFORM)
|
||||
file(GLOB_RECURSE MLKEM_SOURCES
|
||||
${CMAKE_CURRENT_LIST_DIR}/mlkem/mlkem/src/*.c
|
||||
)
|
||||
list(FILTER MLKEM_SOURCES EXCLUDE REGEX "/native/")
|
||||
|
||||
add_library(mlkem512 STATIC ${MLKEM_SOURCES})
|
||||
target_include_directories(mlkem512 PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/mlkem/mlkem/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/config/mlkem
|
||||
)
|
||||
target_compile_definitions(mlkem512 PRIVATE
|
||||
MLK_CONFIG_PARAMETER_SET=512
|
||||
MLK_CONFIG_MULTILEVEL_WITH_SHARED
|
||||
MLK_CONFIG_NAMESPACE_PREFIX=mlkem
|
||||
)
|
||||
|
||||
add_library(mlkem768 STATIC ${MLKEM_SOURCES})
|
||||
target_include_directories(mlkem768 PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/mlkem/mlkem/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/config/mlkem
|
||||
)
|
||||
target_compile_definitions(mlkem768 PRIVATE
|
||||
MLK_CONFIG_PARAMETER_SET=768
|
||||
MLK_CONFIG_MULTILEVEL_NO_SHARED
|
||||
MLK_CONFIG_NAMESPACE_PREFIX=mlkem
|
||||
)
|
||||
|
||||
add_library(mlkem1024 STATIC ${MLKEM_SOURCES})
|
||||
target_include_directories(mlkem1024 PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/mlkem/mlkem/src
|
||||
${CMAKE_CURRENT_LIST_DIR}/config/mlkem
|
||||
)
|
||||
target_compile_definitions(mlkem1024 PRIVATE
|
||||
MLK_CONFIG_PARAMETER_SET=1024
|
||||
MLK_CONFIG_MULTILEVEL_NO_SHARED
|
||||
MLK_CONFIG_NAMESPACE_PREFIX=mlkem
|
||||
)
|
||||
endif()
|
||||
|
||||
set(INCLUDES ${INCLUDES}
|
||||
${CMAKE_CURRENT_LIST_DIR}/mlkem/mlkem
|
||||
${CMAKE_CURRENT_LIST_DIR}/config/mlkem
|
||||
)
|
||||
add_definitions(-DMLK_CONFIG_NAMESPACE_PREFIX=mlkem -DMLK_CONFIG_MULTILEVEL_BUILD=1)
|
||||
endif()
|
||||
|
||||
set(PICO_KEYS_SOURCES ${PICO_KEYS_SOURCES}
|
||||
${CMAKE_CURRENT_LIST_DIR}/src/main.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/src/usb/usb.c
|
||||
@@ -318,6 +374,8 @@ if(USB_ITF_HID)
|
||||
${CMAKE_CURRENT_LIST_DIR}/mbedtls/library/pk_wrap.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/mbedtls/library/pkwrite.c
|
||||
)
|
||||
endif()
|
||||
|
||||
set(CBOR_SOURCES
|
||||
${CMAKE_CURRENT_LIST_DIR}/tinycbor/src/cborencoder.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/tinycbor/src/cborparser.c
|
||||
@@ -327,9 +385,22 @@ if(USB_ITF_HID)
|
||||
set(INCLUDES ${INCLUDES}
|
||||
${CMAKE_CURRENT_LIST_DIR}/tinycbor/src
|
||||
)
|
||||
set(LIBRARIES
|
||||
mbedtls
|
||||
)
|
||||
|
||||
if (NOT ESP_PLATFORM)
|
||||
add_library(mbedtls STATIC ${MBEDTLS_SOURCES})
|
||||
target_include_directories(mbedtls PUBLIC ${CMAKE_CURRENT_LIST_DIR}/mbedtls/include)
|
||||
if(USB_ITF_HID)
|
||||
add_library(tinycbor STATIC ${CBOR_SOURCES})
|
||||
target_include_directories(tinycbor PUBLIC ${CMAKE_CURRENT_LIST_DIR}/tinycbor/src)
|
||||
set(LIBRARIES ${LIBRARIES} tinycbor)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(LIBRARIES
|
||||
if (PICO_PLATFORM)
|
||||
list(APPEND LIBRARIES
|
||||
pico_stdlib
|
||||
pico_multicore
|
||||
pico_rand
|
||||
@@ -339,7 +410,16 @@ set(LIBRARIES
|
||||
tinyusb_device
|
||||
tinyusb_board
|
||||
hardware_pio
|
||||
)
|
||||
)
|
||||
endif()
|
||||
|
||||
if (ENABLE_PQC)
|
||||
list(APPEND LIBRARIES
|
||||
mlkem512
|
||||
mlkem768
|
||||
mlkem1024
|
||||
)
|
||||
endif()
|
||||
|
||||
set(IS_CYW43 0)
|
||||
if (PICO_PLATFORM)
|
||||
@@ -403,10 +483,7 @@ else()
|
||||
${CMAKE_CURRENT_LIST_DIR}/src/usb/usb_descriptors.c
|
||||
)
|
||||
endif()
|
||||
set(EXTERNAL_SOURCES ${CBOR_SOURCES})
|
||||
if(NOT ESP_PLATFORM)
|
||||
set(EXTERNAL_SOURCES ${EXTERNAL_SOURCES} ${MBEDTLS_SOURCES})
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set(
|
||||
CMAKE_C_FLAGS
|
||||
@@ -423,11 +500,6 @@ if(MSVC)
|
||||
_WIN32_WINNT_WIN10_RS5=0
|
||||
_STRALIGN_USE_SECURE_CRT=0
|
||||
NTDDI_WIN11_DT=0)
|
||||
set_source_files_properties(
|
||||
${EXTERNAL_SOURCES}
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS " -W3 -wd4242 -wd4065"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(PICO_PLATFORM)
|
||||
@@ -450,13 +522,17 @@ if(PICO_RP2350)
|
||||
set(INCLUDES ${INCLUDES}
|
||||
${CMAKE_CURRENT_LIST_DIR}/config/rp2350/alt
|
||||
)
|
||||
target_include_directories(mbedtls PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/config/rp2350/alt
|
||||
)
|
||||
target_link_libraries(mbedtls PRIVATE pico_sha256)
|
||||
set(PICO_KEYS_SOURCES ${PICO_KEYS_SOURCES}
|
||||
${CMAKE_CURRENT_LIST_DIR}/config/rp2350/alt/sha256_alt.c
|
||||
)
|
||||
add_definitions(-DMBEDTLS_SHA256_ALT=1)
|
||||
set(LIBRARIES ${LIBRARIES} pico_sha256)
|
||||
endif()
|
||||
set(INTERNAL_SOURCES ${PICO_KEYS_SOURCES})
|
||||
set(PICO_KEYS_SOURCES ${PICO_KEYS_SOURCES} ${EXTERNAL_SOURCES})
|
||||
|
||||
if(NOT TARGET pico_keys_sdk)
|
||||
if(PICO_PLATFORM)
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
idf_component_register(
|
||||
SRCS ${PICO_KEYS_SOURCES}
|
||||
INCLUDE_DIRS . fs rng usb led ../tinycbor/src
|
||||
REQUIRES bootloader_support esp_partition esp_tinyusb efuse mbedtls
|
||||
)
|
||||
idf_component_set_property(${COMPONENT_NAME} WHOLE_ARCHIVE ON)
|
||||
@@ -18,6 +18,8 @@
|
||||
#ifndef _PICO_KEYS_H_
|
||||
#define _PICO_KEYS_H_
|
||||
|
||||
#define MBEDTLS_ALLOW_PRIVATE_ACCESS
|
||||
|
||||
#if defined(PICO_RP2040) || defined(PICO_RP2350)
|
||||
#define PICO_PLATFORM
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user