Allocate ssl_config out of ssl_setup()

This commit is contained in:
Manuel Pégourié-Gonnard 2015-05-04 14:56:36 +02:00
parent cd523e2a5e
commit def0bbe3ab
15 changed files with 154 additions and 44 deletions

View File

@ -1164,11 +1164,13 @@ void mbedtls_ssl_init( mbedtls_ssl_context *ssl );
* \brief Set up an SSL context for use * \brief Set up an SSL context for use
* *
* \param ssl SSL context * \param ssl SSL context
* \param conf SSL configuration to use
* *
* \return 0 if successful, or MBEDTLS_ERR_SSL_MALLOC_FAILED if * \return 0 if successful, or MBEDTLS_ERR_SSL_MALLOC_FAILED if
* memory allocation failed * memory allocation failed
*/ */
int mbedtls_ssl_setup( mbedtls_ssl_context *ssl ); int mbedtls_ssl_setup( mbedtls_ssl_context *ssl,
mbedtls_ssl_config *conf );
/** /**
* \brief Reset an already initialized SSL context for re-use * \brief Reset an already initialized SSL context for re-use

View File

@ -4953,20 +4953,13 @@ void mbedtls_ssl_init( mbedtls_ssl_context *ssl )
/* /*
* Setup an SSL context * Setup an SSL context
*/ */
int mbedtls_ssl_setup( mbedtls_ssl_context *ssl ) int mbedtls_ssl_setup( mbedtls_ssl_context *ssl,
mbedtls_ssl_config *conf )
{ {
int ret; int ret;
const size_t len = MBEDTLS_SSL_BUFFER_LEN; const size_t len = MBEDTLS_SSL_BUFFER_LEN;
/* ssl->conf = conf;
* Temporary, WIP
*/
ssl->conf = mbedtls_malloc( sizeof( mbedtls_ssl_config ) );
if( ssl->conf == NULL )
return( MBEDTLS_ERR_SSL_MALLOC_FAILED );
mbedtls_ssl_config_init( ssl->conf );
mbedtls_ssl_config_defaults( ssl->conf );
/* /*
* Prepare base structures * Prepare base structures
@ -6631,10 +6624,6 @@ void mbedtls_ssl_free( mbedtls_ssl_context *ssl )
mbedtls_free( ssl->cli_id ); mbedtls_free( ssl->cli_id );
#endif #endif
/* Temporary, WIP */
mbedtls_ssl_config_free( ssl->conf );
mbedtls_free( ssl->conf );
MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= free" ) ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= free" ) );
/* Actually clear after last debug message */ /* Actually clear after last debug message */

View File

@ -92,6 +92,7 @@ int main( int argc, char *argv[] )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_x509_crt cacert; mbedtls_x509_crt cacert;
((void) argc); ((void) argc);
@ -105,6 +106,7 @@ int main( int argc, char *argv[] )
* 0. Initialize the RNG and the session data * 0. Initialize the RNG and the session data
*/ */
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_x509_crt_init( &cacert ); mbedtls_x509_crt_init( &cacert );
mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_ctr_drbg_init( &ctr_drbg );
@ -123,7 +125,7 @@ int main( int argc, char *argv[] )
mbedtls_printf( " ok\n" ); mbedtls_printf( " ok\n" );
/* /*
* 0. Initialize certificates * 0. Load certificates
*/ */
mbedtls_printf( " . Loading the CA root certificate ..." ); mbedtls_printf( " . Loading the CA root certificate ..." );
fflush( stdout ); fflush( stdout );
@ -160,7 +162,13 @@ int main( int argc, char *argv[] )
mbedtls_printf( " . Setting up the DTLS structure..." ); mbedtls_printf( " . Setting up the DTLS structure..." );
fflush( stdout ); fflush( stdout );
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned %d\n\n", ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret );
goto exit; goto exit;
@ -322,6 +330,7 @@ exit:
mbedtls_x509_crt_free( &cacert ); mbedtls_x509_crt_free( &cacert );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_entropy_free( &entropy ); mbedtls_entropy_free( &entropy );

