/* See LICENSE file for copyright and license details. */
#ifdef SUPPORT_SHAKE
# define TEST
# include "common.h"
#define MSG1600_32 "\xA3\xA3\xA3\xA3"
#define MSG1600_160 MSG1600_32 MSG1600_32 MSG1600_32 MSG1600_32 MSG1600_32
#define MSG1600_800 MSG1600_160 MSG1600_160 MSG1600_160 MSG1600_160 MSG1600_160
#define MSG1600 MSG1600_800 MSG1600_800
static struct testcase testcases[] = {
{1, 0, "", "fa019a3b17630df6014853b5470773f1"},
{1, 0, MSG1600, "96a8092bb1419aefb092e1935190b10e"}
};
#else
# define TEST_UNSUPPORTED
# include "common.h"
#endif
static int
main_test(void)
{
TEST_MAIN("RawSHAKE128", RAWSHAKE128);
}
int
main(void)
{
#ifdef SUPPORT_RAWSHAKE
struct libhashsum_hasher hasher;
char hexsum[1024];
#endif
int r = main_test();
if (r)
return r;
ASSERT(!libhashsum_init_rawshake128_hasher(&hasher, 8));
ASSERT(!strcmp(hasher.algorithm_string, "RawSHAKE128[n=8]"));
ASSERT(!hasher.finalise_const(&hasher, "", 0, 0));
ASSERT(hasher.hash_size == 1);
hex(hexsum, hasher.hash_output, hasher.hash_size);
ASSERT(!strcmp(hexsum, "fa"));
ASSERT(!libhashsum_init_rawshake128_hasher(&hasher, 32));
ASSERT(!strcmp(hasher.algorithm_string, "RawSHAKE128[n=32]"));
ASSERT(!hasher.finalise_const(&hasher, "", 0, 0));
ASSERT(hasher.hash_size == 4);
hex(hexsum, hasher.hash_output, hasher.hash_size);
ASSERT(!strcmp(hexsum, "fa019a3b"));
ASSERT(!libhashsum_init_rawshake128_hasher(&hasher, 32));
ASSERT(!strcmp(hasher.algorithm_string, "RawSHAKE128[n=32]"));
ASSERT(!hasher.finalise_const(&hasher, MSG1600, 1600/8, 0));
ASSERT(hasher.hash_size == 4);
hex(hexsum, hasher.hash_output, hasher.hash_size);
ASSERT(!strcmp(hexsum, "96a8092b"));
ASSERT(!libhashsum_init_rawshake128_hasher(&hasher, 128));
ASSERT(!strcmp(hasher.algorithm_string, "RawSHAKE128"));
ASSERT(!hasher.finalise_const(&hasher, MSG1600, 1600/8, 0));
ASSERT(hasher.hash_size == 128/8);
hex(hexsum, hasher.hash_output, hasher.hash_size);
ASSERT(!strcmp(hexsum, "96a8092bb1419aefb092e1935190b10e"));
ASSERT(!libhashsum_init_rawshake128_hasher(&hasher, 256));
ASSERT(!strcmp(hasher.algorithm_string, "RawSHAKE128[n=256]"));
ASSERT(!hasher.finalise_const(&hasher, MSG1600, 1600/8, 0));
ASSERT(hasher.hash_size == 256/8);
hex(hexsum, hasher.hash_output, hasher.hash_size);
ASSERT(!strcmp(hexsum, "96a8092bb1419aefb092e1935190b10e6323db3b2e8e1ecc546518f20820da7b"));
return 0;
}