mbedtls icon indicating copy to clipboard operation
mbedtls copied to clipboard

Simplify PSA built-in ECDH

Open mpg opened this issue 1 year ago • 6 comments

Description

In PSA built-in ECDH, use ECP directly rather than the legacy ECDH module, which has a lot of unnecessary cruft.

This reduces the code size of a configuration similar to TF-M medium (except not using p256-m) by 1k. Or actually of any configuration that's based on PSA and doesn't have an ECDH driver.

PR checklist

  • [ ] changelog not required - no change in observable behaviour.
  • [ ] backport not required - enhancement
  • [ ] tests not required - covered by existing tests

Note: I tested manually that the Everest path is indeed taken when it should by purposefully introducing a bug here (eg shared_secret[0] = 42; before returning) and observing it makes the tests fail as expected (in a config with Everest enabled of course).

mpg avatar Jan 26 '24 11:01 mpg

Is CI failure related to this change?

[2024-01-26T12:40:33.639Z]   CC    psa_crypto_ecp.c
[2024-01-26T12:40:33.895Z] In file included from ../3rdparty/everest/include/everest/kremlib.h:26:0,
[2024-01-26T12:40:33.895Z]                  from ../3rdparty/everest/include/everest/Hacl_Curve25519.h:16,
[2024-01-26T12:40:33.895Z]                  from psa_crypto_ecp.c:28:
[2024-01-26T12:40:33.895Z] ../3rdparty/everest/include/everest/kremlin/internal/types.h:51:18: error: '__int128' is not supported on this target
[2024-01-26T12:40:33.895Z]  typedef unsigned __int128 FStar_UInt128_uint128;
[2024-01-26T12:40:33.895Z]                   ^
[2024-01-26T12:40:33.895Z] Makefile:313: recipe for target 'psa_crypto_ecp.o' failed
[2024-01-26T12:40:33.895Z] make[1]: *** [psa_crypto_ecp.o] Error 1
[2024-01-26T12:40:33.895Z] make[1]: *** Waiting for unfinished jobs....
[2024-01-26T12:40:35.260Z] make: *** [lib] Error 2
[2024-01-26T12:40:35.260Z] Makefile:18: recipe for target 'lib' failed
[2024-01-26T12:40:35.260Z] ^^^^test_m32_everest: build: i386, Everest ECDH context (ASan build): make CC=gcc CFLAGS="$ASAN_CFLAGS -m32" LDFLAGS="-m32 $ASAN_CFLAGS" -> 2^^^^

tom-cosgrove-arm avatar Jan 26 '24 15:01 tom-cosgrove-arm

Historical note: the reason PSA calls ecdh.c functions is that it was the easy thing to do, at a time when ease of implementation was much more valued than code size. Another reason could have been validation, but I think ecdh.c doesn't do any relevant validation. In particular the check that the coordinates are for a point on the curve is called by ecp_mul.

We do need to make sure that we won't accidentally miss the necessary checks. So we need to make sure we have enough test coverage for invalid public keys in test_suite_psa_crypto and not just test_suite_ecdh.

gilles-peskine-arm avatar Jan 28 '24 20:01 gilles-peskine-arm

Is CI failure related to this change?

Seems to be, as I'm changing the way Everest is handled (now in psa_crypto_ecp.c). Looks there are some gotchas and I wasn't supposed to just include Hacl_Curve25519.h... Will look into it.

(Btw, I was a bit disappointed that the Everest code does not have const-correct prototypes.)

mpg avatar Jan 29 '24 09:01 mpg

I'm also getting issues with this Hacl_Curve25519.h @mpg

take a look at this repo: https://github.com/AllanOricil/esp32-mfa-totp-generator/pull/12/files#diff-4446afd728a4f34cbcddc306a9cb6be845d1a61c216076a295683bcc9c106724

 *  Executing task in folder esp32-helloworld: platformio run --environment esp32dev 

