Skip to content

Commit fb77319

Browse files
committed
Espressif examples: polish & misc updates
1 parent ce2c256 commit fb77319

File tree

24 files changed

+501
-186
lines changed

24 files changed

+501
-186
lines changed

IDE/Espressif/ESP-IDF/examples/template/components/wolfssl/include/user_settings.h

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,16 @@
9292
/* when you want to use SHA3 */
9393
#define WOLFSSL_SHA3
9494

95-
#define HAVE_ED25519 /* ED25519 requires SHA512 */
95+
/* Reminder: ED25519 requires SHA512 */
96+
#define HAVE_ED25519
9697

9798
#define HAVE_ECC
9899
#define HAVE_CURVE25519
99100
#define CURVE25519_SMALL
100101
#define HAVE_ED25519
101102

102-
#define OPENSSL_EXTRA
103+
/* Optional OPENSSL compatibility */
104+
#define OPENSSL_EXTRA
103105
/* when you want to use pkcs7 */
104106
/* #define HAVE_PKCS7 */
105107

@@ -111,7 +113,7 @@
111113
#define WOLFSSL_AES_DIRECT
112114
#endif
113115

114-
/* when you want to use aes counter mode */
116+
/* when you want to use AES counter mode */
115117
/* #define WOLFSSL_AES_DIRECT */
116118
/* #define WOLFSSL_AES_COUNTER */
117119

@@ -125,7 +127,7 @@
125127
/* #define CUSTOM_SLOT_ALLOCATION */
126128
#endif
127129

128-
/* rsa primitive specific definition */
130+
/* RSA primitive specific definition */
129131
#if defined(WOLFSSL_ESP32) || defined(WOLFSSL_ESPWROOM32SE)
130132
/* Define USE_FAST_MATH and SMALL_STACK */
131133
#define ESP32_USE_RSA_PRIMITIVE
@@ -255,8 +257,34 @@
255257
/* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
256258
/***** END CONFIG_IDF_TARGET_ESP32S3 *****/
257259

258-
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
260+
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || \
261+
defined(CONFIG_IDF_TARGET_ESP8684)
262+
/* ESP8684 is essentially ESP32-C2 chip + flash embedded together in a
263+
* single QFN 4x4 mm package. Out of released documentation, Technical
264+
* Reference Manual as well as ESP-IDF Programming Guide is applicable
265+
* to both ESP32-C2 and ESP8684.
266+
*
267+
* See: https://www.esp32.com/viewtopic.php?f=5&t=27926#:~:text=ESP8684%20is%20essentially%20ESP32%2DC2,both%20ESP32%2DC2%20and%20ESP8684. */
268+
259269
/* wolfSSL HW Acceleration supported on ESP32-C2. Uncomment to disable: */
270+
/* #define NO_ESP32_CRYPT */
271+
/* #define NO_WOLFSSL_ESP32_CRYPT_HASH */ /* to disable all SHA HW */
272+
273+
/* These are defined automatically in esp32-crypt.h, here for clarity */
274+
#define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA384 /* no SHA384 HW on C2 */
275+
#define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA512 /* no SHA512 HW on C2 */
276+
277+
/* There's no AES or RSA/Math accelerator on the ESP32-C2
278+
* Auto defined with NO_WOLFSSL_ESP32_CRYPT_RSA_PRI, for clarity: */
279+
#define NO_WOLFSSL_ESP32_CRYPT_AES
280+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
281+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL
282+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD
283+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD
284+
/***** END CONFIG_IDF_TARGET_ESP32C2 *****/
285+
286+
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
287+
/* wolfSSL HW Acceleration supported on ESP32-C3. Uncomment to disable: */
260288