View File

@ -97,6 +97,7 @@ int main( void )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_x509_crt srvcert; mbedtls_x509_crt srvcert;
mbedtls_pk_context pkey; mbedtls_pk_context pkey;
#if defined(MBEDTLS_SSL_CACHE_C) #if defined(MBEDTLS_SSL_CACHE_C)
@ -104,6 +105,7 @@ int main( void )
#endif #endif
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_ssl_cookie_init( &cookie_ctx ); mbedtls_ssl_cookie_init( &cookie_ctx );
#if defined(MBEDTLS_SSL_CACHE_C) #if defined(MBEDTLS_SSL_CACHE_C)
mbedtls_ssl_cache_init( &cache ); mbedtls_ssl_cache_init( &cache );
@ -190,7 +192,13 @@ int main( void )
printf( " . Setting up the DTLS data..." ); printf( " . Setting up the DTLS data..." );
fflush( stdout ); fflush( stdout );
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned %d\n\n", ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret ); printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret );
goto exit; goto exit;
@ -391,6 +399,7 @@ exit:
mbedtls_x509_crt_free( &srvcert ); mbedtls_x509_crt_free( &srvcert );
mbedtls_pk_free( &pkey ); mbedtls_pk_free( &pkey );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
mbedtls_ssl_cookie_free( &cookie_ctx ); mbedtls_ssl_cookie_free( &cookie_ctx );
#if defined(MBEDTLS_SSL_CACHE_C) #if defined(MBEDTLS_SSL_CACHE_C)
mbedtls_ssl_cache_free( &cache ); mbedtls_ssl_cache_free( &cache );

View File

