BEGIN_HEADER
#include <polarssl/arc4.h>
END_HEADER

BEGIN_CASE
arc4_crypt:hex_src_string:hex_key_string:hex_dst_string
{
    unsigned char src_str[1000];
    unsigned char key_str[1000];
    unsigned char dst_str[2000];
    int src_len, key_len;
    arc4_context ctx;

    memset(src_str, 0x00, 1000);
    memset(key_str, 0x00, 1000);
    memset(dst_str, 0x00, 2000);

    src_len = unhexify( src_str, {hex_src_string} );
    key_len = unhexify( key_str, {hex_key_string} );

    arc4_setup(&ctx, key_str, key_len);
    TEST_ASSERT( arc4_crypt(&ctx, src_str, src_len) == 0 );
    hexify( dst_str, src_str, src_len );

    TEST_ASSERT( strcmp( (char *) dst_str, {hex_dst_string} ) == 0 );
}
END_CASE

BEGIN_CASE
arc4_selftest:
{
    TEST_ASSERT( arc4_self_test( 0 ) == 0 );
}
END_CASE
