Skip to content

Commit 126dcb9

Browse files
committed
Update Espressif Examples
1 parent 561fead commit 126dcb9

File tree

76 files changed

+8463
-3841
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+8463
-3841
lines changed

.wolfssl_known_macro_extras

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,17 @@ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160
8989
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240
9090
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80
9191
CONFIG_ESP_ENABLE_WOLFSSH
92+
CONFIG_ESP_LATEST_MITIGATIONS
9293
CONFIG_ESP_MAIN_TASK_STACK_SIZE
9394
CONFIG_ESP_TLS_USING_WOLFSSL
9495
CONFIG_ESP_WIFI_PASSWORD
9596
CONFIG_ESP_WIFI_SSID
97+
CONFIG_ESP_WOLFSSL_BIG_SESSION_CACHE
9698
CONFIG_ESP_WOLFSSL_ENABLE_KYBER
9799
CONFIG_ESP_WOLFSSL_ENABLE_WOLFSSH
100+
CONFIG_ESP_WOLFSSL_MEDIUM_SESSION_CACHE
101+
CONFIG_ESP_WOLFSSL_MICRO_SESSION_CACHE
102+
CONFIG_ESP_WOLFSSL_MULTI_THREAD
98103
CONFIG_ESP_WOLFSSL_NO_ESP32_CRYPT
99104
CONFIG_ESP_WOLFSSL_NO_HW_AES
100105
CONFIG_ESP_WOLFSSL_NO_HW_HASH
@@ -103,6 +108,18 @@ CONFIG_ESP_WOLFSSL_NO_HW_RSA_PRI_EXPTMOD
103108
CONFIG_ESP_WOLFSSL_NO_HW_RSA_PRI_MP_MUL
104109
CONFIG_ESP_WOLFSSL_NO_HW_RSA_PRI_MULMOD
105110
CONFIG_ESP_WOLFSSL_NO_STACK_SIZE_BUILD_WARNING
111+
CONFIG_ESP_WOLFSSL_RSA_LOW_MEM
112+
CONFIG_ESP_WOLFSSL_SHA224
113+
CONFIG_ESP_WOLFSSL_SHA384
114+
CONFIG_ESP_WOLFSSL_SMALL_SESSION_CACHE
115+
CONFIG_ESP_WOLFSSL_SP_MATH
116+
CONFIG_ESP_WOLFSSL_STATIC_MEMORY
117+
CONFIG_ESP_WOLFSSL_TCP_REUSE
118+
CONFIG_ESP_WOLFSSL_TITAN_SESSION_CACHE
119+
CONFIG_ESP_WOLFSSL_USE_ECC
120+
CONFIG_ESP_WOLFSSL_USE_FAST_MATH
121+
CONFIG_ESP_WOLFSSL_USE_INTEGER_HEAP_MATH
122+
CONFIG_ESP_WOLFSSL_USE_RSA
106123
CONFIG_FREERTOS_HZ
107124
CONFIG_FREERTOS_UNICORE
108125
CONFIG_IDF_TARGET
@@ -111,8 +128,12 @@ CONFIG_IDF_TARGET_ARCH_XTENSA
111128
CONFIG_IDF_TARGET_ESP32
112129
CONFIG_IDF_TARGET_ESP32C2
113130
CONFIG_IDF_TARGET_ESP32C3
131+
CONFIG_IDF_TARGET_ESP32C5
114132
CONFIG_IDF_TARGET_ESP32C6
133+
CONFIG_IDF_TARGET_ESP32C61
115134
CONFIG_IDF_TARGET_ESP32H2
135+
CONFIG_IDF_TARGET_ESP32H21
136+
CONFIG_IDF_TARGET_ESP32H4
116137
CONFIG_IDF_TARGET_ESP32P4
117138
CONFIG_IDF_TARGET_ESP32S2
118139
CONFIG_IDF_TARGET_ESP32S3
@@ -145,6 +166,7 @@ CONFIG_WOLFCRYPT_ARMASM
145166
CONFIG_WOLFCRYPT_FIPS
146167
CONFIG_WOLFCRYPT_INTELASM
147168
CONFIG_WOLFSSL
169+
CONFIG_WOLFSSL_ALLOW_TLS12
148170
CONFIG_WOLFSSL_ALLOW_TLS13
149171
CONFIG_WOLFSSL_ALPN
150172
CONFIG_WOLFSSL_ALT_CERT_CHAINS
@@ -164,7 +186,9 @@ CONFIG_WOLFSSL_EXAMPLE_NAME_WOLFMQTT_AWS_IOT_MQTT
164186
CONFIG_WOLFSSL_EXAMPLE_NAME_WOLFMQTT_TEMPLATE
165187
CONFIG_WOLFSSL_EXAMPLE_NAME_WOLFSSH_ECHOSERVER
166188
CONFIG_WOLFSSL_EXAMPLE_NAME_WOLFSSH_TEMPLATE
189+
CONFIG_WOLFSSL_EXAMPLE_VERBOSITY
167190
CONFIG_WOLFSSL_HKDF
191+
CONFIG_WOLFSSL_LOW_MEMORY_DISABLE_TLS13
168192
CONFIG_WOLFSSL_MAX_FRAGMENT_LEN
169193
CONFIG_WOLFSSL_NO_ASN_STRICT
170194
CONFIG_WOLFSSL_PSK
@@ -174,6 +198,11 @@ CONFIG_WOLFSSL_TARGET_PORT
174198
CONFIG_WOLFSSL_TLS13_ENABLED
175199
CONFIG_WOLFSSL_TLS_VERSION_1_2
176200
CONFIG_WOLFSSL_TLS_VERSION_1_3
201+
CONFIG_WOLFSSL_USE_CERT_BUFFERS_1024
202+
CONFIG_WOLFSSL_USE_CERT_BUFFERS_2048
203+
CONFIG_WOLFSSL_USE_CERT_BUFFERS_256
204+
CONFIG_WOLFSSL_USE_CERT_BUFFERS_NONE
205+
CONFIG_WOLFSSL_USE_CERT_BUFFERS_SM
177206
CONFIG_WOLFTPM
178207
CONFIG_WOLFTPM_EXAMPLE_NAME_ESPRESSIF
179208
CONFIG_X86
@@ -212,11 +241,17 @@ ENABLE_SECURE_SOCKETS_LOGS
212241
ESP32
213242
ESP8266
214243
ESP_ENABLE_WOLFSSH
244+
ESP_ERR_NVS_NEW_VERSION_FOUND
245+
ESP_ERR_NVS_NO_FREE_PAGES
215246
ESP_IDF_VERSION
216247
ESP_IDF_VERSION_MAJOR
217248
ESP_IDF_VERSION_MINOR
218249
ESP_PLATFORM
250+
ESP_SDK_UTIL_LIB_VERSION
219251
ESP_TASK_MAIN_STACK
252+
ESP_WOLFSSL_DISABLE_DH
253+
ESP_WOLFSSL_DISABLE_ECC
254+
ESP_WOLFSSL_USE_SM
220255
ETHERNET_AVAILABLE
221256
ETHERNET_H
222257
EV_TRIGGER
@@ -277,11 +312,13 @@ HAVE_PKCS7_RSA_RAW_SIGN_CALLBACK
277312
HAVE_POCO_LIB
278313
HAVE_RTP_SYS
279314
HAVE_SECURE_GETENV
315+
HAVE_STACK_HEAP_INFO
280316
HAVE_STACK_SIZE_VERBOSE_LOG
281317
HAVE_THREADX
282318
HAVE_TM_TYPE
283319
HAVE_VALIDATE_DATE
284320
HAVE_VA_COPY
321+
HAVE_WOLFCRYPT_WARMUP
285322
HAVE_X448
286323
HONOR_MATH_USED_LENGTH
287324
HSM_KEY_TYPE_HMAC_224
@@ -453,6 +490,7 @@ PEER_INFO
453490
PKA_ECC_SCALAR_MUL_IN_B_COEFF
454491
PLATFORMIO
455492
PLUTON_CRYPTO_ECC
493+
POSIX_LINUX
456494
PRINT_SESSION_STATS
457495
PTHREAD_STACK_MIN
458496
QAT_ENABLE_HASH
@@ -1080,6 +1118,7 @@ byte
10801118
configTICK_RATE_HZ
10811119
fallthrough
10821120
noinline
1121+
sizeof_server_ecc_cert
10831122
ssize_t
10841123
sun
10851124
versal

