Merge contexts for session cache

This commit is contained in:
Manuel Pégourié-Gonnard 2015-05-06 18:06:26 +01:00
parent ae31914990
commit 5cb3308e5f
7 changed files with 22 additions and 21 deletions

View File

@ -23,6 +23,8 @@ API Changes
mbedtls_ctr_drbg_init() -> mbedtls_ctr_drbg_init(_buf)() mbedtls_ctr_drbg_init() -> mbedtls_ctr_drbg_init(_buf)()
* mbedtls_ssl_set_ca_chain() lost its last argument (peer_cn), now set * mbedtls_ssl_set_ca_chain() lost its last argument (peer_cn), now set
using mbedtls_ssl_set_hostname(). using mbedtls_ssl_set_hostname().
* mbedtls_ssl_set_session_cached() changed prototype (only one context
pointer, parameters reordered).
* mbedtls_memory_bufer_alloc_init() now returns void * mbedtls_memory_bufer_alloc_init() now returns void
* In the threading layer, mbedtls_mutex_init() and mbedtls_mutex_free() now * In the threading layer, mbedtls_mutex_init() and mbedtls_mutex_free() now
return void. return void.

View File

@ -807,10 +807,9 @@ typedef struct
/** Callback to retrieve a session from the cache */ /** Callback to retrieve a session from the cache */
int (*f_get_cache)(void *, mbedtls_ssl_session *); int (*f_get_cache)(void *, mbedtls_ssl_session *);
void *p_get_cache; /*!< context for cache retrieval */
/** Callback to store a session into the cache */ /** Callback to store a session into the cache */
int (*f_set_cache)(void *, const mbedtls_ssl_session *); int (*f_set_cache)(void *, const mbedtls_ssl_session *);
void *p_set_cache; /*!< context for cache store */ void *p_cache; /*!< context for cache callbacks */
#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
/** Callback for setting cert according to SNI extension */ /** Callback for setting cert according to SNI extension */
@ -1482,14 +1481,14 @@ void mbedtls_ssl_set_handshake_timeout( mbedtls_ssl_config *conf, uint32_t min,
* successfully cached, return 1 otherwise. * successfully cached, return 1 otherwise.
* *
* \param conf SSL configuration * \param conf SSL configuration
* \param p_cache parmater (context) for both callbacks
* \param f_get_cache session get callback * \param f_get_cache session get callback
* \param p_get_cache session get parameter
* \param f_set_cache session set callback * \param f_set_cache session set callback
* \param p_set_cache session set parameter
*/ */
void mbedtls_ssl_set_session_cache( mbedtls_ssl_config *conf, void mbedtls_ssl_set_session_cache( mbedtls_ssl_config *conf,
int (*f_get_cache)(void *, mbedtls_ssl_session *), void *p_get_cache, void *p_cache,
int (*f_set_cache)(void *, const mbedtls_ssl_session *), void *p_set_cache ); int (*f_get_cache)(void *, mbedtls_ssl_session *),
int (*f_set_cache)(void *, const mbedtls_ssl_session *) );
#endif /* MBEDTLS_SSL_SRV_C */ #endif /* MBEDTLS_SSL_SRV_C */
#if defined(MBEDTLS_SSL_CLI_C) #if defined(MBEDTLS_SSL_CLI_C)

View File

@ -2475,7 +2475,7 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl )
#endif #endif
ssl->session_negotiate->length != 0 && ssl->session_negotiate->length != 0 &&
ssl->conf->f_get_cache != NULL && ssl->conf->f_get_cache != NULL &&
ssl->conf->f_get_cache( ssl->conf->p_get_cache, ssl->session_negotiate ) == 0 ) ssl->conf->f_get_cache( ssl->conf->p_cache, ssl->session_negotiate ) == 0 )
{ {
MBEDTLS_SSL_DEBUG_MSG( 3, ( "session successfully restored from cache" ) ); MBEDTLS_SSL_DEBUG_MSG( 3, ( "session successfully restored from cache" ) );
ssl->handshake->resume = 1; ssl->handshake->resume = 1;

View File

@ -4575,7 +4575,7 @@ void mbedtls_ssl_handshake_wrapup( mbedtls_ssl_context *ssl )
ssl->session->length != 0 && ssl->session->length != 0 &&
resume == 0 ) resume == 0 )
{ {
if( ssl->conf->f_set_cache( ssl->conf->p_set_cache, ssl->session ) != 0 ) if( ssl->conf->f_set_cache( ssl->conf->p_cache, ssl->session ) != 0 )
MBEDTLS_SSL_DEBUG_MSG( 1, ( "cache did not store session" ) ); MBEDTLS_SSL_DEBUG_MSG( 1, ( "cache did not store session" ) );
} }
@ -5245,13 +5245,13 @@ void mbedtls_ssl_set_read_timeout( mbedtls_ssl_config *conf, uint32_t timeout )
#if defined(MBEDTLS_SSL_SRV_C) #if defined(MBEDTLS_SSL_SRV_C)
void mbedtls_ssl_set_session_cache( mbedtls_ssl_config *conf, void mbedtls_ssl_set_session_cache( mbedtls_ssl_config *conf,
int (*f_get_cache)(void *, mbedtls_ssl_session *), void *p_get_cache, void *p_cache,
int (*f_set_cache)(void *, const mbedtls_ssl_session *), void *p_set_cache ) int (*f_get_cache)(void *, mbedtls_ssl_session *),
int (*f_set_cache)(void *, const mbedtls_ssl_session *) )
{ {
conf->p_cache = p_cache;
conf->f_get_cache = f_get_cache; conf->f_get_cache = f_get_cache;
conf->p_get_cache = p_get_cache;
conf->f_set_cache = f_set_cache; conf->f_set_cache = f_set_cache;
conf->p_set_cache = p_set_cache;
} }
#endif /* MBEDTLS_SSL_SRV_C */ #endif /* MBEDTLS_SSL_SRV_C */

