/* 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, 1); } 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; }