From: Christian Grothoff Date: Wed, 23 Nov 2011 20:03:58 +0000 (+0000) Subject: LRN: Fix the use of SRANDOM X-Git-Tag: initial-import-from-subversion-38251~15828 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=55ac5056bd7f3997f67bc7a478f3e1d01ffb0e52;p=oweals%2Fgnunet.git LRN: Fix the use of SRANDOM --- diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h index f97b351c9..53137c179 100644 --- a/src/include/gnunet_crypto_lib.h +++ b/src/include/gnunet_crypto_lib.h @@ -222,6 +222,14 @@ struct GNUNET_CRYPTO_AuthKey /* **************** Functions and Macros ************* */ +/** + * Seed a weak random generator. Only GNUNET_CRYPTO_QUALITY_WEAK-mode generator + * can be seeded. + * + * @param seed the seed to use + */ +void +GNUNET_CRYPTO_seed_weak_random (int32_t seed); /** * Compute the CRC32 checksum for the first len diff --git a/src/util/crypto_random.c b/src/util/crypto_random.c index 9fc14863c..a1485029e 100644 --- a/src/util/crypto_random.c +++ b/src/util/crypto_random.c @@ -74,6 +74,17 @@ weak_random () return ((double) RANDOM () / RAND_MAX); } +/** + * Seed a weak random generator. Only GNUNET_CRYPTO_QUALITY_WEAK-mode generator + * can be seeded. + * + * @param seed the seed to use + */ +void +GNUNET_CRYPTO_seed_weak_random (int32_t seed) +{ + SRANDOM (seed); +} /** * Produce a random value. @@ -302,8 +313,8 @@ void __attribute__ ((constructor)) GNUNET_CRYPTO_random_init () #endif gcry_set_progress_handler (&entropy_generator, NULL); atexit (&killfind); - SRANDOM (time (NULL) ^ - GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_NONCE, UINT32_MAX)); + GNUNET_CRYPTO_seed_weak_random (time (NULL) ^ + GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_NONCE, UINT32_MAX)); } diff --git a/src/util/test_container_bloomfilter.c b/src/util/test_container_bloomfilter.c index c14adb075..aad6e99a4 100644 --- a/src/util/test_container_bloomfilter.c +++ b/src/util/test_container_bloomfilter.c @@ -68,7 +68,7 @@ main (int argc, char *argv[]) struct stat sbuf; GNUNET_log_setup ("test-container-bloomfilter", "WARNING", NULL); - SRANDOM (1); + GNUNET_CRYPTO_seed_weak_random (1); if (0 == stat (TESTFILE, &sbuf)) if (0 != UNLINK (TESTFILE)) GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "unlink", TESTFILE); @@ -79,7 +79,7 @@ main (int argc, char *argv[]) nextHC (&tmp); GNUNET_CONTAINER_bloomfilter_add (bf, &tmp); } - SRANDOM (1); + GNUNET_CRYPTO_seed_weak_random (1); ok1 = 0; for (i = 0; i < 200; i++) { @@ -106,7 +106,7 @@ main (int argc, char *argv[]) bfi = GNUNET_CONTAINER_bloomfilter_init (buf, SIZE, K); GNUNET_assert (bfi != NULL); - SRANDOM (1); + GNUNET_CRYPTO_seed_weak_random (1); ok1 = 0; ok2 = 0; for (i = 0; i < 200; i++) @@ -134,7 +134,7 @@ main (int argc, char *argv[]) return -1; } - SRANDOM (1); + GNUNET_CRYPTO_seed_weak_random (1); for (i = 0; i < 100; i++) { nextHC (&tmp); @@ -142,7 +142,7 @@ main (int argc, char *argv[]) GNUNET_CONTAINER_bloomfilter_remove (bfi, &tmp); } - SRANDOM (1); + GNUNET_CRYPTO_seed_weak_random (1); ok1 = 0; ok2 = 0; @@ -174,7 +174,7 @@ main (int argc, char *argv[]) return -1; } - SRANDOM (3); + GNUNET_CRYPTO_seed_weak_random (3); GNUNET_CONTAINER_bloomfilter_clear (bf); falseok = 0; @@ -198,14 +198,14 @@ main (int argc, char *argv[]) return -1; } - SRANDOM (2); + GNUNET_CRYPTO_seed_weak_random (2); i = 20; GNUNET_CONTAINER_bloomfilter_resize (bfi, &add_iterator, &i, SIZE * 2, K); - SRANDOM (2); + GNUNET_CRYPTO_seed_weak_random (2); i = 20; GNUNET_CONTAINER_bloomfilter_resize (bf, &add_iterator, &i, SIZE * 2, K); - SRANDOM (2); + GNUNET_CRYPTO_seed_weak_random (2); ok1 = 0; ok2 = 0;