IDE/Espressif/ESP-IDF/examples/template/CMakeLists.txt

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,35 @@
11
# wolfSSL Espressif Example Project CMakeLists.txt
2-
# v1.3
2+
# v5.8.2.001
33
#
44
# The following lines of boilerplate have to be in your project's
55
# CMakeLists in this exact order for cmake to work correctly
66
message(STATUS "Begin project ${CMAKE_PROJECT_NAME}")
77

88
cmake_minimum_required(VERSION 3.16)
9+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWOLFSSL_USER_SETTINGS")
10+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWOLFSSL_USER_SETTINGS")
11+
12+
# Optionally set flag for using a private include. See wolfcrypt/port/Espressif/esp-sdk-lib.h
13+
if( "$ENV{CONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG}" STREQUAL "1" )
14+
message(STATUS "Setting CONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG from environment variable")
15+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DCONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG=1")
16+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG=1")
17+
else()
18+
message(STATUS "CONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG not set, not using private config.")
19+
endif()
20+
21+
# Different ESP-IDF versions have different lock files.
22+
# Not starting fresh has unintuitive results.
23+
# So force a fresh dependencies.lock by deleting the current one:
24+
file(REMOVE "./dependencies.lock")
25+
26+
# Force custom partition table regardless of IDE presets
27+
set(PARTITION_TABLE_CUSTOM ON CACHE BOOL "" FORCE)
28+
set(PARTITION_TABLE_FILENAME "${CMAKE_SOURCE_DIR}/partitions_singleapp_large.csv" CACHE STRING "" FORCE)
29+
30+
if("${IDF_TARGET}" STREQUAL "linux")
31+
set(COMPONENTS main)
32+
endif()
933

