mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-10-20 22:31:30 +08:00
fix(mbedtls): Fix mbedtls dynamic process RSA
This commit is contained in:
@@ -519,4 +519,17 @@ void esp_mbedtls_free_peer_cert(mbedtls_ssl_context *ssl)
|
|||||||
ssl->session_negotiate->peer_cert = NULL;
|
ssl->session_negotiate->peer_cert = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool esp_mbedtls_ssl_is_rsa(mbedtls_ssl_context *ssl)
|
||||||
|
{
|
||||||
|
const mbedtls_ssl_ciphersuite_t *ciphersuite_info =
|
||||||
|
ssl->transform_negotiate->ciphersuite_info;
|
||||||
|
|
||||||
|
if (ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA ||
|
||||||
|
ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -80,6 +80,8 @@ void esp_mbedtls_free_cacert(mbedtls_ssl_context *ssl);
|
|||||||
|
|
||||||
#ifdef CONFIG_MBEDTLS_DYNAMIC_FREE_PEER_CERT
|
#ifdef CONFIG_MBEDTLS_DYNAMIC_FREE_PEER_CERT
|
||||||
void esp_mbedtls_free_peer_cert(mbedtls_ssl_context *ssl);
|
void esp_mbedtls_free_peer_cert(mbedtls_ssl_context *ssl);
|
||||||
|
|
||||||
|
bool esp_mbedtls_ssl_is_rsa(mbedtls_ssl_context *ssl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _DYNAMIC_IMPL_H_ */
|
#endif /* _DYNAMIC_IMPL_H_ */
|
||||||
|
@@ -73,7 +73,9 @@ static int manage_resource(mbedtls_ssl_context *ssl, bool add)
|
|||||||
CHECK_OK(esp_mbedtls_free_rx_buffer(ssl));
|
CHECK_OK(esp_mbedtls_free_rx_buffer(ssl));
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_MBEDTLS_DYNAMIC_FREE_PEER_CERT
|
#ifdef CONFIG_MBEDTLS_DYNAMIC_FREE_PEER_CERT
|
||||||
esp_mbedtls_free_peer_cert(ssl);
|
if (esp_mbedtls_ssl_is_rsa(ssl) == false) {
|
||||||
|
esp_mbedtls_free_peer_cert(ssl);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -123,6 +125,12 @@ static int manage_resource(mbedtls_ssl_context *ssl, bool add)
|
|||||||
size_t buffer_len = MBEDTLS_SSL_OUT_BUFFER_LEN;
|
size_t buffer_len = MBEDTLS_SSL_OUT_BUFFER_LEN;
|
||||||
|
|
||||||
CHECK_OK(esp_mbedtls_add_tx_buffer(ssl, buffer_len));
|
CHECK_OK(esp_mbedtls_add_tx_buffer(ssl, buffer_len));
|
||||||
|
} else {
|
||||||
|
#ifdef CONFIG_MBEDTLS_DYNAMIC_FREE_PEER_CERT
|
||||||
|
if (esp_mbedtls_ssl_is_rsa(ssl) == true) {
|
||||||
|
esp_mbedtls_free_peer_cert(ssl);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MBEDTLS_SSL_CERTIFICATE_VERIFY:
|
case MBEDTLS_SSL_CERTIFICATE_VERIFY:
|
||||||
|
Reference in New Issue
Block a user