From 75d440192ca3dfda6656ea1ef93fc0ff3a26f9c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 2 Aug 2013 14:44:04 +0200 Subject: [PATCH] Introduce ticket field in session structure --- include/polarssl/ssl.h | 3 +++ library/ssl_tls.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h index 3c8f1e6a5..2ffb54977 100644 --- a/include/polarssl/ssl.h +++ b/include/polarssl/ssl.h @@ -338,6 +338,9 @@ struct _ssl_session x509_cert *peer_cert; /*!< peer X.509 cert chain */ #endif /* POLARSSL_X509_PARSE_C */ + unsigned char *ticket; /*!< RFC 5077 session ticket */ + size_t ticket_len; /*!< session ticket length */ + unsigned char mfl_code; /*!< MaxFragmentLength negotiated by peer */ int trunc_hmac; /*!< flag for truncated hmac activation */ }; diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 5337895d4..7e8ff343c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3258,6 +3258,14 @@ int ssl_get_session( const ssl_context *ssl, ssl_session *dst ) } #endif /* POLARSSL_X509_PARSE_C */ + if( src->ticket != NULL ) + { + if( ( dst->ticket = polarssl_malloc( src->ticket_len ) ) == NULL ) + return( POLARSSL_ERR_SSL_MALLOC_FAILED ); + + memcpy( dst->ticket, src->ticket, src->ticket_len ); + } + return( 0 ); } @@ -3579,6 +3587,8 @@ void ssl_session_free( ssl_session *session ) } #endif + polarssl_free( session->ticket ); + memset( session, 0, sizeof( ssl_session ) ); }