diff options
author | Simon Josefsson <simon@josefsson.org> | 2005-08-30 09:29:29 +0000 |
---|---|---|
committer | Simon Josefsson <simon@josefsson.org> | 2005-08-30 09:29:29 +0000 |
commit | 712c706a2b84cac5a0e2543ab680228bc6141ba9 (patch) | |
tree | 33cfa4510c270f4d7516b42cefecc32175b3fc66 | |
parent | b76b7472a306c795dbd6a7bd64b636b1311bbfc7 (diff) | |
download | gnutls-712c706a2b84cac5a0e2543ab680228bc6141ba9.tar.gz |
Call gc directly instead of _gnutls_get_random.
-rw-r--r-- | lib/auth_rsa.c | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/lib/auth_rsa.c b/lib/auth_rsa.c index 662cbf6f4d..39d3cdf280 100644 --- a/lib/auth_rsa.c +++ b/lib/auth_rsa.c @@ -42,6 +42,7 @@ #include <gnutls_sig.h> #include <gnutls_x509.h> #include <gnutls_extra.h> +#include <gc.h> int _gnutls_gen_rsa_client_kx(gnutls_session_t, opaque **); int _gnutls_proc_rsa_client_kx(gnutls_session_t, opaque *, size_t); @@ -190,15 +191,6 @@ int _gnutls_get_private_rsa_params(gnutls_session_t session, return 0; } - - -#define RANDOMIZE_KEY(x, galloc, rand) x.size=TLS_MASTER_SIZE; x.data=galloc(x.size); \ - if (x.data==NULL) return GNUTLS_E_MEMORY_ERROR; \ - if (_gnutls_get_random( x.data, x.size, rand) < 0) { \ - gnutls_assert(); \ - return GNUTLS_E_MEMORY_ERROR; \ - } - int _gnutls_proc_rsa_client_kx(gnutls_session_t session, opaque * data, size_t _data_size) { @@ -264,10 +256,20 @@ int _gnutls_proc_rsa_client_kx(gnutls_session_t session, opaque * data, } if (randomize_key != 0) { - /* we do not need strong random numbers here. - */ - RANDOMIZE_KEY(session->key->key, - gnutls_malloc, GNUTLS_WEAK_RANDOM); + session->key->key.size = TLS_MASTER_SIZE; + session->key->key.data = gnutls_malloc (session->key->key.size); + if (session->key->key.data == NULL) + { + gnutls_assert(); + return GNUTLS_E_MEMORY_ERROR; + } + + /* we do not need strong random numbers here. + */ + if (gc_nonce(session->key->key.data, session->key->key.size) != GC_OK) { + gnutls_assert(); + return GNUTLS_E_RANDOM_FAILED; + } } else { session->key->key.data = plaintext.data; @@ -303,8 +305,21 @@ int _gnutls_gen_rsa_client_kx(gnutls_session_t session, opaque ** data) gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - RANDOMIZE_KEY(session->key->key, gnutls_secure_malloc, - GNUTLS_STRONG_RANDOM); + + session->key->key.size = TLS_MASTER_SIZE; + session->key->key.data = gnutls_secure_malloc(session->key->key.size); + + if (session->key->key.data == NULL) + { + gnutls_assert(); + return GNUTLS_E_MEMORY_ERROR; + } + + if (gc_pseudo_random(session->key->key.data, + session->key->key.size) != GC_OK) { + gnutls_assert(); + return GNUTLS_E_RANDOM_FAILED; + } ver = _gnutls_get_adv_version(session); |