@ -147,6 +147,7 @@ enum exit_codes
{ {
exit_ok = 0, exit_ok = 0,
ctr_drbg_seed_failed, ctr_drbg_seed_failed,
ssl_config_default_failed,
ssl_setup_failed, ssl_setup_failed,
socket_failed, socket_failed,
connect_failed, connect_failed,
@ -167,12 +168,14 @@ int main( void )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_ctr_drbg_init( &ctr_drbg );
/* /*
* 0. Initialize and setup stuff * 0. Initialize and setup stuff
*/ */
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
#if defined(MBEDTLS_X509_CRT_PARSE_C) #if defined(MBEDTLS_X509_CRT_PARSE_C)
mbedtls_x509_crt_init( &ca ); mbedtls_x509_crt_init( &ca );
#endif #endif
@ -185,7 +188,13 @@ int main( void )
goto exit; goto exit;
} }
if( mbedtls_ssl_setup( &ssl ) != 0 ) if( mbedtls_ssl_config_defaults( &conf ) != 0 )
{
ret = ssl_config_defaults_failed;
goto exit;
}
if( mbedtls_ssl_setup( &ssl, &conf ) != 0 )
{ {
ret = ssl_setup_failed; ret = ssl_setup_failed;
goto exit; goto exit;
@ -260,6 +269,7 @@ exit:
mbedtls_net_close( server_fd ); mbedtls_net_close( server_fd );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_entropy_free( &entropy ); mbedtls_entropy_free( &entropy );
#if defined(MBEDTLS_X509_CRT_PARSE_C) #if defined(MBEDTLS_X509_CRT_PARSE_C)

View File

@ -83,6 +83,7 @@ int main( void )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_x509_crt cacert; mbedtls_x509_crt cacert;
#if defined(MBEDTLS_DEBUG_C) #if defined(MBEDTLS_DEBUG_C)
@ -93,6 +94,7 @@ int main( void )
* 0. Initialize the RNG and the session data * 0. Initialize the RNG and the session data
*/ */
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_x509_crt_init( &cacert ); mbedtls_x509_crt_init( &cacert );
mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_ctr_drbg_init( &ctr_drbg );
@ -148,7 +150,13 @@ int main( void )
mbedtls_printf( " . Setting up the SSL/TLS structure..." ); mbedtls_printf( " . Setting up the SSL/TLS structure..." );
fflush( stdout ); fflush( stdout );
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned %d\n\n", ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret );
goto exit; goto exit;
@ -275,6 +283,7 @@ exit:
mbedtls_x509_crt_free( &cacert ); mbedtls_x509_crt_free( &cacert );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_entropy_free( &entropy ); mbedtls_entropy_free( &entropy );

View File

@ -401,6 +401,7 @@ int main( int argc, char *argv[] )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_ssl_session saved_session; mbedtls_ssl_session saved_session;
#if defined(MBEDTLS_X509_CRT_PARSE_C) #if defined(MBEDTLS_X509_CRT_PARSE_C)
mbedtls_x509_crt cacert; mbedtls_x509_crt cacert;
@ -415,6 +416,7 @@ int main( int argc, char *argv[] )
*/ */
server_fd = 0; server_fd = 0;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
memset( &saved_session, 0, sizeof( mbedtls_ssl_session ) ); memset( &saved_session, 0, sizeof( mbedtls_ssl_session ) );
mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_ctr_drbg_init( &ctr_drbg );
#if defined(MBEDTLS_X509_CRT_PARSE_C) #if defined(MBEDTLS_X509_CRT_PARSE_C)
@ -1047,7 +1049,13 @@ int main( int argc, char *argv[] )
mbedtls_printf( " . Setting up the SSL/TLS structure..." ); mbedtls_printf( " . Setting up the SSL/TLS structure..." );
fflush( stdout ); fflush( stdout );
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned -0x%x\n\n", -ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned -0x%x\n\n", -ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned -0x%x\n\n", -ret );
goto exit; goto exit;
@ -1581,6 +1589,7 @@ exit:
#endif #endif
mbedtls_ssl_session_free( &saved_session ); mbedtls_ssl_session_free( &saved_session );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_entropy_free( &entropy ); mbedtls_entropy_free( &entropy );

View File

@ -103,11 +103,12 @@ int main( void )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_x509_crt srvcert; mbedtls_x509_crt srvcert;
mbedtls_pk_context pkey; mbedtls_pk_context pkey;
memset( &ssl, 0, sizeof(mbedtls_ssl_context) ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_entropy_init( &entropy ); mbedtls_entropy_init( &entropy );
mbedtls_pk_init( &pkey ); mbedtls_pk_init( &pkey );
mbedtls_x509_crt_init( &srvcert ); mbedtls_x509_crt_init( &srvcert );
@ -248,7 +249,13 @@ int main( void )
goto exit; goto exit;
} }
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned %d\n\n", ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret );
goto exit; goto exit;
@ -373,6 +380,7 @@ exit:
mbedtls_x509_crt_free( &srvcert ); mbedtls_x509_crt_free( &srvcert );
mbedtls_pk_free( &pkey ); mbedtls_pk_free( &pkey );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_entropy_free( &entropy ); mbedtls_entropy_free( &entropy );

View File

@ -355,6 +355,7 @@ int main( int argc, char *argv[] )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_x509_crt cacert; mbedtls_x509_crt cacert;
mbedtls_x509_crt clicert; mbedtls_x509_crt clicert;
mbedtls_pk_context pkey; mbedtls_pk_context pkey;
@ -368,6 +369,7 @@ int main( int argc, char *argv[] )
*/ */
server_fd = 0; server_fd = 0;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
memset( &buf, 0, sizeof( buf ) ); memset( &buf, 0, sizeof( buf ) );
mbedtls_x509_crt_init( &cacert ); mbedtls_x509_crt_init( &cacert );
mbedtls_x509_crt_init( &clicert ); mbedtls_x509_crt_init( &clicert );
@ -582,7 +584,13 @@ int main( int argc, char *argv[] )
mbedtls_printf( " . Setting up the SSL/TLS structure..." ); mbedtls_printf( " . Setting up the SSL/TLS structure..." );
fflush( stdout ); fflush( stdout );
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned %d\n\n", ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret );
goto exit; goto exit;
@ -821,6 +829,7 @@ exit:
mbedtls_x509_crt_free( &cacert ); mbedtls_x509_crt_free( &cacert );
mbedtls_pk_free( &pkey ); mbedtls_pk_free( &pkey );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_entropy_free( &entropy ); mbedtls_entropy_free( &entropy );

View File

@ -130,10 +130,12 @@ static void *handle_ssl_connection( void *data )
unsigned char buf[1024]; unsigned char buf[1024];
char pers[50]; char pers[50];
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
/* Make sure memory references are valid */ /* Make sure memory references are valid */
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_ctr_drbg_init( &ctr_drbg );
mbedtls_snprintf( pers, sizeof(pers), "SSL Pthread Thread %d", thread_id ); mbedtls_snprintf( pers, sizeof(pers), "SSL Pthread Thread %d", thread_id );
@ -158,7 +160,14 @@ static void *handle_ssl_connection( void *data )
*/ */
mbedtls_printf( " [ #%d ] Setting up the SSL data....\n", thread_id ); mbedtls_printf( " [ #%d ] Setting up the SSL data....\n", thread_id );
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " [ #%d ] failed: mbedtls_ssl_config_defaults returned -0x%04x\n",
thread_id, -ret );
goto thread_exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " [ #%d ] failed: mbedtls_ssl_setup returned -0x%04x\n", mbedtls_printf( " [ #%d ] failed: mbedtls_ssl_setup returned -0x%04x\n",
thread_id, -ret ); thread_id, -ret );
@ -314,6 +323,7 @@ thread_exit:
mbedtls_net_close( client_fd ); mbedtls_net_close( client_fd );
mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
thread_info->thread_complete = 1; thread_info->thread_complete = 1;

