verify1.c revision 1.1 1 1.1 riastrad
2 1.1 riastrad #define TEST_NAME "verify1"
3 1.1 riastrad #include "cmptest.h"
4 1.1 riastrad
5 1.1 riastrad int
6 1.1 riastrad main(void)
7 1.1 riastrad {
8 1.1 riastrad unsigned char *v16, *v16x;
9 1.1 riastrad unsigned char *v32, *v32x;
10 1.1 riastrad unsigned char *v64, *v64x;
11 1.1 riastrad uint32_t r;
12 1.1 riastrad uint8_t o;
13 1.1 riastrad int i;
14 1.1 riastrad
15 1.1 riastrad v16 = (unsigned char *) sodium_malloc(16);
16 1.1 riastrad v16x = (unsigned char *) sodium_malloc(16);
17 1.1 riastrad v32 = (unsigned char *) sodium_malloc(32);
18 1.1 riastrad v32x = (unsigned char *) sodium_malloc(32);
19 1.1 riastrad v64 = (unsigned char *) sodium_malloc(64);
20 1.1 riastrad v64x = (unsigned char *) sodium_malloc(64);
21 1.1 riastrad for (i = 0; i < 10000; i++) {
22 1.1 riastrad randombytes_buf(v16, 16);
23 1.1 riastrad randombytes_buf(v32, 32);
24 1.1 riastrad randombytes_buf(v64, 64);
25 1.1 riastrad
26 1.1 riastrad memcpy(v16x, v16, 16);
27 1.1 riastrad memcpy(v32x, v32, 32);
28 1.1 riastrad memcpy(v64x, v64, 64);
29 1.1 riastrad
30 1.1 riastrad if (crypto_verify_16(v16, v16x) != 0 ||
31 1.1 riastrad crypto_verify_32(v32, v32x) != 0 ||
32 1.1 riastrad crypto_verify_64(v64, v64x) != 0 ||
33 1.1 riastrad sodium_memcmp(v16, v16x, 16) != 0 ||
34 1.1 riastrad sodium_memcmp(v32, v32x, 32) != 0 ||
35 1.1 riastrad sodium_memcmp(v64, v64x, 64) != 0) {
36 1.1 riastrad printf("Failed\n");
37 1.1 riastrad }
38 1.1 riastrad }
39 1.1 riastrad printf("OK\n");
40 1.1 riastrad
41 1.1 riastrad for (i = 0; i < 100000; i++) {
42 1.1 riastrad r = randombytes_random();
43 1.1 riastrad o = (uint8_t) randombytes_random();
44 1.1 riastrad if (o == 0) {
45 1.1 riastrad continue;
46 1.1 riastrad }
47 1.1 riastrad v16x[r & 15U] ^= o;
48 1.1 riastrad v32x[r & 31U] ^= o;
49 1.1 riastrad v64x[r & 63U] ^= o;
50 1.1 riastrad if (crypto_verify_16(v16, v16x) != -1 ||
51 1.1 riastrad crypto_verify_32(v32, v32x) != -1 ||
52 1.1 riastrad crypto_verify_64(v64, v64x) != -1 ||
53 1.1 riastrad sodium_memcmp(v16, v16x, 16) != -1 ||
54 1.1 riastrad sodium_memcmp(v32, v32x, 32) != -1 ||
55 1.1 riastrad sodium_memcmp(v64, v64x, 64) != -1) {
56 1.1 riastrad printf("Failed\n");
57 1.1 riastrad }
58 1.1 riastrad v16x[r & 15U] ^= o;
59 1.1 riastrad v32x[r & 31U] ^= o;
60 1.1 riastrad v64x[r & 63U] ^= o;
61 1.1 riastrad }
62 1.1 riastrad printf("OK\n");
63 1.1 riastrad
64 1.1 riastrad assert(crypto_verify_16_bytes() == 16U);
65 1.1 riastrad assert(crypto_verify_32_bytes() == 32U);
66 1.1 riastrad assert(crypto_verify_64_bytes() == 64U);
67 1.1 riastrad
68 1.1 riastrad sodium_free(v16);
69 1.1 riastrad sodium_free(v16x);
70 1.1 riastrad sodium_free(v32);
71 1.1 riastrad sodium_free(v32x);
72 1.1 riastrad sodium_free(v64);
73 1.1 riastrad sodium_free(v64x);
74 1.1 riastrad
75 1.1 riastrad return 0;
76 1.1 riastrad }
77