#include #include #include #include typedef uint32_t uint32; #include "crypto_core.h" #include "crypto_test.h" static const uint32 zero[8]; /* * From * , * adapted to use 32-bit words. */ static const uint32 out[16] = { 0xade0b876U, 0x903df1a0U, 0xe56a5d40U, 0x28bd8653U, 0xb819d2bdU, 0x1aed8da0U, 0xccef36a8U, 0xc70d778bU, 0x7c5941daU, 0x8d485751U, 0x3fe02477U, 0x374ad8b8U, 0xf4b8436aU, 0x1ca11815U, 0x69b687c3U, 0x8665eeb2U, }; /* `expand 32-byte k' */ static const uint32 sigma[4] = { 0x61707865U, 0x3320646eU, 0x79622d32U, 0x6b206574U, }; void crypto_test(void) { uint32 r[16]; unsigned int i; uint32 d = 0; crypto_core(r, zero, zero, sigma); for (i = 0; i < 8; i++) d |= r[i] ^ out[i]; if (d) { for (i = 0; i < 64; i++) printf("%08"PRIx32, r[i]); printf("\n"); for (i = 0; i < 64; i++) printf("%08"PRIx32, out[i]); printf("\n"); errx(1, "zero"); } }