diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-02-08 16:28:05 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-02-08 16:28:05 -0500 |
commit | 8cdd8b83539e57fb1891cce5b527dda335ab1452 (patch) | |
tree | 656a1bbdfe0c240a810333c803b3c2a718cf7a13 /src/or/relay.h | |
parent | fd1c2a13e7558086732288eb1a4f52aef2edeb2f (diff) | |
download | tor-8cdd8b83539e57fb1891cce5b527dda335ab1452.tar.gz tor-8cdd8b83539e57fb1891cce5b527dda335ab1452.zip |
Fix numerous problems with Tor's weak RNG.
We need a weak RNG in a couple of places where the strong RNG is
both needless and too slow. We had been using the weak RNG from our
platform's libc implementation, but that was problematic (because
many platforms have exceptionally horrible weak RNGs -- like, ones
that only return values between 0 and SHORT_MAX) and because we were
using it in a way that was wrong for LCG-based weak RNGs. (We were
counting on the low bits of the LCG output to be as random as the
high ones, which isn't true.)
This patch adds a separate type for a weak RNG, adds an LCG
implementation for it, and uses that exclusively where we had been
using the platform weak RNG.
Diffstat (limited to 'src/or/relay.h')
-rw-r--r-- | src/or/relay.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/or/relay.h b/src/or/relay.h index d8da9ea1bd..9e2d8af1e9 100644 --- a/src/or/relay.h +++ b/src/or/relay.h @@ -65,6 +65,8 @@ const uint8_t *decode_address_from_payload(tor_addr_t *addr_out, int payload_len); void circuit_clear_cell_queue(circuit_t *circ, channel_t *chan); +void stream_choice_seed_weak_rng(void); + #ifdef RELAY_PRIVATE int relay_crypt(circuit_t *circ, cell_t *cell, cell_direction_t cell_direction, crypt_path_t **layer_hint, char *recognized); |