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