261289
/* #define NO_ESP32_CRYPT */
262290
/* #define NO_WOLFSSL_ESP32_CRYPT_HASH */ /* to disable all SHA HW */
@@ -303,15 +331,6 @@
303331
#define NO_WOLFSSL_ESP32_CRYPT_AES
304332
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
305333
/***** END CONFIG_IDF_TARGET_ESP266 *****/
306-
307-
#elif defined(CONFIG_IDF_TARGET_ESP8684)
308-
/* There's no Hardware Acceleration available on ESP8684 */
309-
#define NO_ESP32_CRYPT
310-
#define NO_WOLFSSL_ESP32_CRYPT_HASH
311-
#define NO_WOLFSSL_ESP32_CRYPT_AES
312-
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
313-
/***** END CONFIG_IDF_TARGET_ESP8684 *****/
314-
315334
#else
316335
/* Anything else encountered, disable HW accleration */
317336
#define NO_ESP32_CRYPT
@@ -327,6 +346,7 @@
327346
#define DEBUG_WOLFSSL_VERBOSE
328347
#define DEBUG_WOLFSSL_SHA_MUTEX
329348
#define WOLFSSL_ESP32_CRYPT_DEBUG
349+
#define WOLFSSL_ESP32_CRYPT_HASH_SHA224_DEBUG
330350
#define NO_RECOVER_SOFTWARE_CALC
331351
#define WOLFSSL_TEST_STRAY 1
332352
#define USE_ESP_DPORT_ACCESS_READ_BUFFER

IDE/Espressif/ESP-IDF/examples/template/main/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void app_main(void)
3838
esp_ShowExtendedSystemInfo();
3939
#endif
4040

41-
#ifdef WOLFSSL_HW_METRICS_DISABLED /* Remove _DISABLED upon #6990 Merge */
41+
#if defined(WOLFSSL_HW_METRICS) && defined(WOLFSSL_HAS_METRICS)
4242
esp_hw_show_metrics();
4343
#endif
4444

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

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -19,54 +19,9 @@ cmake_minimum_required(VERSION 3.16)
1919
# Linux: ~/workspace
2020
# Windows: C:\workspace
2121
#
22-
if(WIN32)
23-
# Windows-specific configuration here
24-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWOLFSSL_CMAKE_SYSTEM_NAME_WINDOWS")
25-
message("Detected Windows")
26-
endif()
27-
if(CMAKE_HOST_UNIX)
28-
message("Detected UNIX")
29-
endif()
30-
if(APPLE)
31-
message("Detected APPLE")
32-
endif()
33-
if(CMAKE_HOST_UNIX AND (NOT APPLE) AND EXISTS "/proc/sys/fs/binfmt_misc/WSLInterop")
34-
# Windows-specific configuration here
35-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWOLFSSL_CMAKE_SYSTEM_NAME_WSL")
36-
message("Detected WSL")
37-
endif()
38-
if(CMAKE_HOST_UNIX AND (NOT APPLE) AND (NOT WIN32))
39-
# Windows-specific configuration here
40-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWOLFSSL_CMAKE_SYSTEM_NAME_LINUX")
41-
message("Detected Linux")
42-
endif()
43-
if(APPLE)
44-
# Windows-specific configuration here
45-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWOLFSSL_CMAKE_SYSTEM_NAME_APPLE")
46-
message("Detected Apple")
47-
endif()
48-
# End optional WOLFSSL_CMAKE_SYSTEM_NAME
4922

50-
# Check that there are not conflicting wolfSSL components
51-
# The ESP Registry Component will be in ./managed_components/wolfssl__wolfssl
52-
# The local component wolfSSL directory will be in ./components/wolfssl
53-
if( EXISTS "${CMAKE_HOME_DIRECTORY}/managed_components/wolfssl__wolfssl" AND EXISTS "${CMAKE_HOME_DIRECTORY}/components/wolfssl" )
54-
# These exclude statements don't seem to be honored by the $ENV{IDF_PATH}/tools/cmake/project.cmake'
55-
# add_subdirectory("${CMAKE_HOME_DIRECTORY}/managed_components/wolfssl__wolfssl" EXCLUDE_FROM_ALL)
56-
# add_subdirectory("${CMAKE_HOME_DIRECTORY}/managed_components/wolfssl__wolfssl/include" EXCLUDE_FROM_ALL)
57-
# So we'll error out and let the user decide how to proceed:
58-
message(WARNING "\nFound wolfSSL components in\n"
59-
"./managed_components/wolfssl__wolfssl\n"
60-
"and\n"
61-
"./components/wolfssl\n"
62-
"in project directory: \n"
63-
"${CMAKE_HOME_DIRECTORY}")
64-
message(FATAL_ERROR "\nPlease use either the ESP Registry Managed Component or the wolfSSL component directory but not both.\n"
65-
"If removing the ./managed_components/wolfssl__wolfssl directory, remember to also remove "
66-
"or rename the idf_component.yml file typically found in ./main/")
67-
else()
68-
message(STATUS "No conflicting wolfSSL components found.")
69-
endif()
23+
# Optionally specify a location for wolfSSL component source code
24+
# set(WOLFSSL_ROOT "c:/test/blogtest/wolfssl" )
7025