View File

@ -97,6 +97,7 @@ int main( void )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_x509_crt srvcert; mbedtls_x509_crt srvcert;
mbedtls_pk_context pkey; mbedtls_pk_context pkey;
#if defined(MBEDTLS_SSL_CACHE_C) #if defined(MBEDTLS_SSL_CACHE_C)
@ -104,6 +105,7 @@ int main( void )
#endif #endif
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
#if defined(MBEDTLS_SSL_CACHE_C) #if defined(MBEDTLS_SSL_CACHE_C)
mbedtls_ssl_cache_init( &cache ); mbedtls_ssl_cache_init( &cache );
#endif #endif
@ -189,7 +191,13 @@ int main( void )
mbedtls_printf( " . Setting up the SSL data...." ); mbedtls_printf( " . Setting up the SSL data...." );
fflush( stdout ); fflush( stdout );
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned %d\n\n", ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret );
goto exit; goto exit;
@ -369,6 +377,7 @@ exit:
mbedtls_x509_crt_free( &srvcert ); mbedtls_x509_crt_free( &srvcert );
mbedtls_pk_free( &pkey ); mbedtls_pk_free( &pkey );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
#if defined(MBEDTLS_SSL_CACHE_C) #if defined(MBEDTLS_SSL_CACHE_C)
mbedtls_ssl_cache_free( &cache ); mbedtls_ssl_cache_free( &cache );
#endif #endif

View File

