| 
									
										
										
										
											2021-09-30 15:23:32 +08:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2022-01-24 10:04:05 +05:30
										 |  |  |  * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD | 
					
						
							| 
									
										
										
										
											2021-09-30 15:23:32 +08:00
										 |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: Apache-2.0 | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2020-04-10 16:33:54 +08:00
										 |  |  | #ifndef _DYNAMIC_IMPL_H_
 | 
					
						
							|  |  |  | #define _DYNAMIC_IMPL_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <stddef.h>
 | 
					
						
							| 
									
										
										
										
											2021-09-30 15:23:32 +08:00
										 |  |  | #include <string.h>
 | 
					
						
							| 
									
										
										
										
											2022-03-09 18:24:44 +05:30
										 |  |  | #include <stdbool.h>
 | 
					
						
							| 
									
										
										
										
											2022-09-15 12:42:12 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | /* TODO: Remove this once the appropriate solution is found
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * ssl_misc.h header uses private elements from | 
					
						
							|  |  |  |  * mbedtls, which become undefined if the following flag | 
					
						
							|  |  |  |  * is not defined | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2022-01-05 10:00:35 +05:30
										 |  |  | #define MBEDTLS_ALLOW_PRIVATE_ACCESS
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-15 12:42:12 +05:30
										 |  |  | // located at mbedtls/library/ssl_misc.h
 | 
					
						
							|  |  |  | #include "ssl_misc.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-10 16:33:54 +08:00
										 |  |  | #include "mbedtls/ssl.h"
 | 
					
						
							|  |  |  | #include "mbedtls/platform.h"
 | 
					
						
							|  |  |  | #include "esp_log.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define TRACE_CHECK(_fn, _state) \
 | 
					
						
							|  |  |  | ({ \ | 
					
						
							|  |  |  |     ESP_LOGV(TAG, "%d " _state " to do \"%s\"", __LINE__, # _fn); \ | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define CHECK_OK(_fn) \
 | 
					
						
							|  |  |  | ({ \ | 
					
						
							|  |  |  |     int _ret; \ | 
					
						
							|  |  |  |  \ | 
					
						
							|  |  |  |     TRACE_CHECK(_fn, "state"); \ | 
					
						
							|  |  |  |  \ | 
					
						
							|  |  |  |     if ((_ret = _fn) != 0) { \ | 
					
						
							| 
									
										
										
										
											2022-01-17 16:47:32 +05:30
										 |  |  |         ESP_LOGV(TAG, "\"%s\" result is %d", # _fn, -_ret); \ | 
					
						
							| 
									
										
										
										
											2020-04-10 16:33:54 +08:00
										 |  |  |         TRACE_CHECK(_fn, "fail"); \ | 
					
						
							|  |  |  |         return _ret; \ | 
					
						
							|  |  |  |     } \ | 
					
						
							|  |  |  |  \ | 
					
						
							|  |  |  |     TRACE_CHECK(_fn, "end"); \ | 
					
						
							|  |  |  |  \ | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 09:56:56 +08:00
										 |  |  | typedef enum { | 
					
						
							|  |  |  |     ESP_MBEDTLS_SSL_BUF_CACHED, | 
					
						
							|  |  |  |     ESP_MBEDTLS_SSL_BUF_NO_CACHED, | 
					
						
							|  |  |  | } esp_mbedtls_ssl_buf_states; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct esp_mbedtls_ssl_buf { | 
					
						
							|  |  |  |     esp_mbedtls_ssl_buf_states state; | 
					
						
							|  |  |  |     unsigned int len; | 
					
						
							|  |  |  |     unsigned char buf[]; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-17 16:47:32 +05:30
										 |  |  | #define SSL_BUF_HEAD_OFFSET_SIZE ((int)offsetof(struct esp_mbedtls_ssl_buf, buf))
 | 
					
						
							| 
									
										
										
										
											2021-03-12 09:56:56 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | void esp_mbedtls_free_buf(unsigned char *buf); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-10 16:33:54 +08:00
										 |  |  | int esp_mbedtls_setup_tx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void esp_mbedtls_setup_rx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int esp_mbedtls_reset_add_tx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int esp_mbedtls_reset_add_rx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int esp_mbedtls_reset_free_tx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void esp_mbedtls_reset_free_rx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int esp_mbedtls_add_tx_buffer(mbedtls_ssl_context *ssl, size_t buffer_len); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int esp_mbedtls_add_rx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int esp_mbedtls_free_tx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int esp_mbedtls_free_rx_buffer(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | size_t esp_mbedtls_get_crt_size(mbedtls_x509_crt *cert, size_t *num); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA
 | 
					
						
							|  |  |  | void esp_mbedtls_free_dhm(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void esp_mbedtls_free_keycert(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void esp_mbedtls_free_keycert_cert(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void esp_mbedtls_free_keycert_key(mbedtls_ssl_context *ssl); | 
					
						
							| 
									
										
										
										
											2021-02-04 14:56:58 +05:30
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2020-04-10 16:33:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-04 14:56:58 +05:30
										 |  |  | #ifdef CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT
 | 
					
						
							| 
									
										
										
										
											2020-04-10 16:33:54 +08:00
										 |  |  | void esp_mbedtls_free_cacert(mbedtls_ssl_context *ssl); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* _DYNAMIC_IMPL_H_ */
 |