1034
# For the main project using ESP-IDF version 6 or greater.
1135
# Numerous "dangerous relocation: call8: call target out of range: memcpy" errors encountered
@@ -34,13 +58,16 @@ endif()
3458
#
3559
# Optional WOLFSSL_CMAKE_SYSTEM_NAME detection to find
3660
# USE_MY_PRIVATE_CONFIG path for my_private_config.h
61+
# See: wolfcrypt/port/Espressif/esp-sdk-lib.h
3762
#
3863
# Expected path varies:
3964
#
4065
# WSL: /mnt/c/workspace
4166
# Linux: ~/workspace
4267
# Windows: C:\workspace
4368
#
69+
70+
4471
if(WIN32)
4572
# Windows-specific configuration here
4673
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWOLFSSL_CMAKE_SYSTEM_NAME_WINDOWS")
@@ -49,9 +76,6 @@ endif()
4976
if(CMAKE_HOST_UNIX)
5077
message(STATUS "Detected UNIX")
5178
endif()
52-
if(APPLE)
53-
message(STATUS "Detected APPLE")
54-
endif()
5579
if(CMAKE_HOST_UNIX AND (NOT APPLE) AND EXISTS "/proc/sys/fs/binfmt_misc/WSLInterop")
5680
# Windows-specific configuration here
5781
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWOLFSSL_CMAKE_SYSTEM_NAME_WSL")
@@ -63,7 +87,7 @@ if(CMAKE_HOST_UNIX AND (NOT APPLE) AND (NOT WIN32))
6387
message(STATUS "Detected Linux")
6488
endif()
6589
if(APPLE)
66-
# Windows-specific configuration here
90+
# Apple-specific configuration here
6791
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWOLFSSL_CMAKE_SYSTEM_NAME_APPLE")
6892
message(STATUS "Detected Apple")
6993
endif()
@@ -157,6 +181,27 @@ endif()
157181

158182
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
159183

