Improve load-save test with tickets and certs

This commit is contained in:
Manuel Pégourié-Gonnard 2019-05-23 10:06:14 +02:00
parent dfa5a7ae76
commit 16f6bb1aa3
2 changed files with 83 additions and 3 deletions

View file

@ -8714,5 +8714,25 @@ Record crypt, little space, NULL cipher, SSL3, MD5, short tag, EtM
depends_on:MBEDTLS_CIPHER_NULL_CIPHER:MBEDTLS_SSL_PROTO_SSL3:MBEDTLS_MD5_C:MBEDTLS_SSL_ENCRYPT_THEN_MAC
ssl_crypt_record_small:MBEDTLS_CIPHER_NULL:MBEDTLS_MD_MD5:1:1:MBEDTLS_SSL_MINOR_VERSION_0:0:0
Session serialisation, load-save
ssl_serialise_session_load_save:
Session serialisation, load-save: no ticket, no cert
ssl_serialise_session_load_save:0:""
Session serialisation, load-save: small ticket, no cert
depends_on:MBEDTLS_SSL_SESSION_TICKETS:MBEDTLS_SSL_CLI_C
ssl_serialise_session_load_save:42:""
Session serialisation, load-save: large ticket, no cert
depends_on:MBEDTLS_SSL_SESSION_TICKETS:MBEDTLS_SSL_CLI_C
ssl_serialise_session_load_save:1023:""
Session serialisation, load-save: no ticket, cert
depends_on:MBEDTLS_X509_USE_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C
ssl_serialise_session_load_save:0:"data_files/server5.crt"
Session serialisation, load-save: small ticket, cert
depends_on:MBEDTLS_SSL_SESSION_TICKETS:MBEDTLS_SSL_CLI_C:MBEDTLS_X509_USE_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C
ssl_serialise_session_load_save:42:"data_files/server5.crt"
Session serialisation, load-save: large ticket, cert
depends_on:MBEDTLS_SSL_SESSION_TICKETS:MBEDTLS_SSL_CLI_C:MBEDTLS_X509_USE_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C
ssl_serialise_session_load_save:1023:"data_files/server5.crt"

View file

@ -266,6 +266,63 @@ cleanup:
return( ret );
}
/*
* Populate a session structure for serialisation tests.
* Choose dummy values, mostly non-0 to distinguish from the init default.
*/
static int ssl_populate_session( mbedtls_ssl_session *session,
int ticket_len,
const char *crt_file )
{
#if defined(MBEDTLS_HAVE_TIME)
session->start = mbedtls_time( NULL ) - 42;
#endif
session->ciphersuite = 0xabcd;
session->compression = 1;
session->id_len = sizeof( session->id );
memset( session->id, 66, session->id_len );
memset( session->master, 17, sizeof( session-> master ) );
#if defined(MBEDTLS_X509_CRT_PARSE_C)
if( strlen( crt_file ) != 0 )
{
int ret;
ret = mbedtls_x509_crt_parse_file( session->peer_cert, crt_file );
if( ret != 0 )
return( ret );
}
#else
(void) crt_file;
#endif
session->verify_result = 0xdeadbeef;
#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C)
if( ticket_len != 0 )
{
session->ticket = mbedtls_calloc( 1, ticket_len );
if( session-> ticket == NULL )
return( -1 );
memset( session->ticket, 33, ticket_len );
}
session->ticket_len = ticket_len;
session->ticket_lifetime = 86401;
#else
(void) ticket_len;
#endif
#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
session->mfl_code = 1;
#endif
#if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
session->trunc_hmac = 1;
#endif
#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
session->encrypt_then_mac = 1;
#endif
return( 0 );
}
/* END_HEADER */
/* BEGIN_DEPENDENCIES
@ -577,7 +634,7 @@ exit:
/* END_CASE */
/* BEGIN_CASE */
void ssl_serialise_session_load_save( )
void ssl_serialise_session_load_save( int ticket_len, char *crt_file )
{
mbedtls_ssl_session session;
unsigned char *buf1 = NULL, *buf2 = NULL;
@ -589,6 +646,9 @@ void ssl_serialise_session_load_save( )
mbedtls_ssl_session_init( &session );
/* Prepare a dummy session to work on */
ssl_populate_session( &session, ticket_len, crt_file );
/* Get desired buffer size for serialising */
TEST_ASSERT( mbedtls_ssl_session_save( &session, NULL, 0, &len0 )
== MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL );