From 0908fba1a3c3dd7d474041677819b296dffa1f76 Mon Sep 17 00:00:00 2001 From: Renz Christian Bagaporo Date: Sun, 11 Nov 2018 15:44:54 +0800 Subject: [PATCH] mbedtls: import mbedtls project w/o modification --- components/mbedtls/CMakeLists.txt | 142 +++++++------------- components/mbedtls/mbedtls.c | 1 + components/mbedtls/port/esp_bignum.c | 3 +- components/mbedtls/port/esp_hardware.c | 2 + components/mbedtls/port/esp_mem.c | 1 + components/mbedtls/port/mbedtls_debug.c | 5 +- components/mbedtls/port/net_sockets.c | 6 +- components/mbedtls/test/CMakeLists.txt | 2 +- components/nvs_flash/test_nvs_host/Makefile | 8 +- 9 files changed, 68 insertions(+), 102 deletions(-) create mode 100644 components/mbedtls/mbedtls.c diff --git a/components/mbedtls/CMakeLists.txt b/components/mbedtls/CMakeLists.txt index f9964f2e75..c99985d1c8 100644 --- a/components/mbedtls/CMakeLists.txt +++ b/components/mbedtls/CMakeLists.txt @@ -1,101 +1,57 @@ -set(COMPONENT_ADD_INCLUDEDIRS port/include mbedtls/include) -set(COMPONENT_SRCS "mbedtls/library/aes.c" - "mbedtls/library/aesni.c" - "mbedtls/library/arc4.c" - "mbedtls/library/aria.c" - "mbedtls/library/asn1parse.c" - "mbedtls/library/asn1write.c" - "mbedtls/library/base64.c" - "mbedtls/library/bignum.c" - "mbedtls/library/blowfish.c" - "mbedtls/library/camellia.c" - "mbedtls/library/ccm.c" - "mbedtls/library/certs.c" - "mbedtls/library/chacha20.c" - "mbedtls/library/chachapoly.c" - "mbedtls/library/cipher.c" - "mbedtls/library/cipher_wrap.c" - "mbedtls/library/cmac.c" - "mbedtls/library/ctr_drbg.c" - "mbedtls/library/debug.c" - "mbedtls/library/des.c" - "mbedtls/library/dhm.c" - "mbedtls/library/ecdh.c" - "mbedtls/library/ecdsa.c" - "mbedtls/library/ecjpake.c" - "mbedtls/library/ecp.c" - "mbedtls/library/ecp_curves.c" - "mbedtls/library/entropy.c" - "mbedtls/library/entropy_poll.c" - "mbedtls/library/error.c" - "mbedtls/library/gcm.c" - "mbedtls/library/havege.c" - "mbedtls/library/hkdf.c" - "mbedtls/library/hmac_drbg.c" - "mbedtls/library/md.c" - "mbedtls/library/md2.c" - "mbedtls/library/md4.c" - "mbedtls/library/md5.c" - "mbedtls/library/md_wrap.c" - "mbedtls/library/memory_buffer_alloc.c" - "mbedtls/library/net_sockets.c" - "mbedtls/library/nist_kw.c" - "mbedtls/library/oid.c" - "mbedtls/library/padlock.c" - "mbedtls/library/pem.c" - "mbedtls/library/pk.c" - "mbedtls/library/pk_wrap.c" - "mbedtls/library/pkcs11.c" - "mbedtls/library/pkcs12.c" - "mbedtls/library/pkcs5.c" - "mbedtls/library/pkparse.c" - "mbedtls/library/pkwrite.c" - "mbedtls/library/platform.c" - "mbedtls/library/platform_util.c" - "mbedtls/library/poly1305.c" - "mbedtls/library/ripemd160.c" - "mbedtls/library/rsa.c" - "mbedtls/library/rsa_internal.c" - "mbedtls/library/sha1.c" - "mbedtls/library/sha256.c" - "mbedtls/library/sha512.c" - "mbedtls/library/ssl_cache.c" - "mbedtls/library/ssl_ciphersuites.c" - "mbedtls/library/ssl_cli.c" - "mbedtls/library/ssl_cookie.c" - "mbedtls/library/ssl_srv.c" - "mbedtls/library/ssl_ticket.c" - "mbedtls/library/ssl_tls.c" - "mbedtls/library/threading.c" - "mbedtls/library/timing.c" - "mbedtls/library/version.c" - "mbedtls/library/version_features.c" - "mbedtls/library/x509.c" - "mbedtls/library/x509_create.c" - "mbedtls/library/x509_crl.c" - "mbedtls/library/x509_crt.c" - "mbedtls/library/x509_csr.c" - "mbedtls/library/x509write_crt.c" - "mbedtls/library/x509write_csr.c" - "mbedtls/library/xtea.c" - "port/esp_bignum.c" - "port/esp_hardware.c" - "port/esp_mem.c" - "port/esp_sha1.c" - "port/esp_sha256.c" - "port/esp_sha512.c" - "port/mbedtls_debug.c" - "port/net_sockets.c") - +set(COMPONENT_ADD_INCLUDEDIRS "port/include" "mbedtls/include") +set(COMPONENT_SRCS "mbedtls.c") set(COMPONENT_REQUIRES lwip) register_component() -target_compile_definitions(${COMPONENT_TARGET} PUBLIC - -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -) +# Only build mbedtls libraries +set(ENABLE_TESTING CACHE BOOL OFF) +set(ENABLE_PROGRAMS CACHE BOOL OFF) + +# Use same policy between IDF and mbedtls build +function(project) + set(_args ARGV) + _project(${${_args}}) + cmake_policy(SET CMP0022 NEW) +endfunction() + +# Needed to for include_next includes to work from within mbedtls +include_directories("${COMPONENT_PATH}/port/include") + +# Import mbedtls library targets +add_subdirectory(mbedtls) + +set(mbedtls_targets mbedtls mbedcrypto mbedx509) + +# Add port files to mbedtls targets +target_sources(mbedtls PRIVATE "${COMPONENT_PATH}/port/esp_bignum.c" + "${COMPONENT_PATH}/port/esp_hardware.c" + "${COMPONENT_PATH}/port/esp_mem.c" + "${COMPONENT_PATH}/port/esp_sha1.c" + "${COMPONENT_PATH}/port/esp_sha256.c" + "${COMPONENT_PATH}/port/esp_sha512.c" + "${COMPONENT_PATH}/port/mbedtls_debug.c" + "${COMPONENT_PATH}/port/net_sockets.c") + +foreach(target ${mbedtls_targets}) + # Propagate compile options to mbedtls library targets + target_include_directories(${target} PRIVATE "${IDF_INCLUDE_DIRECTORIES}") + target_compile_options(${target} PRIVATE "${IDF_COMPILE_OPTIONS};${IDF_C_COMPILE_OPTIONS}") + target_compile_definitions(${target} PRIVATE "${IDF_COMPILE_DEFINITIONS}") + target_compile_definitions(${target} PUBLIC -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h") + + # The mbedtls targets also depends on core components + foreach(common ${IDF_COMPONENT_REQUIRES_COMMON}) + component_get_target(common_target ${common}) + set_property(TARGET ${target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${common_target}) + set_property(TARGET ${target} APPEND PROPERTY LINK_LIBRARIES ${common_target}) + endforeach() +endforeach() + +# Link mbedtls libraries to component library +target_link_libraries(${COMPONENT_TARGET} ${mbedtls_targets}) # Catch usage of deprecated mbedTLS functions when building tests if(mbedtls_test IN_LIST BUILD_TEST_COMPONENTS) add_definitions(-DMBEDTLS_DEPRECATED_WARNING) -endif() +endif() \ No newline at end of file diff --git a/components/mbedtls/mbedtls.c b/components/mbedtls/mbedtls.c new file mode 100644 index 0000000000..fab17ac780 --- /dev/null +++ b/components/mbedtls/mbedtls.c @@ -0,0 +1 @@ +// Empty file diff --git a/components/mbedtls/port/esp_bignum.c b/components/mbedtls/port/esp_bignum.c index 4dac2b5102..ebcd208cc2 100644 --- a/components/mbedtls/port/esp_bignum.c +++ b/components/mbedtls/port/esp_bignum.c @@ -27,7 +27,6 @@ #include #include #include -#include "mbedtls/bignum.h" #include "rom/bigint.h" #include "soc/hwcrypto_reg.h" #include "esp_system.h" @@ -36,6 +35,8 @@ #include "esp_intr_alloc.h" #include "esp_attr.h" +#include + #include "soc/dport_reg.h" #include "freertos/FreeRTOS.h" diff --git a/components/mbedtls/port/esp_hardware.c b/components/mbedtls/port/esp_hardware.c index 09ededb186..a919ca3403 100644 --- a/components/mbedtls/port/esp_hardware.c +++ b/components/mbedtls/port/esp_hardware.c @@ -9,6 +9,8 @@ #include #include +#include "mbedtls/entropy_poll.h" + #ifndef MBEDTLS_ENTROPY_HARDWARE_ALT #error "MBEDTLS_ENTROPY_HARDWARE_ALT should always be set in ESP-IDF" #endif diff --git a/components/mbedtls/port/esp_mem.c b/components/mbedtls/port/esp_mem.c index 198c0c6cc0..c7b8e706f9 100644 --- a/components/mbedtls/port/esp_mem.c +++ b/components/mbedtls/port/esp_mem.c @@ -15,6 +15,7 @@ #include #include #include +#include "esp_mem.h" #ifndef CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC diff --git a/components/mbedtls/port/mbedtls_debug.c b/components/mbedtls/port/mbedtls_debug.c index 316a76a990..f7b5541453 100644 --- a/components/mbedtls/port/mbedtls_debug.c +++ b/components/mbedtls/port/mbedtls_debug.c @@ -20,6 +20,7 @@ #include "mbedtls/ssl.h" #include "mbedtls/esp_debug.h" +#ifdef CONFIG_MBEDTLS_DEBUG static const char *TAG = "mbedtls"; static void mbedtls_esp_debug(void *ctx, int level, @@ -28,9 +29,9 @@ static void mbedtls_esp_debug(void *ctx, int level, void mbedtls_esp_enable_debug_log(mbedtls_ssl_config *conf, int threshold) { + esp_log_level_t level = ESP_LOG_NONE; mbedtls_debug_set_threshold(threshold); mbedtls_ssl_conf_dbg(conf, mbedtls_esp_debug, NULL); - esp_log_level_t level = ESP_LOG_NONE; switch(threshold) { case 1: level = ESP_LOG_WARN; @@ -53,6 +54,7 @@ void mbedtls_esp_disable_debug_log(mbedtls_ssl_config *conf) mbedtls_ssl_conf_dbg(conf, NULL, NULL); } + /* Default mbedtls debug function that translates mbedTLS debug output to ESP_LOGx debug output. */ @@ -89,3 +91,4 @@ static void mbedtls_esp_debug(void *ctx, int level, break; } } +#endif \ No newline at end of file diff --git a/components/mbedtls/port/net_sockets.c b/components/mbedtls/port/net_sockets.c index 1a182d8f48..6d8a1cc550 100644 --- a/components/mbedtls/port/net_sockets.c +++ b/components/mbedtls/port/net_sockets.c @@ -131,6 +131,10 @@ int mbedtls_net_bind( mbedtls_net_context *ctx, const char *bind_ip, const char { int ret; struct addrinfo hints, *addr_list, *cur; + struct sockaddr_in *serv_addr = NULL; +#if SO_REUSE + int n = 1; +#endif if ( ( ret = net_prepare() ) != 0 ) { return ( ret ); @@ -157,7 +161,6 @@ int mbedtls_net_bind( mbedtls_net_context *ctx, const char *bind_ip, const char /*SO_REUSEADDR option dafault is disable in source code(lwip)*/ #if SO_REUSE - int n = 1; if ( setsockopt( fd, SOL_SOCKET, SO_REUSEADDR, (const char *) &n, sizeof( n ) ) != 0 ) { close( fd ); @@ -166,7 +169,6 @@ int mbedtls_net_bind( mbedtls_net_context *ctx, const char *bind_ip, const char } #endif /*bind interface dafault don't process the addr is 0xffffffff for TCP Protocol*/ - struct sockaddr_in *serv_addr = NULL; serv_addr = (struct sockaddr_in *)cur->ai_addr; serv_addr->sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */ if ( bind( fd, (struct sockaddr *)serv_addr, cur->ai_addrlen ) != 0 ) { diff --git a/components/mbedtls/test/CMakeLists.txt b/components/mbedtls/test/CMakeLists.txt index 0c2125acc5..e1aad74fac 100644 --- a/components/mbedtls/test/CMakeLists.txt +++ b/components/mbedtls/test/CMakeLists.txt @@ -3,4 +3,4 @@ set(COMPONENT_ADD_INCLUDEDIRS ".") set(COMPONENT_REQUIRES unity test_utils mbedtls) -register_component() \ No newline at end of file +register_component() diff --git a/components/nvs_flash/test_nvs_host/Makefile b/components/nvs_flash/test_nvs_host/Makefile index 73aec3253f..b125aaffe1 100644 --- a/components/nvs_flash/test_nvs_host/Makefile +++ b/components/nvs_flash/test_nvs_host/Makefile @@ -21,7 +21,7 @@ SOURCE_FILES = \ crc.cpp \ main.cpp -CPPFLAGS += -I../include -I../src -I./ -I../../esp32/include -I ../../esp_mbedtls/mbedtls/include -I ../../spi_flash/include -I ../../../tools/catch -fprofile-arcs -ftest-coverage -DCONFIG_NVS_ENCRYPTION +CPPFLAGS += -I../include -I../src -I./ -I../../esp32/include -I ../../mbedtls/mbedtls/include -I ../../spi_flash/include -I ../../../tools/catch -fprofile-arcs -ftest-coverage -DCONFIG_NVS_ENCRYPTION CFLAGS += -fprofile-arcs -ftest-coverage CXXFLAGS += -std=c++11 -Wall -Werror LDFLAGS += -lstdc++ -Wall -fprofile-arcs -ftest-coverage @@ -33,8 +33,8 @@ COVERAGE_FILES = $(OBJ_FILES:.o=.gc*) $(OBJ_FILES): %.o: %.cpp $(TEST_PROGRAM): $(OBJ_FILES) - $(MAKE) -C ../../esp_mbedtls/mbedtls/ lib - g++ $(LDFLAGS) -o $(TEST_PROGRAM) $(OBJ_FILES) ../../esp_mbedtls/mbedtls/library/libmbedcrypto.a + $(MAKE) -C ../../mbedtls/mbedtls/ lib + g++ $(LDFLAGS) -o $(TEST_PROGRAM) $(OBJ_FILES) ../../mbedtls/mbedtls/library/libmbedcrypto.a $(OUTPUT_DIR): mkdir -p $(OUTPUT_DIR) @@ -56,7 +56,7 @@ coverage_report: coverage.info @echo "Coverage report is in coverage_report/index.html" clean: - $(MAKE) -C ../../esp_mbedtls/mbedtls/ clean + $(MAKE) -C ../../mbedtls/mbedtls/ clean rm -f $(OBJ_FILES) $(TEST_PROGRAM) rm -f $(COVERAGE_FILES) *.gcov rm -rf coverage_report/