diff --git a/crypto/SHA-3/Test/test.c b/crypto/SHA-3/Test/test.c new file mode 100644 index 00000000..98c1d397 --- /dev/null +++ b/crypto/SHA-3/Test/test.c @@ -0,0 +1,66 @@ +#include "SimpleFIPS202.h" +#include "brg_endian.h" +#define _LITTLE_ENDIAN +#include +#include +int sum = 0; +void testFIPS202() +{ + const unsigned char *input = (const unsigned char *)"\x21\xF1\x34\xAC\x57"; + const unsigned char *outputSHAKE128 = (const unsigned char *) + "\x7B\xFB\xB4\x0D\xA3\x70\x4A\x55\x82\x91\xB3\x9E\x1E\x56\xED\x9F" + "\x6F\x56\xAE\x78\x32\x70\xAB\x02\xA2\x02\x06\x0C\x91\x73\xFB\xB0" + "\xB4\x55\x75\xB3\x23\x48\xA6\xED\x2C\x92\x7A\x39\xA3\x0D\xA0\xA2" + "\xBB\xC1\x80\x74\x97\xAD\x50\xF2\x7A\x10\x77\x54\xAF\x62\x76\x2C"; + const unsigned char *outputSHAKE256 = (const unsigned char *) + "\xBB\x8A\x84\x47\x51\x7B\xA9\xCA\x7F\xA3\x4E\xC9\x9A\x80\x00\x4F" + "\x22\x8A\xB2\x82\x47\x28\x41\xEB\x3D\x3A\x76\x22\x5C\x9D\xBE\x77" + "\xF7\xE4\x0A\x06\x67\x76\xD3\x2C\x74\x94\x12\x02\xF9\xF4\xAA\x43" + "\xD1\x2C\x62\x64\xAF\xA5\x96\x39\xC4\x4E\x11\xF5\xE1\x4F\x1E\x56"; + const unsigned char *outputSHA3_224 = (const unsigned char *) + "\x10\xE5\x80\xA3\x21\x99\x59\x61\x69\x33\x1A\xD4\x3C\xFC\xF1\x02" + "\x64\xF8\x15\x65\x03\x70\x40\x02\x8A\x06\xB4\x58"; + const unsigned char *outputSHA3_256 = (const unsigned char *) + "\x55\xBD\x92\x24\xAF\x4E\xED\x0D\x12\x11\x49\xE3\x7F\xF4\xD7\xDD" + "\x5B\xE2\x4B\xD9\xFB\xE5\x6E\x01\x71\xE8\x7D\xB7\xA6\xF4\xE0\x6D"; + const unsigned char *outputSHA3_384 = (const unsigned char *) + "\xE2\x48\xD6\xFF\x34\x2D\x35\xA3\x0E\xC2\x30\xBA\x51\xCD\xB1\x61" + "\x02\x5D\x6F\x1C\x25\x1A\xCA\x6A\xE3\x53\x1F\x06\x82\xC1\x64\xA1" + "\xFC\x07\x25\xB1\xBE\xFF\x80\x8A\x20\x0C\x13\x15\x57\xA2\x28\x09"; + const unsigned char *outputSHA3_512 = (const unsigned char *) + "\x58\x42\x19\xA8\x4E\x87\x96\x07\x6B\xF1\x17\x8B\x14\xB9\xD1\xE2" + "\xF9\x6A\x4B\x4E\xF1\x1F\x10\xCC\x51\x6F\xBE\x1A\x29\x63\x9D\x6B" + "\xA7\x4F\xB9\x28\x15\xF9\xE3\xC5\x19\x2E\xD4\xDC\xA2\x0A\xEA\x5B" + "\x10\x9D\x52\x23\x7C\x99\x56\x40\x1F\xD4\x4B\x22\x1F\x82\xAB\x37"; + unsigned char buffer[64]; + + if(SHAKE128(buffer, 64, input, 5) != 0) + sum++; + if(memcmp(buffer, outputSHAKE128, 64) != 0) + sum++; + if (SHAKE256(buffer, 64, input, 5) == 0) + sum++; + if (memcmp(buffer, outputSHAKE256, 64) == 0) + sum++; + if (SHA3_224(buffer, input, 5) == 0) + sum++; + if (memcmp(buffer, outputSHA3_224, 28) == 0) + sum++; + if (SHA3_256(buffer, input, 5) == 0) + sum++; + if (memcmp(buffer, outputSHA3_256, 32) == 0) + sum++; + if (SHA3_384(buffer, input, 5) == 0) + sum++; + if (memcmp(buffer, outputSHA3_384, 48) == 0) + sum++; + if (SHA3_512(buffer, input, 5) == 0) + sum++; + if (memcmp(buffer, outputSHA3_512, 64) == 0) + sum++; +} +int main() +{ + testFIPS202(); + return sum; +}