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