summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2014-01-27 19:27:31 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2014-01-27 19:27:36 +0100
commit31c6c503ca0347644e7b9322ed1efc1e21153296 (patch)
tree90d3394d85273aa3653c7837fcc4ccb225329afc
parentc1b52106e9aa7d96da2068a92d59332202d83c4c (diff)
downloadgnutls-31c6c503ca0347644e7b9322ed1efc1e21153296.tar.gz
reduce nonce overhead generation.
-rw-r--r--lib/nettle/rnd.c12
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