diff --git a/test/default/aead_xchacha20poly1305.c b/test/default/aead_xchacha20poly1305.c index 7924038d..0927ce6c 100644 --- a/test/default/aead_xchacha20poly1305.c +++ b/test/default/aead_xchacha20poly1305.c @@ -40,8 +40,8 @@ tv(void) assert(sizeof MESSAGE - 1U == MLEN); memcpy(m, MESSAGE, MLEN); crypto_aead_xchacha20poly1305_ietf_encrypt(c, &found_clen, m, MLEN, - ad, ADLEN, - NULL, nonce, firstkey); + ad, ADLEN, + NULL, nonce, firstkey); if (found_clen != MLEN + crypto_aead_xchacha20poly1305_ietf_abytes()) { printf("found_clen is not properly set\n"); } @@ -53,10 +53,10 @@ tv(void) } printf("\n"); crypto_aead_xchacha20poly1305_ietf_encrypt_detached(detached_c, - mac, &found_maclen, - m, MLEN, - ad, ADLEN, - NULL, nonce, firstkey); + mac, &found_maclen, + m, MLEN, + ad, ADLEN, + NULL, nonce, firstkey); if (found_maclen != crypto_aead_xchacha20poly1305_ietf_abytes()) { printf("found_maclen is not properly set\n"); } @@ -65,7 +65,7 @@ tv(void) } if (crypto_aead_xchacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, CLEN, ad, - ADLEN, nonce, firstkey) != 0) { + ADLEN, nonce, firstkey) != 0) { printf("crypto_aead_xchacha20poly1305_ietf_decrypt() failed\n"); } if (m2len != MLEN) { @@ -76,9 +76,9 @@ tv(void) } memset(m2, 0, m2len); if (crypto_aead_xchacha20poly1305_ietf_decrypt_detached(m2, NULL, - c, MLEN, mac, - ad, ADLEN, - nonce, firstkey) != 0) { + c, MLEN, mac, + ad, ADLEN, + nonce, firstkey) != 0) { printf("crypto_aead_xchacha20poly1305_ietf_decrypt_detached() failed\n"); } if (memcmp(m, m2, MLEN) != 0) { @@ -88,14 +88,14 @@ tv(void) for (i = 0U; i < CLEN; i++) { c[i] ^= (i + 1U); if (crypto_aead_xchacha20poly1305_ietf_decrypt(m2, NULL, NULL, c, CLEN, - ad, ADLEN, nonce, firstkey) + ad, ADLEN, nonce, firstkey) == 0 || memcmp(m, m2, MLEN) == 0) { printf("message can be forged\n"); } c[i] ^= (i + 1U); } crypto_aead_xchacha20poly1305_ietf_encrypt(c, &found_clen, m, MLEN, - NULL, 0U, NULL, nonce, firstkey); + NULL, 0U, NULL, nonce, firstkey); if (found_clen != CLEN) { printf("clen is not properly set (adlen=0)\n"); } @@ -107,7 +107,7 @@ tv(void) } printf("\n"); if (crypto_aead_xchacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, CLEN, - NULL, 0U, nonce, firstkey) != 0) { + NULL, 0U, nonce, firstkey) != 0) { printf("crypto_aead_xchacha20poly1305_ietf_decrypt() failed (adlen=0)\n"); } if (m2len != MLEN) { @@ -139,7 +139,7 @@ tv(void) memcpy(c, m, MLEN); crypto_aead_xchacha20poly1305_ietf_encrypt(c, &found_clen, c, MLEN, - NULL, 0U, NULL, nonce, firstkey); + NULL, 0U, NULL, nonce, firstkey); if (found_clen != CLEN) { printf("clen is not properly set (adlen=0)\n"); } @@ -152,7 +152,7 @@ tv(void) printf("\n"); if (crypto_aead_xchacha20poly1305_ietf_decrypt(c, &m2len, NULL, c, CLEN, - NULL, 0U, nonce, firstkey) != 0) { + NULL, 0U, nonce, firstkey) != 0) { printf("crypto_aead_xchacha20poly1305_ietf_decrypt() failed (adlen=0)\n"); } if (m2len != MLEN) { @@ -164,7 +164,7 @@ tv(void) crypto_aead_xchacha20poly1305_ietf_keygen(key2); if (crypto_aead_xchacha20poly1305_ietf_decrypt(c, &m2len, NULL, c, CLEN, - NULL, 0U, nonce, key2) == 0) { + NULL, 0U, nonce, key2) == 0) { printf("crypto_aead_xchacha20poly1305_ietf_decrypt() with a wrong key should have failed\n"); } diff --git a/test/default/cmptest.h b/test/default/cmptest.h index 96a0ad76..d1b9bafc 100644 --- a/test/default/cmptest.h +++ b/test/default/cmptest.h @@ -30,7 +30,53 @@ int xmain(void); -#ifndef BROWSER_TESTS +#ifdef BENCHMARKS + +# include + +# ifndef ITERATIONS +# define ITERATIONS 128 +# endif + +static unsigned long long now(void) +{ + struct timeval tp; + unsigned long long now; + + if (gettimeofday(&tp, NULL) != 0) { + abort(); + } + now = ((unsigned long long) tp.tv_sec * 1000000ULL) + + (unsigned long long) tp.tv_usec; + + return now; +} + +int main(void) +{ + unsigned long long ts_start; + unsigned long long ts_end; + unsigned int i; + + if (sodium_init() != 0) { + return 99; + } + randombytes_set_implementation(&randombytes_salsa20_implementation); + ts_start = now(); + for (i = 0; i < ITERATIONS; i++) { + if (xmain() != 0) { + abort(); + } + } + ts_end = now(); + printf("%llu\n", 1000000ULL * (ts_end - ts_start) / ITERATIONS); + + return 0; +} + +#define printf(...) do { } while(0) + +#elif !defined(BROWSER_TESTS) FILE *fp_res; diff --git a/test/default/randombytes.c b/test/default/randombytes.c index 83de344f..551afaf4 100644 --- a/test/default/randombytes.c +++ b/test/default/randombytes.c @@ -39,12 +39,14 @@ randombytes_tests(void) unsigned int i; uint32_t n; -#ifdef __EMSCRIPTEN__ +#ifndef BENCHMARKS +# ifdef __EMSCRIPTEN__ assert(strcmp(randombytes_implementation_name(), "js") == 0); -#elif defined(__native_client__) +# elif defined(__native_client__) assert(strcmp(randombytes_implementation_name(), "nativeclient") == 0); -#else +# else assert(strcmp(randombytes_implementation_name(), "sysrandom") == 0); +# endif #endif randombytes(x, 1U); do { @@ -137,6 +139,7 @@ impl_tests(void) impl.uniform = randombytes_uniform_impl; randombytes_close(); randombytes_set_implementation(&impl); + assert(randombytes_uniform(1) == 1); assert(randombytes_uniform(v) == v); assert(randombytes_uniform(v) == v); assert(randombytes_uniform(v) == v); @@ -158,5 +161,7 @@ main(void) #endif printf("OK\n"); + randombytes_set_implementation(&randombytes_salsa20_implementation); + return 0; }