@ -722,6 +722,7 @@ int main( int argc, char *argv[] )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
#if defined(MBEDTLS_SSL_RENEGOTIATION) #if defined(MBEDTLS_SSL_RENEGOTIATION)
unsigned char renego_period[8] = { 0 }; unsigned char renego_period[8] = { 0 };
#endif #endif
@ -762,6 +763,7 @@ int main( int argc, char *argv[] )
*/ */
listen_fd = 0; listen_fd = 0;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_ctr_drbg_init( &ctr_drbg );
#if defined(MBEDTLS_X509_CRT_PARSE_C) #if defined(MBEDTLS_X509_CRT_PARSE_C)
mbedtls_x509_crt_init( &cacert ); mbedtls_x509_crt_init( &cacert );
@ -1518,7 +1520,13 @@ int main( int argc, char *argv[] )
mbedtls_printf( " . Setting up the SSL/TLS structure..." ); mbedtls_printf( " . Setting up the SSL/TLS structure..." );
fflush( stdout ); fflush( stdout );
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned -0x%x\n\n", -ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned -0x%x\n\n", -ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned -0x%x\n\n", -ret );
goto exit; goto exit;
@ -2205,6 +2213,7 @@ exit:
#endif #endif
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_entropy_free( &entropy ); mbedtls_entropy_free( &entropy );

View File

@ -146,6 +146,7 @@ int main( int argc, char *argv[] )
mbedtls_entropy_context entropy; mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg; mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_x509_crt cacert; mbedtls_x509_crt cacert;
mbedtls_x509_crt clicert; mbedtls_x509_crt clicert;
mbedtls_x509_crl cacrl; mbedtls_x509_crl cacrl;
@ -161,6 +162,7 @@ int main( int argc, char *argv[] )
server_fd = 0; server_fd = 0;
mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_ctr_drbg_init( &ctr_drbg );
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_x509_crt_init( &cacert ); mbedtls_x509_crt_init( &cacert );
mbedtls_x509_crt_init( &clicert ); mbedtls_x509_crt_init( &clicert );
#if defined(MBEDTLS_X509_CRL_PARSE_C) #if defined(MBEDTLS_X509_CRL_PARSE_C)
@ -372,7 +374,7 @@ int main( int argc, char *argv[] )
strlen( pers ) ) ) != 0 ) strlen( pers ) ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned %d\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned %d\n", ret );
goto exit; goto ssl_exit;
} }
mbedtls_printf( " ok\n" ); mbedtls_printf( " ok\n" );
@ -388,16 +390,22 @@ int main( int argc, char *argv[] )
opt.server_port, MBEDTLS_NET_PROTO_TCP ) ) != 0 ) opt.server_port, MBEDTLS_NET_PROTO_TCP ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_net_connect returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_net_connect returned %d\n\n", ret );
goto exit; goto ssl_exit;
} }
/* /*
* 3. Setup stuff * 3. Setup stuff
*/ */
if( ( ret = mbedtls_ssl_setup( &ssl ) ) != 0 ) if( ( ret = mbedtls_ssl_config_defaults( &conf ) ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_config_defaults returned %d\n\n", ret );
goto exit;
}
if( ( ret = mbedtls_ssl_setup( &ssl, &conf ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_setup returned %d\n\n", ret );
goto exit; goto ssl_exit;
} }
mbedtls_ssl_set_endpoint( &ssl, MBEDTLS_SSL_IS_CLIENT ); mbedtls_ssl_set_endpoint( &ssl, MBEDTLS_SSL_IS_CLIENT );
@ -417,14 +425,14 @@ int main( int argc, char *argv[] )
if( ( ret = mbedtls_ssl_set_own_cert( &ssl, &clicert, &pkey ) ) != 0 ) if( ( ret = mbedtls_ssl_set_own_cert( &ssl, &clicert, &pkey ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_set_own_cert returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_set_own_cert returned %d\n\n", ret );
goto exit; goto ssl_exit;
} }
#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
if( ( ret = mbedtls_ssl_set_hostname( &ssl, opt.server_name ) ) != 0 ) if( ( ret = mbedtls_ssl_set_hostname( &ssl, opt.server_name ) ) != 0 )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_set_hostname returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_set_hostname returned %d\n\n", ret );
goto exit; goto ssl_exit;
} }
#endif #endif
@ -436,8 +444,7 @@ int main( int argc, char *argv[] )
if( ret != MBEDTLS_ERR_NET_WANT_READ && ret != MBEDTLS_ERR_NET_WANT_WRITE ) if( ret != MBEDTLS_ERR_NET_WANT_READ && ret != MBEDTLS_ERR_NET_WANT_WRITE )
{ {
mbedtls_printf( " failed\n ! mbedtls_ssl_handshake returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_ssl_handshake returned %d\n\n", ret );
mbedtls_ssl_free( &ssl ); goto ssl_exit;
goto exit;
} }
} }
@ -452,14 +459,16 @@ int main( int argc, char *argv[] )
if( ret == -1 ) if( ret == -1 )
{ {
mbedtls_printf( " failed\n ! mbedtls_x509_crt_info returned %d\n\n", ret ); mbedtls_printf( " failed\n ! mbedtls_x509_crt_info returned %d\n\n", ret );
mbedtls_ssl_free( &ssl ); goto ssl_exit;
goto exit;
} }
mbedtls_printf( "%s\n", buf ); mbedtls_printf( "%s\n", buf );
mbedtls_ssl_close_notify( &ssl ); mbedtls_ssl_close_notify( &ssl );
ssl_exit:
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
} }
else else
goto usage; goto usage;

