Home | History | Annotate | Line # | Download | only in default
      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