diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2014-01-27 19:27:31 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2014-01-27 19:27:36 +0100 |
commit | 31c6c503ca0347644e7b9322ed1efc1e21153296 (patch) | |
tree | 90d3394d85273aa3653c7837fcc4ccb225329afc | |
parent | c1b52106e9aa7d96da2068a92d59332202d83c4c (diff) | |
download | gnutls-31c6c503ca0347644e7b9322ed1efc1e21153296.tar.gz |
reduce nonce overhead generation.
-rw-r--r-- | lib/nettle/rnd.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/nettle/rnd.c b/lib/nettle/rnd.c index 9c07987c70..173f830d62 100644 --- a/lib/nettle/rnd.c +++ b/lib/nettle/rnd.c @@ -430,7 +430,13 @@ wrap_nettle_rnd(void *_ctx, int level, void *data, size_t datasize) int ret, reseed = 0; struct event_st event; - _rnd_get_event(&event); + if (level != GNUTLS_RND_NONCE) { + _rnd_get_event(&event); + } +#ifdef HAVE_GETPID + else + event.pid = getpid(); +#endif RND_LOCK; @@ -439,6 +445,10 @@ wrap_nettle_rnd(void *_ctx, int level, void *data, size_t datasize) memset(&device_last_read, 0, sizeof(device_last_read)); pid = event.pid; reseed = 1; + + /* now we need that as it was not executed before */ + if (level == GNUTLS_RND_NONCE) + _rnd_get_event(&event); } #endif |