View File

@ -34,13 +34,15 @@ void debug_print_msg_threshold( int threshold, int level, char *file, int line,
char *result_str ) char *result_str )
{ {
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
struct buffer_data buffer; struct buffer_data buffer;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
memset( buffer.buf, 0, 2000 ); memset( buffer.buf, 0, 2000 );
buffer.ptr = buffer.buf; buffer.ptr = buffer.buf;
TEST_ASSERT( mbedtls_ssl_setup( &ssl ) == 0 ); TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 );
mbedtls_debug_set_log_mode( MBEDTLS_DEBUG_LOG_FULL ); mbedtls_debug_set_log_mode( MBEDTLS_DEBUG_LOG_FULL );
mbedtls_debug_set_threshold( threshold ); mbedtls_debug_set_threshold( threshold );
@ -53,6 +55,7 @@ void debug_print_msg_threshold( int threshold, int level, char *file, int line,
exit: exit:
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
} }
/* END_CASE */ /* END_CASE */
@ -61,13 +64,15 @@ void mbedtls_debug_print_ret( int mode, char *file, int line, char *text, int va
char *result_str ) char *result_str )
{ {
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
struct buffer_data buffer; struct buffer_data buffer;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
memset( buffer.buf, 0, 2000 ); memset( buffer.buf, 0, 2000 );
buffer.ptr = buffer.buf; buffer.ptr = buffer.buf;
TEST_ASSERT( mbedtls_ssl_setup( &ssl ) == 0 ); TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 );
mbedtls_debug_set_log_mode( mode ); mbedtls_debug_set_log_mode( mode );
mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer); mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer);
@ -78,6 +83,7 @@ void mbedtls_debug_print_ret( int mode, char *file, int line, char *text, int va
exit: exit:
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
} }
/* END_CASE */ /* END_CASE */
@ -87,17 +93,19 @@ void mbedtls_debug_print_buf( int mode, char *file, int line, char *text,
{ {
unsigned char data[10000]; unsigned char data[10000];
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
struct buffer_data buffer; struct buffer_data buffer;
size_t data_len; size_t data_len;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
memset( &data, 0, sizeof( data ) ); memset( &data, 0, sizeof( data ) );
memset( buffer.buf, 0, 2000 ); memset( buffer.buf, 0, 2000 );
buffer.ptr = buffer.buf; buffer.ptr = buffer.buf;
data_len = unhexify( data, data_string ); data_len = unhexify( data, data_string );
TEST_ASSERT( mbedtls_ssl_setup( &ssl ) == 0 ); TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 );
mbedtls_debug_set_log_mode( mode ); mbedtls_debug_set_log_mode( mode );
mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer); mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer);
@ -108,6 +116,7 @@ void mbedtls_debug_print_buf( int mode, char *file, int line, char *text,
exit: exit:
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
} }
/* END_CASE */ /* END_CASE */
@ -117,14 +126,16 @@ void mbedtls_debug_print_crt( int mode, char *crt_file, char *file, int line,
{ {
mbedtls_x509_crt crt; mbedtls_x509_crt crt;
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
struct buffer_data buffer; struct buffer_data buffer;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_x509_crt_init( &crt ); mbedtls_x509_crt_init( &crt );
memset( buffer.buf, 0, 2000 ); memset( buffer.buf, 0, 2000 );
buffer.ptr = buffer.buf; buffer.ptr = buffer.buf;
TEST_ASSERT( mbedtls_ssl_setup( &ssl ) == 0 ); TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 );
mbedtls_debug_set_log_mode( mode ); mbedtls_debug_set_log_mode( mode );
mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer); mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer);
@ -137,6 +148,7 @@ void mbedtls_debug_print_crt( int mode, char *crt_file, char *file, int line,
exit: exit:
mbedtls_x509_crt_free( &crt ); mbedtls_x509_crt_free( &crt );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
} }
/* END_CASE */ /* END_CASE */
@ -145,15 +157,17 @@ void mbedtls_debug_print_mpi( int mode, int radix, char *value, char *file, int
char *prefix, char *result_str ) char *prefix, char *result_str )
{ {
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
struct buffer_data buffer; struct buffer_data buffer;
mbedtls_mpi val; mbedtls_mpi val;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
mbedtls_mpi_init( &val ); mbedtls_mpi_init( &val );
memset( buffer.buf, 0, 2000 ); memset( buffer.buf, 0, 2000 );
buffer.ptr = buffer.buf; buffer.ptr = buffer.buf;
TEST_ASSERT( mbedtls_ssl_setup( &ssl ) == 0 ); TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 );
TEST_ASSERT( mbedtls_mpi_read_string( &val, radix, value ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &val, radix, value ) == 0 );
@ -167,5 +181,6 @@ void mbedtls_debug_print_mpi( int mode, int radix, char *value, char *file, int
exit: exit:
mbedtls_mpi_free( &val ); mbedtls_mpi_free( &val );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
} }
/* END_CASE */ /* END_CASE */