184+
message(STATUS "Checking Project CONFIG_WOLFSSL_FORCE_V6_INTELLISENSE_FIX=$ENV{CONFIG_WOLFSSL_FORCE_V6_INTELLISENSE_FIX}")
185+
# Optionally force syntax highlighting fix in Visual Studio 2022 for ESP-IDF v6
186+
# See https://sysprogs.com/w/forums/topic/espressif-esp-idf-v6-0-intellisense-error-invalid-value-gnu2b-in-stdgnu2b/
187+
# To resolve, enter the text in VisualGDB Project Properties - Intellisense Settings Tab, "Additional flags for C files":
188+
# -std=gnu17
189+
# And set here:
190+
if( "$ENV{CONFIG_WOLFSSL_FORCE_V6_INTELLISENSE_FIX}" STREQUAL "1" )
191+
set(PREFERRED_DIALECT "gnu17")
192+
if(DEFINED IDF_VERSION_MAJOR AND IDF_VERSION_MAJOR GREATER_EQUAL 6)
193+
message(STATUS "-- Found CONFIG_WOLFSSL_FORCE_V6_INTELLISENSE_FIX, replacing -std=gnu2b with -std=${PREFERRED_DIALECT}")
194+
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
195+
string(REPLACE "-std=gnu2b" "-std=${PREFERRED_DIALECT}" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
196+
endif()
197+
else()
198+
message(STATUS "-- Visual Studio Intellisense Fix not needed for this ESP-IDF version=${IDF_VERSION_MAJOR}")
199+
endif()
200+
else()
201+
message(STATUS "-- Not replacing -std=gnu2b with -std=${PREFERRED_DIALECT} for Viosual Studio Intellisense fix")
202+
message(STATUS "-- To enable, define environment variable: CONFIG_WOLFSSL_FORCE_V6_INTELLISENSE_FIX=1")
203+
endif()
204+
160205
# Once the project is loaded, next check for ESP-IDF version 6 or greater.
161206
# Numerous "dangerous relocation: call8: call target out of range: memcpy" errors encountered
162207
# So we'll allow long calls with the `-mlongcalls` compiler option for all components.
Lines changed: 150 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,161 @@
1+
# ESP8266 Project Makefile for wolfssl_client
12
#
2-
# This is a project Makefile. It is assumed the directory this Makefile resides in is a
3-
# project subdirectory.
3+
# Copyright (C) 2006-2025 wolfSSL Inc.
44
#
5+
# This file is part of wolfSSL.
6+
#
7+
# wolfSSL is free software; you can redistribute it and/or modify
8+
# it under the terms of the GNU General Public License as published by
9+
# the Free Software Foundation; either version 3 of the License, or
10+
# (at your option) any later version.
11+
#
12+
# wolfSSL is distributed in the hope that it will be useful,
13+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
# GNU General Public License for more details.
16+
#
17+
# You should have received a copy of the GNU General Public License
18+
# along with this program; if not, write to the Free Software
19+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
20+
#
21+
22+
PROJECT_NAME := wolfssl_template
23+
$(info ************* wolfssl_template *************)
24+
25+
# ------------- BEGIN COMMON SECTION -------------
26+
27+
ifeq ($(strip $(IDF_PATH)),)
28+
$(error IDF_PATH is not set. Please export it before running make)
29+
endif
30+
31+
# Default compiler flags
32+
CFLAGS ?=
33+
CXXFLAGS ?=
534

635
CFLAGS += -DWOLFSSL_USER_SETTINGS
736

837
# Some of the tests are CPU intenstive, so we'll force the watchdog timer off.
938
# There's an espressif NO_WATCHDOG; we don't use it, as it is reset by sdkconfig.
1039
CFLAGS += -DWOLFSSL_ESP_NO_WATCHDOG=1
1140

12-
PROJECT_NAME := wolfssl_template
41+
# Check if CONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG is set to 1 in environment
42+
ifeq ($(CONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG),1)
43+
$(info Setting CONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG from environment variablev for Makefile)
44+
CFLAGS += -DCONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG=1
45+
CXXFLAGS += -DCONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG=1
46+
else
47+
$(info CONFIG_WOLFSSL_USE_MY_PRIVATE_CONFIG not set, not using private config.)
48+
endif
49+
50+
#
51+
# This is a project Makefile.
52+
# It is assumed the directory this Makefile resides in is a
53+
# project subdirectory containing an entire project.
54+
#
55+
# Optional private config headers. Define environment variables
56+
# to include various default header files that are typically
57+
# not in a git path, and thus excluded from being checked in.
58+
#
59+
# Environment Variable Name | Header file name included
60+
# ---------------------------------- | ---------------------------------------
61+
# MY_PRIVATE_CONFIG (files detected / selected in header)
62+
# USE_MY_PRIVATE_WSL_CONFIG /mnt/c/workspace/my_private_config.h
63+
# USE_MY_PRIVATE_MAC_CONFIG ~/Documents/my_private_config.h
64+
# USE_MY_PRIVATE_LINUX_CONFIG ~/workspace/my_private_config.h
65+
# USE_MY_PRIVATE_WINDOWS_CONFIG /workspace/my_private_config.h
66+
#
67+
#
68+
69+
# Optionally include component source when print path (needs work to then properly build)
70+
#
71+
# include components/wolfssl/component.mk
72+
73+
MY_PRIVATE_CONFIG ?= n
74+
USE_MY_PRIVATE_WSL_CONFIG ?= n
75+
USE_MY_PRIVATE_MAC_CONFIG ?= n
76+
USE_MY_PRIVATE_LINUX_CONFIG ?= n
77+
USE_MY_PRIVATE_WINDOWS_CONFIG ?= n
78+
79+
# Calling shell causes unintuitive error in Windows:
80+
# OS := $(shell uname -s)
81+
#
82+
# But OS, or MY_PRIVATE_CONFIG should already be defined:
83+
84+
ifeq ($(MY_PRIVATE_CONFIG),y)
85+
CFLAGS += -DMY_PRIVATE_CONFIG
86+
$(info Enabled MY_PRIVATE_CONFIG")
87+
endif
88+
89+
# Check for Windows environment variable: USE_MY_PRIVATE_WINDOWS_CONFIG
90+
ifeq ($(USE_MY_PRIVATE_WINDOWS_CONFIG),y)
91+
# This hard coded MY_CONFIG_FILE value must match that in the header file.
92+
MY_CONFIG_FILE := /workspace/my_private_config.h
93+
ifeq ($(wildcard $(MY_CONFIG_FILE)),)
94+
$(info File does not exist: $(MY_CONFIG_FILE))
95+
else
96+
CFLAGS += -DUSE_MY_PRIVATE_WINDOWS_CONFIG
97+
$(info Using private config file for: Windows)
98+
endif
99+
endif
100+
101+
# Check for WSL environment variable: USE_MY_PRIVATE_WSL_CONFIG
102+
ifeq ($(USE_MY_PRIVATE_WSL_CONFIG),y)
103+
# This hard coded MY_CONFIG_FILE value must match that in the header file.
104+
MY_CONFIG_FILE := /mnt/c/workspace/my_private_config.h
105+
ifeq ($(wildcard $(MY_CONFIG_FILE)),)
106+
$(info File does not exist: $(MY_CONFIG_FILE))
107+
else
108+
CFLAGS += -DUSE_MY_PRIVATE_WSL_CONFIG
109+
$(info Using private config file for: WSL)
110+
endif
111+
endif
112+
113+
# Check for Linux environment variable: USE_MY_PRIVATE_LINUX_CONFIG
114+
ifeq ($(USE_MY_PRIVATE_LINUX_CONFIG),y)
115+
# This hard coded MY_CONFIG_FILE value must match that in the header file.
116+
MY_CONFIG_FILE := ~/workspace/my_private_config.h
117+
ifeq ($(wildcard $(MY_CONFIG_FILE)),)
118+
$(info File does not exist: $(MY_CONFIG_FILE))
119+
else
120+
CFLAGS += -DUSE_MY_PRIVATE_LINUX_CONFIG
121+
$(info Using private config file for: Linux)
122+
endif
123+
endif
124+
125+
# Check for Mac environment variable: USE_MY_PRIVATE_MAC_CONFIG
126+
ifeq ($(USE_MY_PRIVATE_MAC_CONFIG),y)
127+
# This hard coded MY_CONFIG_FILE value must match that in the header file.
128+
MY_CONFIG_FILE := ~/Documents/my_private_config.h
129+
ifeq ($(wildcard $(MY_CONFIG_FILE)),)
130+
$(info File does not exist: $(MY_CONFIG_FILE))
131+
else
132+
CFLAGS += -DUSE_MY_PRIVATE_MAC_CONFIG
133+
$(info Using private config file for: Mac)
134+
endif
135+
endif
136+
137+
ifneq ($(OS),MY_PRIVATE_CONFIG)
138+
CFLAGS += -DMY_PRIVATE_CONFIG="$(MY_PRIVATE_CONFIG)"
139+
else
140+
ifeq ($(OS),Linux)
141+
CFLAGS += -DOS_LINUX
142+
endif
143+
ifeq ($(OS),Windows_NT)
144+
CFLAGS += -DWOLFSSL_MAKE_SYSTEM_NAME_WINDOWS
145+
endif
146+
ifeq ($(OS),Darwin)
147+
CFLAGS += -DWOLFSSL_MAKE_SYSTEM_NAME_APPLE
148+
endif
149+
ifneq (,$(findstring MINGW,$(OS)))
150+
CFLAGS += -DWOLFSSL_MAKE_SYSTEM_NAME_MINGW
151+
endif
152+
ifneq (,$(findstring CYGWIN,$(OS)))
153+
CFLAGS += -DWOLFSSL_MAKE_SYSTEM_NAME_CYGWIN
154+
endif
155+
endif
156+
157+
# if there isn't the directory, please disable the line below.
158+
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
13159

160+
# The Standard Espressif IDF include:
14161
include $(IDF_PATH)/make/project.mk

0 commit comments

Comments
 (0)