diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-12-12 02:18:59 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-12-12 02:56:01 +0100 |
commit | bd617810e4338294aa0c6b74da81274bae045f10 (patch) | |
tree | d938f496564dd1e2f20dc426a9128b74e4c9d8e9 /lib/random.c | |
parent | 09ec28b2d701d7b27a1a2171988b98ff08690257 (diff) | |
download | gnutls-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.c | 12 |
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); } |