View File

@ -11,11 +11,14 @@
void ssl_dtls_replay( char *prevs, char *new, int ret ) void ssl_dtls_replay( char *prevs, char *new, int ret )
{ {
mbedtls_ssl_context ssl; mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
char *end_prevs = prevs + strlen( prevs ) + 1; char *end_prevs = prevs + strlen( prevs ) + 1;
mbedtls_ssl_init( &ssl ); mbedtls_ssl_init( &ssl );
mbedtls_ssl_config_init( &conf );
TEST_ASSERT( mbedtls_ssl_setup( &ssl ) == 0 ); TEST_ASSERT( mbedtls_ssl_config_defaults( &conf ) == 0 );
TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 );
TEST_ASSERT( mbedtls_ssl_set_transport( &ssl, MBEDTLS_SSL_TRANSPORT_DATAGRAM ) == 0 ); TEST_ASSERT( mbedtls_ssl_set_transport( &ssl, MBEDTLS_SSL_TRANSPORT_DATAGRAM ) == 0 );
/* Read previous record numbers */ /* Read previous record numbers */
@ -31,5 +34,6 @@ void ssl_dtls_replay( char *prevs, char *new, int ret )
TEST_ASSERT( mbedtls_ssl_dtls_replay_check( &ssl ) == ret ); TEST_ASSERT( mbedtls_ssl_dtls_replay_check( &ssl ) == ret );
mbedtls_ssl_free( &ssl ); mbedtls_ssl_free( &ssl );
mbedtls_ssl_config_free( &conf );
} }
/* END_CASE */ /* END_CASE */