/* BEGIN_HEADER */ #include #include /* END_HEADER */ /* BEGIN_DEPENDENCIES * depends_on:MBEDTLS_SSL_TLS_C * END_DEPENDENCIES */ /* BEGIN_CASE depends_on:MBEDTLS_SSL_DTLS_ANTI_REPLAY */ void ssl_dtls_replay( char *prevs, char *new, int ret ) { mbedtls_ssl_context ssl; mbedtls_ssl_config conf; char *end_prevs = prevs + strlen( prevs ) + 1; mbedtls_ssl_init( &ssl ); mbedtls_ssl_config_init( &conf ); TEST_ASSERT( mbedtls_ssl_config_defaults( &conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_DATAGRAM ) == 0 ); TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 ); /* Read previous record numbers */ for( ; end_prevs - prevs >= 13; prevs += 13 ) { prevs[12] = '\0'; unhexify( ssl.in_ctr + 2, prevs ); mbedtls_ssl_dtls_replay_update( &ssl ); } /* Check new number */ unhexify( ssl.in_ctr + 2, new ); TEST_ASSERT( mbedtls_ssl_dtls_replay_check( &ssl ) == ret ); mbedtls_ssl_free( &ssl ); mbedtls_ssl_config_free( &conf ); } /* END_CASE */