@ -10,36 +10,9 @@
BOOST_FIXTURE_TEST_SUITE ( random_tests , BasicTestingSetup )
static const ssize_t MAX_TRIES = 1024 ;
BOOST_AUTO_TEST_CASE ( osrandom_tests )
{
/* This does not measure the quality of randomness, but it does test that
* OSRandom ( ) overwrites all 32 bytes of the output given a maximum
* number of tries .
*/
uint8_t data [ NUM_OS_RANDOM_BYTES ] ;
bool overwritten [ NUM_OS_RANDOM_BYTES ] = { } ; /* Tracks which bytes have been overwritten at least once */
int num_overwritten ;
int tries = 0 ;
/* Loop until all bytes have been overwritten at least once */
do {
memset ( data , 0 , NUM_OS_RANDOM_BYTES ) ;
GetOSRand ( data ) ;
for ( int x = 0 ; x < NUM_OS_RANDOM_BYTES ; + + x ) {
overwritten [ x ] | = ( data [ x ] ! = 0 ) ;
}
num_overwritten = 0 ;
for ( int x = 0 ; x < NUM_OS_RANDOM_BYTES ; + + x ) {
if ( overwritten [ x ] ) {
num_overwritten + = 1 ;
}
}
tries + = 1 ;
} while ( num_overwritten < NUM_OS_RANDOM_BYTES & & tries < MAX_TRIES ) ;
BOOST_CHECK ( num_overwritten = = NUM_OS_RANDOM_BYTES ) ; /* If this failed, bailed out after too many tries */
BOOST_CHECK ( Random_SanityCheck ( ) ) ;
}
BOOST_AUTO_TEST_SUITE_END ( )