/* BEGIN_HEADER */
#include <mbedtls/ssl.h>
/* END_HEADER */

/* BEGIN_DEPENDENCIES
 * depends_on:POLARSSL_SSL_TLS_C
 * END_DEPENDENCIES
 */

/* BEGIN_CASE depends_on:POLARSSL_SSL_DTLS_ANTI_REPLAY */
void ssl_dtls_replay( char *prevs, char *new, int ret )
{
    ssl_context ssl;
    char *end_prevs = prevs + strlen( prevs ) + 1;

    TEST_ASSERT( ssl_init( &ssl ) == 0 );
    TEST_ASSERT( ssl_set_transport( &ssl, SSL_TRANSPORT_DATAGRAM ) == 0 );

    /* Read previous record numbers */
    for( ; end_prevs - prevs >= 13; prevs += 13 )
    {
        prevs[12] = '\0';
        unhexify( ssl.in_ctr + 2, prevs );
        ssl_dtls_replay_update( &ssl );
    }

    /* Check new number */
    unhexify( ssl.in_ctr + 2, new );
    TEST_ASSERT( ssl_dtls_replay_check( &ssl ) == ret );

    ssl_free( &ssl );
}
/* END_CASE */