7126
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
7227

IDE/Espressif/ESP-IDF/examples/wolfssl_benchmark/components/wolfssl/include/user_settings.h

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,15 @@
9292
/* when you want to use SHA3 */
9393
#define WOLFSSL_SHA3
9494

95-
#define HAVE_ED25519 /* ED25519 requires SHA512 */
95+
/* ED25519 requires SHA512 */
96+
#define HAVE_ED25519
9697

9798
#define HAVE_ECC
9899
#define HAVE_CURVE25519
99100
#define CURVE25519_SMALL
100101
#define HAVE_ED25519
101102

102-
#define OPENSSL_EXTRA
103+
#define OPENSSL_EXTRA
103104
/* when you want to use pkcs7 */
104105
/* #define HAVE_PKCS7 */
105106

@@ -157,9 +158,10 @@
157158

158159

159160
/* adjust wait-timeout count if you see timeout in RSA HW acceleration */
160-
#define ESP_RSA_TIMEOUT_CNT 0x249F00
161+
#define ESP_RSA_TIMEOUT_CNT 0x349F00
161162

162-
#define HASH_SIZE_LIMIT /* for test.c */
163+
/* hash limit for test.c */
164+
#define HASH_SIZE_LIMIT
163165

164166
/* USE_FAST_MATH is default */
165167
#define USE_FAST_MATH
@@ -168,6 +170,7 @@
168170
/* #undef USE_FAST_MATH */
169171
/* #define SP_MATH */
170172
/* #define WOLFSSL_SP_MATH_ALL */
173+
/* #define WOLFSSL_SP_RISCV32 */
171174

172175
/***** Use Integer Heap Math *****/
173176
/* #undef USE_FAST_MATH */
@@ -255,8 +258,34 @@
255258
/* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
256259
/***** END CONFIG_IDF_TARGET_ESP32S3 *****/
257260

258-
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
261+
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || \
262+
defined(CONFIG_IDF_TARGET_ESP8684)
263+
/* ESP8684 is essentially ESP32-C2 chip + flash embedded together in a
264+
* single QFN 4x4 mm package. Out of released documentation, Technical
265+
* Reference Manual as well as ESP-IDF Programming Guide is applicable
266+
* to both ESP32-C2 and ESP8684.
267+
*
268+
* See: https://www.esp32.com/viewtopic.php?f=5&t=27926#:~:text=ESP8684%20is%20essentially%20ESP32%2DC2,both%20ESP32%2DC2%20and%20ESP8684. */
269+
259270
/* wolfSSL HW Acceleration supported on ESP32-C2. Uncomment to disable: */
271+
/* #define NO_ESP32_CRYPT */
272+
/* #define NO_WOLFSSL_ESP32_CRYPT_HASH */ /* to disable all SHA HW */
273+
274+
/* These are defined automatically in esp32-crypt.h, here for clarity */
275+
#define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA384 /* no SHA384 HW on C2 */
276+
#define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA512 /* no SHA512 HW on C2 */
277+
278+
/* There's no AES or RSA/Math accelerator on the ESP32-C2
279+
* Auto defined with NO_WOLFSSL_ESP32_CRYPT_RSA_PRI, for clarity: */
280+
#define NO_WOLFSSL_ESP32_CRYPT_AES
281+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
282+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL
283+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD
284+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD
285+
/***** END CONFIG_IDF_TARGET_ESP32C2 *****/
286+
287+
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
288+
/* wolfSSL HW Acceleration supported on ESP32-C3. Uncomment to disable: */
260289

