/* BEGIN_HEADER */
#include <mbedtls/ssl.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;
    char *end_prevs = prevs + strlen( prevs ) + 1;

    TEST_ASSERT( mbedtls_ssl_init( &ssl ) == 0 );
    TEST_ASSERT( mbedtls_ssl_set_transport( &ssl, MBEDTLS_SSL_TRANSPORT_DATAGRAM ) == 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 );
}
/* END_CASE */
