Hello,
This is my first message to this list. I'm also new to mbedTLS and TLS in general, apologies in advance if I make any mistakes with my questions.
I have installed mbedTLS on a STM32H7 with CMSIS/Keil, using the Network module and the mbedTLS pack (v2.6.0) https://www.keil.com/pack/doc/mbedTLS/html/index.html. I have created a server on the MCU, and as a client I am using a desktop application written with Nodejs. Client and server communicate via ethernet interface and I manage to transmit data between them. My priority is to develop the server, not so much the client.
I have a specific requirement to use the cipher suite “TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256”. As far as I understand, the client must show a list of cipher suites to the server, and the server chooses according to its priority. The priority is set with the macro “MBEDTLS_SSL_CIPHERSUITES” When inspecting the communication with *WireShark *I see that among the list sent by the client there is the cipher I need: “TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)”
On the other hand in my mbedTLS_config.h file I have activated the following macro: #define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
When the client connects an error occurs in the handshake, the method “mbedtls_ssl_handshake()” returns the return code -0x7380 (MBEDTLS_ERR_SSL_NO_CIPHER_CHOSEN).
If I comment the macro “MBEDTLS_SSL_CIPHERSUITES” the handshake method does not return error and works correctly, but the cipher I am looking for is not used, but “TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384”.
Maybe I am forgetting some configuration macro to be able to use the mentioned cipher? Any idea?