Processing esp32dev (platform: espressif32; board: esp32dev; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Running install-node-deps.py
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (6.5.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20014.231204 (2.0.14) 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 46 compatible libraries
Scanning dependencies...
Dependency Graph
|-- lvgl @ 8.3.11+sha.74d0a81
|-- XPT2046_Bitbang @ 1.0.1+sha.e8da3dc
|-- TFT_eSPI @ 2.5.33+sha.317ce97
|-- SdFat - Adafruit Fork @ 2.2.3+sha.f3bba10
|-- Adafruit NeoPixel @ 1.1.2+sha.95a45f6
|-- Adafruit SPIFlash @ 4.3.4+sha.160b5ff
|-- TOTP library @ 1.1.0+sha.aad3927
|-- Base32 @ 0.0.0+20240317182745.sha.1c65e65
|-- Time @ 1.6.1+sha.a18e50d
|-- ESP32Time @ 2.0.4+sha.cefc685
|-- PubSubClient @ 2.8.0+sha.2d228f2
|-- ArduinoJson @ 7.0.4+sha.36e1eec
|-- mbedtls @ 0.0.0+20240427215134.sha.2ca6c28
|-- FS @ 2.0.0
|-- SD @ 2.0.0
|-- WiFi @ 2.0.0
|-- SPI @ 2.0.0
Building in release mode
Compiling .pio/build/esp32dev/src/ui/ui_events.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/nxp/vglite/lv_vglite_buf.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/nxp/vglite/lv_vglite_utils.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/renesas/lv_gpu_d2_draw_label.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/renesas/lv_gpu_d2_ra6m3.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_arc.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_bg.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_composite.c.o
In file included from /Users/allanoricil/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/port/include/mbedtls/esp_config.h:30,
                 from .pio/libdeps/esp32dev/mbedtls/include/mbedtls/build_info.h:108,
                 from .pio/libdeps/esp32dev/mbedtls/include/mbedtls/platform.h:30,
                 from src/pin.h:4,
                 from src/ui/ui_events.c:12:
/Users/allanoricil/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/config.h:2890: warning: "MBEDTLS_ENTROPY_C" redefined
 #define MBEDTLS_ENTROPY_C
 
<command-line>: note: this is the location of the previous definition
In file included from /Users/allanoricil/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/port/include/mbedtls/esp_config.h:30,
                 from .pio/libdeps/esp32dev/mbedtls/include/mbedtls/build_info.h:108,
                 from .pio/libdeps/esp32dev/mbedtls/include/mbedtls/platform.h:30,
                 from src/pin.h:4,
                 from src/ui/ui_events.c:12:
/Users/allanoricil/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/config.h:2993: warning: "MBEDTLS_MD_C" redefined
 #define MBEDTLS_MD_C
 
<command-line>: note: this is the location of the previous definition
In file included from .pio/libdeps/esp32dev/mbedtls/include/mbedtls/build_info.h:166,
                 from .pio/libdeps/esp32dev/mbedtls/include/mbedtls/platform.h:30,
                 from src/pin.h:4,
                 from src/ui/ui_events.c:12:
.pio/libdeps/esp32dev/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h:166: warning: "MBEDTLS_MD_CAN_SHA256" redefined
 #define MBEDTLS_MD_CAN_SHA256
 
<command-line>: note: this is the location of the previous definition
In file included from .pio/libdeps/esp32dev/mbedtls/include/mbedtls/build_info.h:166,
                 from .pio/libdeps/esp32dev/mbedtls/include/mbedtls/platform.h:30,
                 from src/pin.h:4,
                 from src/ui/ui_events.c:12:
.pio/libdeps/esp32dev/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h:174: warning: "MBEDTLS_MD_CAN_SHA512" redefined
 #define MBEDTLS_MD_CAN_SHA512
 
<command-line>: note: this is the location of the previous definition
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_img.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_label.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_layer.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_line.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_mask.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_polygon.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_rect.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_stack_blur.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_texture_cache.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sdl/lv_draw_sdl_utils.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_arc.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_blend.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_dither.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_gradient.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_img.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_layer.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_letter.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_line.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_polygon.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_rect.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/sw/lv_draw_sw_transform.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/draw/swm341_dma2d/lv_gpu_swm341_dma2d.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/layouts/flex/lv_flex.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/layouts/grid/lv_grid.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/bmp/lv_bmp.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/ffmpeg/lv_ffmpeg.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/freetype/lv_freetype.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/fsdrv/lv_fs_fatfs.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/fsdrv/lv_fs_littlefs.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/fsdrv/lv_fs_posix.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/fsdrv/lv_fs_stdio.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/fsdrv/lv_fs_win32.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/gif/gifdec.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/gif/lv_gif.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/png/lodepng.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/png/lv_png.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/qrcode/lv_qrcode.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/qrcode/qrcodegen.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/rlottie/lv_rlottie.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/sjpg/lv_sjpg.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/sjpg/tjpgd.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/libs/tiny_ttf/lv_tiny_ttf.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/lv_extra.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/others/fragment/lv_fragment.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/others/fragment/lv_fragment_manager.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/others/gridnav/lv_gridnav.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/others/ime/lv_ime_pinyin.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/others/imgfont/lv_imgfont.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/others/monkey/lv_monkey.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/others/msg/lv_msg.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/others/snapshot/lv_snapshot.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/themes/basic/lv_theme_basic.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/themes/default/lv_theme_default.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/themes/mono/lv_theme_mono.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/animimg/lv_animimg.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/calendar/lv_calendar.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/calendar/lv_calendar_header_arrow.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/calendar/lv_calendar_header_dropdown.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/chart/lv_chart.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/colorwheel/lv_colorwheel.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/imgbtn/lv_imgbtn.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/keyboard/lv_keyboard.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/led/lv_led.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/list/lv_list.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/menu/lv_menu.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/meter/lv_meter.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/msgbox/lv_msgbox.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/span/lv_span.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/spinbox/lv_spinbox.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/spinner/lv_spinner.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/tabview/lv_tabview.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/tileview/lv_tileview.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/extra/widgets/win/lv_win.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_dejavu_16_persian_hebrew.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_fmt_txt.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_loader.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_10.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_12.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_12_subpx.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_14.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_16.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_18.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_20.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_22.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_24.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_26.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_28.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_28_compressed.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_30.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_32.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_34.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_36.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_38.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_40.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_42.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_44.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_46.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_48.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_montserrat_8.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_simsun_16_cjk.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_unscii_16.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/font/lv_font_unscii_8.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/hal/lv_hal_disp.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/hal/lv_hal_indev.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/hal/lv_hal_tick.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_anim.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_anim_timeline.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_area.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_async.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_bidi.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_color.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_fs.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_gc.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_ll.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_log.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_lru.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_math.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_mem.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_printf.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_style.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_style_gen.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_templ.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_timer.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_tlsf.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_txt.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_txt_ap.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/misc/lv_utils.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_arc.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_bar.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_btn.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_btnmatrix.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_canvas.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_checkbox.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_dropdown.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_img.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_label.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_line.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_objx_templ.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_roller.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_slider.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_switch.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_table.c.o
Compiling .pio/build/esp32dev/libb1c/lvgl/widgets/lv_textarea.c.o
Compiling .pio/build/esp32dev/lib223/FS/FS.cpp.o
Compiling .pio/build/esp32dev/lib223/FS/vfs_api.cpp.o
Compiling .pio/build/esp32dev/libe36/SPIFFS/SPIFFS.cpp.o
Archiving .pio/build/esp32dev/libb1c/liblvgl.a
Compiling .pio/build/esp32dev/liba6e/XPT2046_Bitbang/XPT2046_Bitbang.cpp.o
Indexing .pio/build/esp32dev/libb1c/liblvgl.a
Compiling .pio/build/esp32dev/lib6c2/SPI/SPI.cpp.o
Archiving .pio/build/esp32dev/lib223/libFS.a
Archiving .pio/build/esp32dev/libe36/libSPIFFS.a
Indexing .pio/build/esp32dev/lib223/libFS.a
Indexing .pio/build/esp32dev/libe36/libSPIFFS.a
In file included from .pio/libdeps/esp32dev/XPT2046_Bitbang/XPT2046_Bitbang.cpp:1:
.pio/libdeps/esp32dev/XPT2046_Bitbang/XPT2046_Bitbang.h:7: warning: "TFT_HEIGHT" redefined
 #define TFT_HEIGHT 320
 
<command-line>: note: this is the location of the previous definition
In file included from .pio/libdeps/esp32dev/XPT2046_Bitbang/XPT2046_Bitbang.cpp:1:
.pio/libdeps/esp32dev/XPT2046_Bitbang/XPT2046_Bitbang.h:8: warning: "TFT_WIDTH" redefined
 #define TFT_WIDTH 240
 
<command-line>: note: this is the location of the previous definition
Compiling .pio/build/esp32dev/lib17a/LittleFS/LittleFS.cpp.o
Compiling .pio/build/esp32dev/libeb9/TFT_eSPI/TFT_eSPI.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/ExFatLib/ExFatDbg.cpp.o
Archiving .pio/build/esp32dev/liba6e/libXPT2046_Bitbang.a
Indexing .pio/build/esp32dev/liba6e/libXPT2046_Bitbang.a
Archiving .pio/build/esp32dev/lib6c2/libSPI.a
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/ExFatLib/ExFatFile.cpp.o
In file included from .pio/libdeps/esp32dev/TFT_eSPI/User_Setup_Select.h:202,
                 from .pio/libdeps/esp32dev/TFT_eSPI/TFT_eSPI.h:69,
                 from .pio/libdeps/esp32dev/TFT_eSPI/TFT_eSPI.cpp:16:
.pio/libdeps/esp32dev/TFT_eSPI/TFT_Drivers/ILI9341_Defines.h:5: warning: "TFT_WIDTH" redefined
   #define TFT_WIDTH  240
 
<command-line>: note: this is the location of the previous definition
In file included from .pio/libdeps/esp32dev/TFT_eSPI/User_Setup_Select.h:202,
                 from .pio/libdeps/esp32dev/TFT_eSPI/TFT_eSPI.h:69,
                 from .pio/libdeps/esp32dev/TFT_eSPI/TFT_eSPI.cpp:16:
.pio/libdeps/esp32dev/TFT_eSPI/TFT_Drivers/ILI9341_Defines.h:6: warning: "TFT_HEIGHT" redefined
   #define TFT_HEIGHT 320
 
<command-line>: note: this is the location of the previous definition
Indexing .pio/build/esp32dev/lib6c2/libSPI.a
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/ExFatLib/ExFatFilePrint.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/ExFatLib/ExFatFileWrite.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/ExFatLib/ExFatFormatter.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/ExFatLib/ExFatName.cpp.o
Archiving .pio/build/esp32dev/lib17a/libLittleFS.a
Indexing .pio/build/esp32dev/lib17a/libLittleFS.a
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/ExFatLib/ExFatPartition.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/ExFatLib/ExFatVolume.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatDbg.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatFile.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatFileLFN.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatFilePrint.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatFileSFN.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatFormatter.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatName.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatPartition.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FatLib/FatVolume.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FreeStack.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FsLib/FsFile.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FsLib/FsNew.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/FsLib/FsVolume.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/MinimumSerial.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SdCard/SdCardInfo.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SdCard/SdSpiCard.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SdCard/SdioTeensy.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SpiDriver/SdSpiArtemis.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SpiDriver/SdSpiChipSelect.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SpiDriver/SdSpiDue.cpp.o
Archiving .pio/build/esp32dev/libeb9/libTFT_eSPI.a
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SpiDriver/SdSpiESP.cpp.o
Indexing .pio/build/esp32dev/libeb9/libTFT_eSPI.a
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SpiDriver/SdSpiParticle.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SpiDriver/SdSpiSTM32.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SpiDriver/SdSpiSTM32Core.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/SpiDriver/SdSpiTeensy3.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/common/FmtNumber.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/common/FsCache.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/common/FsDateTime.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/common/FsName.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/common/FsStructs.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/common/FsUtf.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/common/PrintBasic.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/common/upcase.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/iostream/StdioStream.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/iostream/StreamBaseClass.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/iostream/istream.cpp.o
Compiling .pio/build/esp32dev/lib079/SdFat - Adafruit Fork/iostream/ostream.cpp.o
Compiling .pio/build/esp32dev/libc98/Adafruit NeoPixel/Adafruit_NeoPixel.cpp.o
Compiling .pio/build/esp32dev/libc98/Adafruit NeoPixel/esp8266.c.o
Compiling .pio/build/esp32dev/libbf6/Adafruit SPIFlash/Adafruit_FlashCache.cpp.o
Compiling .pio/build/esp32dev/libbf6/Adafruit SPIFlash/Adafruit_SPIFlash.cpp.o
Compiling .pio/build/esp32dev/libbf6/Adafruit SPIFlash/Adafruit_SPIFlashBase.cpp.o
.pio/libdeps/esp32dev/Adafruit NeoPixel/esp8266.c: In function 'espShow':
.pio/libdeps/esp32dev/Adafruit NeoPixel/esp8266.c:35:51: warning: variable 'pinMask' set but not used [-Wunused-but-set-variable]
   uint32_t t, time0, time1, period, c, startTime, pinMask;
                                                   ^~~~~~~
Compiling .pio/build/esp32dev/libbf6/Adafruit SPIFlash/esp32/Adafruit_FlashTransport_ESP32.cpp.o
Compiling .pio/build/esp32dev/libbf6/Adafruit SPIFlash/qspi/Adafruit_FlashTransport_QSPI_NRF.cpp.o
Compiling .pio/build/esp32dev/libbf6/Adafruit SPIFlash/qspi/Adafruit_FlashTransport_QSPI_SAMD.cpp.o
Compiling .pio/build/esp32dev/libbf6/Adafruit SPIFlash/rp2040/Adafruit_FlashTransport_RP2040.cpp.o
Archiving .pio/build/esp32dev/lib079/libSdFat - Adafruit Fork.a
Compiling .pio/build/esp32dev/libbf6/Adafruit SPIFlash/spi/Adafruit_FlashTransport_SPI.cpp.o
Indexing .pio/build/esp32dev/lib079/libSdFat - Adafruit Fork.a
Archiving .pio/build/esp32dev/libc98/libAdafruit NeoPixel.a
Indexing .pio/build/esp32dev/libc98/libAdafruit NeoPixel.a
Compiling .pio/build/esp32dev/lib11a/TOTP library/TOTP.cpp.o
Compiling .pio/build/esp32dev/lib11a/TOTP library/sha1.cpp.o
Compiling .pio/build/esp32dev/lib361/Base32/Base32.cpp.o
Compiling .pio/build/esp32dev/lib9d9/Time/DateStrings.cpp.o
Compiling .pio/build/esp32dev/lib9d9/Time/Time.cpp.o
Compiling .pio/build/esp32dev/lib150/ESP32Time/ESP32Time.cpp.o
Archiving .pio/build/esp32dev/libbf6/libAdafruit SPIFlash.a
Indexing .pio/build/esp32dev/libbf6/libAdafruit SPIFlash.a
Compiling .pio/build/esp32dev/libc0c/PubSubClient/PubSubClient.cpp.o
Compiling .pio/build/esp32dev/libbd6/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c.o
Compiling .pio/build/esp32dev/libbd6/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c.o
Archiving .pio/build/esp32dev/lib11a/libTOTP library.a
Indexing .pio/build/esp32dev/lib11a/libTOTP library.a
.pio/libdeps/esp32dev/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c:31:10: fatal error: common.h: No such file or directory

****************************************************************
* Looking for common.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:common.h"
* Web  > https://registry.platformio.org/search?q=header:common.h
*
****************************************************************

 #include "common.h"
          ^~~~~~~~~~
compilation terminated.
.pio/libdeps/esp32dev/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c:11:10: fatal error: Hacl_Curve25519.h: No such file or directory

*************************************************************************
* Looking for Hacl_Curve25519.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Hacl_Curve25519.h"
* Web  > https://registry.platformio.org/search?q=header:Hacl_Curve25519.h
*
*************************************************************************

 #include "Hacl_Curve25519.h"
          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
Compiling .pio/build/esp32dev/libbd6/mbedtls/3rdparty/everest/library/everest.c.o
*** [.pio/build/esp32dev/libbd6/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c.o] Error 1
*** [.pio/build/esp32dev/libbd6/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c.o] Error 1
.pio/libdeps/esp32dev/mbedtls/3rdparty/everest/library/everest.c:22:10: fatal error: common.h: No such file or directory

****************************************************************
* Looking for common.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:common.h"
* Web  > https://registry.platformio.org/search?q=header:common.h
*
****************************************************************

 #include "common.h"
          ^~~~~~~~~~
compilation terminated.
*** [.pio/build/esp32dev/libbd6/mbedtls/3rdparty/everest/library/everest.c.o] Error 1
======================================================================== [FAILED] Took 32.09 seconds ========================================================================

 *  The terminal process "platformio 'run', '--environment', 'esp32dev'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

AllanOricil avatar Apr 28 '24 01:04 AllanOricil

I downgraded this dependency all the way to mbedtls-2.16, the latest release In 2018. Now I have no issues with my builds.

Besides that, i would like to point out that there is a semantic versinoning error with v3. You guys changed some config variables names after 3.23, and also removed some, which is clearly a breaking change since there is no way to build without altering these in a project before building it, but you just updated the library's minor number instead of releasing v4.

Another issue I saw is that there is a bunch of modules enabled by default which required me to disable them all (comment a lot of config variables) before I could compile the code. Please, make all disabled by default and ask people to enable the ones they need using -D flags. It is much more natural than going inside the config.h and start commenting everything I'm not using. For example, I only needed to calculate hmac sha256 hash, and in order to achieve that I had to comment thousands (hyperbolic speach) of config variables. While if all were disabled by default I would only need to enable 3 variables, and I can do it without altering the dependency config.h file by just adding -D flags in platform.io.

AllanOricil avatar Apr 28 '24 22:04 AllanOricil

Hi @AllanOricil and thanks for your interest in Mbed TLS. However, your points do no seem related to this PR, so I don't think this is the right place to discuss them. Also, I think they would be best discussed separately. There seems to be at least 3 threads here:

  1. Build failure with Everest: you might open a new bug report about that, giving all the details indicated in the template - but since you don't seem to be using a build system shipped by Mbed TLS, and this looks like a build system issue, I think it would be more efficient to report the bug to whomever is shipping the build system / SDK you're using and packaging Mbed TLS with it.
  2. Semantic versioning issue: we try very hard to maintain compatibility and we're sorry if we failed. Please create a bug report about it with full details about what options were changed, and we'll look into it. There's probably nothing we can do to fix it after the fact, but we need to be aware to avoid making the same mistake again in the future. (Though I'll note there's no 3.23 (our latest release is 3.6) so I assume this was a typo?)
  3. Regarding the configuration system, I think it's best to discuss it on our mailing list. There are already ways to achieve what you want, but here's not the place to discuss this further.

Finally, I strongly encourage you not to use mbedtls 2.16 in production. It has been out of support for more than two years now, so it has numerous publicly-know unfixed security vulnerabilities.

mpg avatar Apr 29 '24 08:04 mpg