| /* BEGIN_HEADER */ |
| #include <mbedtls/ssl.h> |
| #include <mbedtls/ssl_internal.h> |
| /* 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, |
| MBEDTLS_SSL_PRESET_DEFAULT ) == 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 */ |