1 2#define TEST_NAME "auth" 3#include "cmptest.h" 4 5/* "Test Case 2" from RFC 4231 */ 6static unsigned char key[32] = "Jefe"; 7static unsigned char c[] = "what do ya want for nothing?"; 8 9/* Hacker manifesto */ 10static unsigned char key2[] = 11 "Another one got caught today, it's all over the papers. \"Teenager " 12 "Arrested in Computer Crime Scandal\", \"Hacker Arrested after Bank " 13 "Tampering\"... Damn kids. They're all alike."; 14 15static unsigned char a[crypto_auth_BYTES]; 16static unsigned char a2[crypto_auth_hmacsha512_BYTES]; 17 18int 19main(void) 20{ 21 crypto_auth_hmacsha512_state st; 22 crypto_auth_hmacsha256_state st256; 23 size_t i; 24 25 assert(crypto_auth_hmacsha512_statebytes() == 26 sizeof(crypto_auth_hmacsha512_state)); 27 crypto_auth(a, c, sizeof c - 1U, key); 28 for (i = 0; i < sizeof a; ++i) { 29 printf(",0x%02x", (unsigned int) a[i]); 30 if (i % 8 == 7) 31 printf("\n"); 32 } 33 printf("\n"); 34 35 crypto_auth_hmacsha512_init(&st, key, sizeof key); 36 crypto_auth_hmacsha512_update(&st, c, 1U); 37 crypto_auth_hmacsha512_update(&st, c, sizeof c - 2U); 38 crypto_auth_hmacsha512_final(&st, a2); 39 for (i = 0; i < sizeof a2; ++i) { 40 printf(",0x%02x", (unsigned int) a2[i]); 41 if (i % 8 == 7) 42 printf("\n"); 43 } 44 printf("\n"); 45 46 crypto_auth_hmacsha512_init(&st, key2, sizeof key2); 47 crypto_auth_hmacsha512_update(&st, c, 1U); 48 crypto_auth_hmacsha512_update(&st, c, sizeof c - 2U); 49 crypto_auth_hmacsha512_final(&st, a2); 50 for (i = 0; i < sizeof a2; ++i) { 51 printf(",0x%02x", (unsigned int) a2[i]); 52 if (i % 8 == 7) 53 printf("\n"); 54 } 55 56 memset(a2, 0, sizeof a2); 57 crypto_auth_hmacsha256_init(&st256, key2, sizeof key2); 58 crypto_auth_hmacsha256_update(&st256, NULL, 0U); 59 crypto_auth_hmacsha256_update(&st256, c, 1U); 60 crypto_auth_hmacsha256_update(&st256, c, sizeof c - 2U); 61 crypto_auth_hmacsha256_final(&st256, a2); 62 for (i = 0; i < sizeof a2; ++i) { 63 printf(",0x%02x", (unsigned int) a2[i]); 64 if (i % 8 == 7) 65 printf("\n"); 66 } 67 68 assert(crypto_auth_bytes() > 0U); 69 assert(crypto_auth_keybytes() > 0U); 70 assert(strcmp(crypto_auth_primitive(), "hmacsha512256") == 0); 71 assert(crypto_auth_hmacsha256_bytes() > 0U); 72 assert(crypto_auth_hmacsha256_keybytes() > 0U); 73 assert(crypto_auth_hmacsha512_bytes() > 0U); 74 assert(crypto_auth_hmacsha512_keybytes() > 0U); 75 assert(crypto_auth_hmacsha512256_bytes() == crypto_auth_bytes()); 76 assert(crypto_auth_hmacsha512256_keybytes() == crypto_auth_keybytes()); 77 assert(crypto_auth_hmacsha512256_statebytes() >= 78 crypto_auth_hmacsha512256_keybytes()); 79 assert(crypto_auth_hmacsha256_statebytes() == 80 sizeof(crypto_auth_hmacsha256_state)); 81 assert(crypto_auth_hmacsha512_statebytes() == 82 sizeof(crypto_auth_hmacsha512_state)); 83 84 return 0; 85} 86