-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
1,556 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
/* | ||
* SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
#ifndef _DYNAMIC_IMPL_H_ | ||
#define _DYNAMIC_IMPL_H_ | ||
|
||
#include <stddef.h> | ||
#include <string.h> | ||
#include <stdbool.h> | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
|
||
#include <sys/cdefs.h> // | ||
|
||
// #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER) | ||
#define container_of(ptr, type, member) ({ \ | ||
const typeof( ((type *)0)->member ) *__mptr = (const typeof( ((type *)0)->member ) *)(ptr); \ | ||
(type *)( (char *)__mptr - offsetof(type,member) );}) | ||
|
||
#define __containerof(ptr, type, member) container_of(ptr, type, member) | ||
/* 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 | ||
*/ | ||
#define MBEDTLS_ALLOW_PRIVATE_ACCESS | ||
|
||
// located at mbedtls/library/ssl_misc.h | ||
#include "ssl_misc.h" | ||
|
||
#include "mbedtls/ssl.h" | ||
#include "mbedtls/platform.h" | ||
// #include "esp_log.h" | ||
#include "dlg/dlg.h" | ||
|
||
#define TRACE_CHECK(_fn, _state) \ | ||
({ \ | ||
dlg_info("%d " _state " to do \"%s\"", __LINE__, # _fn); \ | ||
}) | ||
|
||
#define CHECK_OK(_fn) \ | ||
({ \ | ||
int _ret; \ | ||
\ | ||
TRACE_CHECK(_fn, "state"); \ | ||
\ | ||
if ((_ret = _fn) != 0) { \ | ||
dlg_info("\"%s\" result is %d", # _fn, -_ret); \ | ||
TRACE_CHECK(_fn, "fail"); \ | ||
return _ret; \ | ||
} \ | ||
\ | ||
TRACE_CHECK(_fn, "end"); \ | ||
\ | ||
}) | ||
|
||
#ifndef MAX | ||
#define MAX(a, b) ((a) > (b) ? (a) : (b)) | ||
#endif | ||
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[]; | ||
}; | ||
|
||
#define SSL_BUF_HEAD_OFFSET_SIZE ((int)offsetof(struct esp_mbedtls_ssl_buf, buf)) | ||
|
||
void esp_mbedtls_free_buf(unsigned char *buf); | ||
|
||
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); | ||
#endif | ||
|
||
#ifdef CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT | ||
void esp_mbedtls_free_cacert(mbedtls_ssl_context *ssl); | ||
#endif | ||
|
||
#endif /* _DYNAMIC_IMPL_H_ */ |
Oops, something went wrong.