261290
/* #define NO_ESP32_CRYPT */
262291
/* #define NO_WOLFSSL_ESP32_CRYPT_HASH */ /* to disable all SHA HW */
@@ -327,6 +356,7 @@
327356
#define DEBUG_WOLFSSL_VERBOSE
328357
#define DEBUG_WOLFSSL_SHA_MUTEX
329358
#define WOLFSSL_ESP32_CRYPT_DEBUG
359+
#define WOLFSSL_ESP32_CRYPT_HASH_SHA224_DEBUG
330360
#define NO_RECOVER_SOFTWARE_CALC
331361
#define WOLFSSL_TEST_STRAY 1
332362
#define USE_ESP_DPORT_ACCESS_READ_BUFFER
@@ -335,12 +365,16 @@
335365
#define ESP_DISABLE_HW_TASK_LOCK
336366
*/
337367

338-
#define WOLFSSL_ESPIDF_ERROR_PAUSE /* Pause in a loop rather than exit. */
368+
/* Pause in a loop rather than exit. */
369+
#define WOLFSSL_ESPIDF_ERROR_PAUSE
370+
339371
#define WOLFSSL_HW_METRICS
340372

341-
/* #define HASH_SIZE_LIMIT */ /* for test.c */
373+
/* for test.c */
374+
/* #define HASH_SIZE_LIMIT */
342375

343-
/* #define NO_HW_MATH_TEST */ /* Optionall turn off HW math checks */
376+
/* Optionally turn off HW math checks */
377+
/* #define NO_HW_MATH_TEST */
344378

345379
/* Optionally include alternate HW test library: alt_hw_test.h */
346380
/* When enabling, the ./components/wolfssl/CMakeLists.txt file
@@ -362,7 +396,6 @@
362396
** [Z = X * Y mod M] in esp_mp_mulmod() */
363397
/* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD */
364398

365-
366399
#define WOLFSSL_PUBLIC_MP /* used by benchmark */
367400
#define USE_CERT_BUFFERS_2048
368401

@@ -406,3 +439,12 @@
406439
#define CTX_SERVER_KEY_SIZE sizeof_server_key_der_2048
407440
#define CTX_SERVER_KEY_TYPE WOLFSSL_FILETYPE_ASN1
408441
#endif
442+
443+
/* See settings.h for some of the possible hardening options:
444+
*
445+
* #define NO_ESPIDF_DEFAULT
446+
* #define WC_NO_CACHE_RESISTANT
447+
* #define WC_AES_BITSLICED
448+
* #define HAVE_AES_ECB
449+
* #define HAVE_AES_DIRECT
450+
*/

IDE/Espressif/ESP-IDF/examples/wolfssl_benchmark/main/main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
#include <wolfssl/version.h>
3030
#include "wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h"
3131
#ifndef WOLFSSL_ESPIDF
32-
#warning "problem with wolfSSL user_settings. Check components/wolfssl/include"
32+
#warning "Problem with wolfSSL user_settings."
33+
#warning "Check components/wolfssl/include"
3334
#endif
3435

3536
#include <wolfssl/wolfcrypt/types.h>

IDE/Espressif/ESP-IDF/examples/wolfssl_client/components/wolfssl/include/user_settings.h

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,34 @@
255255
/* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
256256
/***** END CONFIG_IDF_TARGET_ESP32S3 *****/
257257

