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