View File

@ -210,9 +210,9 @@ int main( void )
mbedtls_ssl_set_dbg( &conf, my_debug, stdout ); mbedtls_ssl_set_dbg( &conf, my_debug, stdout );
#if defined(MBEDTLS_SSL_CACHE_C) #if defined(MBEDTLS_SSL_CACHE_C)
mbedtls_ssl_set_session_cache( &conf, mbedtls_ssl_set_session_cache( &conf, &cache,
mbedtls_ssl_cache_get, &cache, mbedtls_ssl_cache_get,
mbedtls_ssl_cache_set, &cache ); mbedtls_ssl_cache_set );
#endif #endif
mbedtls_ssl_set_ca_chain( &conf, srvcert.next, NULL ); mbedtls_ssl_set_ca_chain( &conf, srvcert.next, NULL );

View File

@ -209,9 +209,9 @@ int main( void )
mbedtls_ssl_set_dbg( &conf, my_debug, stdout ); mbedtls_ssl_set_dbg( &conf, my_debug, stdout );
#if defined(MBEDTLS_SSL_CACHE_C) #if defined(MBEDTLS_SSL_CACHE_C)
mbedtls_ssl_set_session_cache( &conf, mbedtls_ssl_set_session_cache( &conf, &cache,
mbedtls_ssl_cache_get, &cache, mbedtls_ssl_cache_get,
mbedtls_ssl_cache_set, &cache ); mbedtls_ssl_cache_set );
#endif #endif
mbedtls_ssl_set_ca_chain( &conf, srvcert.next, NULL ); mbedtls_ssl_set_ca_chain( &conf, srvcert.next, NULL );

View File

@ -1584,9 +1584,9 @@ int main( int argc, char *argv[] )
if( opt.cache_timeout != -1 ) if( opt.cache_timeout != -1 )
mbedtls_ssl_cache_set_timeout( &cache, opt.cache_timeout ); mbedtls_ssl_cache_set_timeout( &cache, opt.cache_timeout );
mbedtls_ssl_set_session_cache( &conf, mbedtls_ssl_set_session_cache( &conf, &cache,
mbedtls_ssl_cache_get, &cache, mbedtls_ssl_cache_get,
mbedtls_ssl_cache_set, &cache ); mbedtls_ssl_cache_set );
#endif #endif
#if defined(MBEDTLS_SSL_SESSION_TICKETS) #if defined(MBEDTLS_SSL_SESSION_TICKETS)