258-
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
258+
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || \
259+
defined(CONFIG_IDF_TARGET_ESP8684)
260+
/* ESP8684 is essentially ESP32-C2 chip + flash embedded together in a
261+
* single QFN 4x4 mm package. Out of released documentation, Technical
262+
* Reference Manual as well as ESP-IDF Programming Guide is applicable
263+
* to both ESP32-C2 and ESP8684.
264+
*
265+
* See: https://www.esp32.com/viewtopic.php?f=5&t=27926#:~:text=ESP8684%20is%20essentially%20ESP32%2DC2,both%20ESP32%2DC2%20and%20ESP8684. */
266+
259267
/* wolfSSL HW Acceleration supported on ESP32-C2. Uncomment to disable: */
268+
/* #define NO_ESP32_CRYPT */
269+
/* #define NO_WOLFSSL_ESP32_CRYPT_HASH */ /* to disable all SHA HW */
270+
271+
/* These are defined automatically in esp32-crypt.h, here for clarity */
272+
#define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA384 /* no SHA384 HW on C2 */
273+
#define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA512 /* no SHA512 HW on C2 */
274+
275+
/* There's no AES or RSA/Math accelerator on the ESP32-C2
276+
* Auto defined with NO_WOLFSSL_ESP32_CRYPT_RSA_PRI, for clarity: */
277+
#define NO_WOLFSSL_ESP32_CRYPT_AES
278+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
279+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL
280+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD
281+
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD
282+
/***** END CONFIG_IDF_TARGET_ESP32C2 *****/
283+
284+
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
285+
/* wolfSSL HW Acceleration supported on ESP32-C3. Uncomment to disable: */
260286

261287
/* #define NO_ESP32_CRYPT */
262288
/* #define NO_WOLFSSL_ESP32_CRYPT_HASH */ /* to disable all SHA HW */
@@ -304,14 +330,6 @@
304330
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
305331
/***** END CONFIG_IDF_TARGET_ESP266 *****/
306332

307-
#elif defined(CONFIG_IDF_TARGET_ESP8684)
308-
/* There's no Hardware Acceleration available on ESP8684 */
309-
#define NO_ESP32_CRYPT
310-
#define NO_WOLFSSL_ESP32_CRYPT_HASH
311-
#define NO_WOLFSSL_ESP32_CRYPT_AES
312-
#define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
313-
/***** END CONFIG_IDF_TARGET_ESP8684 *****/
314-
315333
#else
316334
/* Anything else encountered, disable HW accleration */
317335
#define NO_ESP32_CRYPT
@@ -327,6 +345,7 @@
327345
#define DEBUG_WOLFSSL_VERBOSE
328346
#define DEBUG_WOLFSSL_SHA_MUTEX
329347
#define WOLFSSL_ESP32_CRYPT_DEBUG
348+
#define WOLFSSL_ESP32_CRYPT_HASH_SHA224_DEBUG
330349
#define NO_RECOVER_SOFTWARE_CALC
331350
#define WOLFSSL_TEST_STRAY 1
332351
#define USE_ESP_DPORT_ACCESS_READ_BUFFER
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
menu "Example Configuration"
22

3-
config TARGET_HOST
3+
config WOLFSSL_TARGET_HOST
44
string "Target host"
5-
default "127.0.01.1"
5+
default "127.0.0.1"
66
help
77
host address for the example to connect
8-
8+
9+
config WOLFSSL_TARGET_PORT
10+
int "Target port"
11+
default 11111
12+
help
13+
host port for the example to connect
14+
915
endmenu

IDE/Espressif/ESP-IDF/examples/wolfssl_client/main/client-tls.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ WOLFSSL_ESP_TASK tls_smp_client_task(void* args)
356356

357357
/* Fill in the server address */
358358
servAddr.sin_family = AF_INET; /* using IPv4 */
359-
servAddr.sin_port = htons(DEFAULT_PORT); /* on DEFAULT_PORT */
359+
servAddr.sin_port = htons(TLS_SMP_DEFAULT_PORT); /* on DEFAULT_PORT */
360360

361361
if (*ch >= '1' && *ch <= '9') {
362362
/* Get the server IPv4 address from the command line call */
@@ -375,7 +375,7 @@ WOLFSSL_ESP_TASK tls_smp_client_task(void* args)
375375
sprintf(buff,
376376
"Connecting to server....%s(port:%d)",
377377
TLS_SMP_TARGET_HOST,
378-
DEFAULT_PORT);
378+
TLS_SMP_DEFAULT_PORT);
379379
WOLFSSL_MSG(buff);
380380
printf("%s\n", buff);
381381

0 commit comments

Comments
 (0)