#include "../src/random.c" #include "../src/testing.h" static int test_urandom_bytes(void) { int rc = -1; test_start("urandom_bytes()"); { testing("we get to pick the size that comes out"); const size_t LEN = 256; uint8_t arr[256 /* LEN */] = { 0 }; for (size_t n = 0; n < LEN; n++) { if (urandom_bytes(n, &arr)) { logerr("urandom_bytes()"); goto out; } for (size_t i = n; i < LEN; i++) { assert(arr[i] == 0); } } test_ok(); } { testing("we always get a new value as a result"); const size_t LEN = 64; uint8_t arr1[64 /* LEN */] = { 0 }; uint8_t arr2[64 /* LEN */] = { 0 }; if (urandom_bytes(LEN, &arr1)) { logerr("urandom_bytes()"); goto out; } const size_t attempts = 10; for (size_t n = 0; n < attempts; n++) { if (urandom_bytes(LEN, &arr2)) { logerr("urandom_bytes()"); goto out; } assert(memcmp(arr1, arr2, LEN) != 0); } test_ok(); } rc = 0; out: return rc; } int main(void) { int rc = EXIT_FAILURE; if (test_urandom_bytes()) { logerr("test_urandom_bytes()"); goto out; } rc = EXIT_SUCCESS; out: return rc; }