summaryrefslogtreecommitdiff
path: root/lib/random.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2011-12-12 02:18:59 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2011-12-12 02:56:01 +0100
commitbd617810e4338294aa0c6b74da81274bae045f10 (patch)
treed938f496564dd1e2f20dc426a9128b74e4c9d8e9 /lib/random.c
parent09ec28b2d701d7b27a1a2171988b98ff08690257 (diff)
downloadgnutls-bd617810e4338294aa0c6b74da81274bae045f10.tar.gz
Optimizations in DH parameter generation.
The larger prime is find first and the big loop needs to find a smaller prime, increasing performance. The _gnutls_rnd() function is now inline and GNUTLS_RND_NONCE doesn't update random generator state.
Diffstat (limited to 'lib/random.c')
-rw-r--r--lib/random.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/lib/random.c b/lib/random.c
index 5088e6ac47..bfbb27de3d 100644
--- a/lib/random.c
+++ b/lib/random.c
@@ -27,14 +27,14 @@
#include <gnutls_errors.h>
#include <random.h>
-static void *rnd_ctx;
+void *gnutls_rnd_ctx;
int
_gnutls_rnd_init (void)
{
if (_gnutls_rnd_ops.init != NULL)
{
- if (_gnutls_rnd_ops.init (&rnd_ctx) < 0)
+ if (_gnutls_rnd_ops.init (&gnutls_rnd_ctx) < 0)
{
gnutls_assert ();
return GNUTLS_E_RANDOM_FAILED;
@@ -49,7 +49,7 @@ _gnutls_rnd_deinit (void)
{
if (_gnutls_rnd_ops.deinit != NULL)
{
- _gnutls_rnd_ops.deinit (rnd_ctx);
+ _gnutls_rnd_ops.deinit (gnutls_rnd_ctx);
}
return;
@@ -71,9 +71,5 @@ _gnutls_rnd_deinit (void)
int
gnutls_rnd (gnutls_rnd_level_t level, void *data, size_t len)
{
- if (len > 0)
- {
- return _gnutls_rnd_ops.rnd (rnd_ctx, level, data, len);
- }
- return 0;
+ return _gnutls_rnd(level, data, len);
}