diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-06-28 11:39:49 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-06-28 11:39:49 -0400 |
commit | 48ebd9bf76a0e5ff60b88f8906919016de82e819 (patch) | |
tree | 76047a0a4227be696a54987d7d6f4430ec4597e3 /src/common/util.c | |
parent | aa3edfd2053bb418907f204e171ae8f7e78c30eb (diff) | |
download | tor-48ebd9bf76a0e5ff60b88f8906919016de82e819.tar.gz tor-48ebd9bf76a0e5ff60b88f8906919016de82e819.zip |
Move weakrng into lib/intmath
Diffstat (limited to 'src/common/util.c')
-rw-r--r-- | src/common/util.c | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/src/common/util.c b/src/common/util.c index 4a26998c19..304101ec0e 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -460,48 +460,6 @@ load_windows_system_library(const TCHAR *library_name) } #endif /* defined(_WIN32) */ -/** Initialize the insecure RNG <b>rng</b> from a seed value <b>seed</b>. */ -void -tor_init_weak_random(tor_weak_rng_t *rng, unsigned seed) -{ - rng->state = (uint32_t)(seed & 0x7fffffff); -} - -/** Return a randomly chosen value in the range 0..TOR_WEAK_RANDOM_MAX based - * on the RNG state of <b>rng</b>. This entropy will not be cryptographically - * strong; do not rely on it for anything an adversary should not be able to - * predict. */ -int32_t -tor_weak_random(tor_weak_rng_t *rng) -{ - /* Here's a linear congruential generator. OpenBSD and glibc use these - * parameters; they aren't too bad, and should have maximal period over the - * range 0..INT32_MAX. We don't want to use the platform rand() or random(), - * since some platforms have bad weak RNGs that only return values in the - * range 0..INT16_MAX, which just isn't enough. */ - rng->state = (rng->state * 1103515245 + 12345) & 0x7fffffff; - return (int32_t) rng->state; -} - -/** Return a random number in the range [0 , <b>top</b>). {That is, the range - * of integers i such that 0 <= i < top.} Chooses uniformly. Requires that - * top is greater than 0. This randomness is not cryptographically strong; do - * not rely on it for anything an adversary should not be able to predict. */ -int32_t -tor_weak_random_range(tor_weak_rng_t *rng, int32_t top) -{ - /* We don't want to just do tor_weak_random() % top, since random() is often - * implemented with an LCG whose modulus is a power of 2, and those are - * cyclic in their low-order bits. */ - int divisor, result; - tor_assert(top > 0); - divisor = TOR_WEAK_RANDOM_MAX / top; - do { - result = (int32_t)(tor_weak_random(rng) / divisor); - } while (result >= top); - return result; -} - /** Cast a given double value to a int64_t. Return 0 if number is NaN. * Returns either INT64_MIN or INT64_MAX if number is outside of the int64_t * range. */ |