1 2 #define TEST_NAME "auth" 3 #include "cmptest.h" 4 5 /* "Test Case 2" from RFC 4231 */ 6 static unsigned char key[32] = "Jefe"; 7 static unsigned char c[] = "what do ya want for nothing?"; 8 9 /* Hacker manifesto */ 10 static 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 15 static unsigned char a[crypto_auth_BYTES]; 16 static unsigned char a2[crypto_auth_hmacsha512_BYTES]; 17 18 int 19 main(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