Don't pass the async config data to async callbacks
The config data is in the SSL config, so callbacks can retrieve it
from there, with the new function mbedtls_ssl_conf_get_async_config_data.
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index 6819e7a..5439f6d 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2847,7 +2847,7 @@
unsigned char *sig_start = ssl->out_msg + ssl->out_msglen + 2;
size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN
- sig_start );
- int ret = ssl->conf->f_async_resume( ssl->conf->p_async_config_data, ssl,
+ int ret = ssl->conf->f_async_resume( ssl,
sig_start, signature_len, sig_max_len );
if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS )
{
@@ -3174,8 +3174,7 @@
#if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
if( ssl->conf->f_async_sign_start != NULL )
{
- ret = ssl->conf->f_async_sign_start( ssl->conf->p_async_config_data,
- ssl,
+ ret = ssl->conf->f_async_sign_start( ssl,
mbedtls_ssl_own_cert( ssl ),
md_alg, hash, hashlen );
switch( ret )
@@ -3402,7 +3401,7 @@
size_t *peer_pmslen,
size_t peer_pmssize )
{
- int ret = ssl->conf->f_async_resume( ssl->conf->p_async_config_data, ssl,
+ int ret = ssl->conf->f_async_resume( ssl,
peer_pms, peer_pmslen, peer_pmssize );
if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS )
{
@@ -3465,8 +3464,7 @@
#if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
if( ssl->conf->f_async_decrypt_start != NULL )
{
- ret = ssl->conf->f_async_decrypt_start( ssl->conf->p_async_config_data,
- ssl,
+ ret = ssl->conf->f_async_decrypt_start( ssl,
mbedtls_ssl_own_cert( ssl ),
p, len );
switch( ret )
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 2c6eef8..04f3458 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -6494,7 +6494,12 @@
conf->p_async_config_data = async_config_data;
}
-void *mbedtls_ssl_async_get_data( mbedtls_ssl_context *ssl )
+void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf )
+{
+ return( conf->p_async_config_data );
+}
+
+void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl )
{
if( ssl->handshake == NULL )
return( NULL );
@@ -7451,7 +7456,7 @@
#if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
if( ssl->conf->f_async_cancel != NULL && handshake->async_in_progress != 0 )
{
- ssl->conf->f_async_cancel( ssl->conf->p_async_config_data, ssl );
+ ssl->conf->f_async_cancel( ssl );
handshake->async_in_progress = 0;
}
#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */