|
|
@@ -70,7 +70,9 @@ typedef struct esp_tls_pki_t {
|
|
|
#endif
|
|
|
} esp_tls_pki_t;
|
|
|
|
|
|
-esp_err_t esp_create_mbedtls_handle(const char *hostname, size_t hostlen, const void *cfg, esp_tls_t *tls)
|
|
|
+static esp_err_t set_server_config(esp_tls_cfg_server_t *cfg, esp_tls_t *tls);
|
|
|
+
|
|
|
+esp_err_t esp_create_mbedtls_handle(const char *hostname, size_t hostlen, const void *cfg, esp_tls_t *tls, void *server_params)
|
|
|
{
|
|
|
assert(cfg != NULL);
|
|
|
assert(tls != NULL);
|
|
|
@@ -116,16 +118,16 @@ esp_err_t esp_create_mbedtls_handle(const char *hostname, size_t hostlen, const
|
|
|
goto exit;
|
|
|
}
|
|
|
} else if (tls->role == ESP_TLS_SERVER) {
|
|
|
-#ifdef CONFIG_ESP_TLS_SERVER
|
|
|
- esp_ret = set_server_config((esp_tls_cfg_server_t *) cfg, tls);
|
|
|
+ if (server_params == NULL) {
|
|
|
+ /* Server params cannot be NULL when TLS role is server */
|
|
|
+ return ESP_ERR_INVALID_ARG;
|
|
|
+ }
|
|
|
+ esp_tls_server_params_t *input_server_params = server_params;
|
|
|
+ esp_ret = input_server_params->set_server_cfg((esp_tls_cfg_server_t *) cfg, tls);
|
|
|
if (esp_ret != 0) {
|
|
|
ESP_LOGE(TAG, "Failed to set server configurations, returned [0x%04X] (%s)", esp_ret, esp_err_to_name(esp_ret));
|
|
|
goto exit;
|
|
|
}
|
|
|
-#else
|
|
|
- ESP_LOGE(TAG, "ESP_TLS_SERVER Not enabled in Kconfig");
|
|
|
- goto exit;
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
if ((ret = mbedtls_ctr_drbg_seed(&tls->ctr_drbg,
|
|
|
@@ -353,10 +355,6 @@ void esp_mbedtls_cleanup(esp_tls_t *tls)
|
|
|
mbedtls_x509_crt_free(tls->cacert_ptr);
|
|
|
}
|
|
|
tls->cacert_ptr = NULL;
|
|
|
-#ifdef CONFIG_ESP_TLS_SERVER
|
|
|
- mbedtls_x509_crt_free(&tls->servercert);
|
|
|
- mbedtls_pk_free(&tls->serverkey);
|
|
|
-#endif
|
|
|
mbedtls_x509_crt_free(&tls->cacert);
|
|
|
mbedtls_x509_crt_free(&tls->clientcert);
|
|
|
mbedtls_pk_free(&tls->clientkey);
|
|
|
@@ -478,7 +476,6 @@ static esp_err_t set_global_ca_store(esp_tls_t *tls)
|
|
|
return ESP_OK;
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_ESP_TLS_SERVER
|
|
|
#ifdef CONFIG_ESP_TLS_SERVER_SESSION_TICKETS
|
|
|
int esp_mbedtls_server_session_ticket_write(void *p_ticket, const mbedtls_ssl_session *session, unsigned char *start, const unsigned char *end, size_t *tlen, uint32_t *lifetime)
|
|
|
{
|
|
|
@@ -547,7 +544,7 @@ void esp_mbedtls_server_session_ticket_ctx_free(esp_tls_server_session_ticket_ct
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-esp_err_t set_server_config(esp_tls_cfg_server_t *cfg, esp_tls_t *tls)
|
|
|
+static esp_err_t set_server_config(esp_tls_cfg_server_t *cfg, esp_tls_t *tls)
|
|
|
{
|
|
|
assert(cfg != NULL);
|
|
|
assert(tls != NULL);
|
|
|
@@ -679,7 +676,6 @@ esp_err_t set_server_config(esp_tls_cfg_server_t *cfg, esp_tls_t *tls)
|
|
|
|
|
|
return ESP_OK;
|
|
|
}
|
|
|
-#endif /* ! CONFIG_ESP_TLS_SERVER */
|
|
|
|
|
|
esp_err_t set_client_config(const char *hostname, size_t hostlen, esp_tls_cfg_t *cfg, esp_tls_t *tls)
|
|
|
{
|
|
|
@@ -903,7 +899,6 @@ esp_err_t set_client_config(const char *hostname, size_t hostlen, esp_tls_cfg_t
|
|
|
return ESP_OK;
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_ESP_TLS_SERVER
|
|
|
/**
|
|
|
* @brief Create TLS/SSL server session
|
|
|
*/
|
|
|
@@ -914,7 +909,9 @@ int esp_mbedtls_server_session_create(esp_tls_cfg_server_t *cfg, int sockfd, esp
|
|
|
}
|
|
|
tls->role = ESP_TLS_SERVER;
|
|
|
tls->sockfd = sockfd;
|
|
|
- esp_err_t esp_ret = esp_create_mbedtls_handle(NULL, 0, cfg, tls);
|
|
|
+ esp_tls_server_params_t server_params = {};
|
|
|
+ server_params.set_server_cfg = &set_server_config;
|
|
|
+ esp_err_t esp_ret = esp_create_mbedtls_handle(NULL, 0, cfg, tls, &server_params);
|
|
|
if (esp_ret != ESP_OK) {
|
|
|
ESP_LOGE(TAG, "create_ssl_handle failed, returned [0x%04X] (%s)", esp_ret, esp_err_to_name(esp_ret));
|
|
|
ESP_INT_EVENT_TRACKER_CAPTURE(tls->error_handle, ESP_TLS_ERR_TYPE_ESP, esp_ret);
|
|
|
@@ -946,7 +943,6 @@ void esp_mbedtls_server_session_delete(esp_tls_t *tls)
|
|
|
free(tls);
|
|
|
}
|
|
|
};
|
|
|
-#endif /* ! CONFIG_ESP_TLS_SERVER */
|
|
|
|
|
|
esp_err_t esp_mbedtls_init_global_ca_store(void)
|
|
|
{
|