Parcourir la source

https_server: Fix example when `MBEDTLS_DYNAMIC_BUFFER` is enabled
- While checking if ciphersuite uses RSA key exchange methods,
the APIs `mbedtls_ssl_get_ciphersuite_id_from_ssl` and
`mbedtls_ssl_ciphersuite_from_id` were used to get the ciphersuite
info.
- However, this is incorrect as we need the ciphersuite info from the
handshake instance and not the ssl_session instance.

Laukik Hase il y a 3 ans
Parent
commit
aeb42ce3a7
2 fichiers modifiés avec 3 ajouts et 2 suppressions
  1. 1 0
      .gitlab/ci/rules.yml
  2. 2 2
      components/mbedtls/port/dynamic/esp_ssl_srv.c

+ 1 - 0
.gitlab/ci/rules.yml

@@ -219,6 +219,7 @@
   - "components/esp_wifi/**/*"
   - "components/esp_netif/**/*"
   - "components/lwip/**/*"
+  - "components/mbedtls/port/dynamic/*"
 
   # for cases with wifi_high_traffic marker
   - "examples/system/ota/**/*"

+ 2 - 2
components/mbedtls/port/dynamic/esp_ssl_srv.c

@@ -18,8 +18,8 @@ static const char *TAG = "SSL Server";
  */
 static bool ssl_ciphersuite_uses_rsa_key_ex(mbedtls_ssl_context *ssl)
 {
-    int suite_id = mbedtls_ssl_get_ciphersuite_id_from_ssl(ssl);
-    const mbedtls_ssl_ciphersuite_t *ciphersuite_info = mbedtls_ssl_ciphersuite_from_id(suite_id);
+    const mbedtls_ssl_ciphersuite_t *ciphersuite_info =
+        ssl->MBEDTLS_PRIVATE(handshake)->ciphersuite_info;
 
     if (ciphersuite_info->MBEDTLS_PRIVATE(key_exchange) == MBEDTLS_KEY_EXCHANGE_RSA ||
         ciphersuite_info->MBEDTLS_PRIVATE(key_exchange) == MBEDTLS_KEY_EXCHANGE_RSA_PSK) {