1*0ac341f1SConrad Meyer 2*0ac341f1SConrad Meyer #define TEST_NAME "auth7" 3*0ac341f1SConrad Meyer #include "cmptest.h" 4*0ac341f1SConrad Meyer 5*0ac341f1SConrad Meyer static unsigned char key[32]; 6*0ac341f1SConrad Meyer static unsigned char c[600]; 7*0ac341f1SConrad Meyer static unsigned char a[64]; 8*0ac341f1SConrad Meyer 9*0ac341f1SConrad Meyer int 10*0ac341f1SConrad Meyer main(void) 11*0ac341f1SConrad Meyer { 12*0ac341f1SConrad Meyer size_t clen; 13*0ac341f1SConrad Meyer 14*0ac341f1SConrad Meyer for (clen = 0; clen < sizeof c; ++clen) { 15*0ac341f1SConrad Meyer crypto_auth_keygen(key); 16*0ac341f1SConrad Meyer randombytes_buf(c, clen); 17*0ac341f1SConrad Meyer crypto_auth_hmacsha512(a, c, clen, key); 18*0ac341f1SConrad Meyer if (crypto_auth_hmacsha512_verify(a, c, clen, key) != 0) { 19*0ac341f1SConrad Meyer printf("fail %u\n", (unsigned int) clen); 20*0ac341f1SConrad Meyer return 100; 21*0ac341f1SConrad Meyer } 22*0ac341f1SConrad Meyer if (clen > 0) { 23*0ac341f1SConrad Meyer c[(size_t) rand() % clen] += 1 + (rand() % 255); 24*0ac341f1SConrad Meyer if (crypto_auth_hmacsha512_verify(a, c, clen, key) == 0) { 25*0ac341f1SConrad Meyer printf("forgery %u\n", (unsigned int) clen); 26*0ac341f1SConrad Meyer return 100; 27*0ac341f1SConrad Meyer } 28*0ac341f1SConrad Meyer a[rand() % sizeof a] += 1 + (rand() % 255); 29*0ac341f1SConrad Meyer if (crypto_auth_hmacsha512_verify(a, c, clen, key) == 0) { 30*0ac341f1SConrad Meyer printf("forgery %u\n", (unsigned int) clen); 31*0ac341f1SConrad Meyer return 100; 32*0ac341f1SConrad Meyer } 33*0ac341f1SConrad Meyer } 34*0ac341f1SConrad Meyer } 35*0ac341f1SConrad Meyer return 0; 36*0ac341f1SConrad Meyer } 37