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[1000];
    unsigned char dst_hexstr[2000];
    int src_len, key_len;
    arc4_context ctx;

    memset(src_str, 0x00, 1000);
    memset(key_str, 0x00, 1000);
    memset(dst_str, 0x00, 1000);
    memset(dst_hexstr, 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_len, src_str, dst_str ) == 0 );
    hexify( dst_hexstr, dst_str, src_len );

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

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