diff options
-rw-r--r-- | lib/handshake.c | 43 | ||||
-rw-r--r-- | lib/handshake.h | 2 | ||||
-rw-r--r-- | lib/sslv2_compat.c | 4 |
3 files changed, 24 insertions, 25 deletions
diff --git a/lib/handshake.c b/lib/handshake.c index 3e9da188d1..da0f41cc05 100644 --- a/lib/handshake.c +++ b/lib/handshake.c @@ -168,28 +168,31 @@ static int resume_copy_required_values(gnutls_session_t session) return 0; } -int _gnutls_set_client_random(gnutls_session_t session, uint8_t * rnd) +void _gnutls_set_client_random(gnutls_session_t session, uint8_t * rnd) +{ + memcpy(session->security_parameters.client_random, rnd, + GNUTLS_RANDOM_SIZE); +} + +static +int _gnutls_gen_client_random(gnutls_session_t session) { int ret; - if (rnd != NULL) { /* server */ - memcpy(session->security_parameters.client_random, rnd, + /* no random given, we generate. */ + if (session->internals.sc_random_set != 0) { + memcpy(session->security_parameters.client_random, + session->internals. + resumed_security_parameters.client_random, GNUTLS_RANDOM_SIZE); - } else { /* client */ - /* no random given, we generate. */ - if (session->internals.sc_random_set != 0) { - memcpy(session->security_parameters.client_random, - session->internals. - resumed_security_parameters.client_random, - GNUTLS_RANDOM_SIZE); - } else { - ret = gnutls_rnd(GNUTLS_RND_NONCE, - session->security_parameters.client_random, - GNUTLS_RANDOM_SIZE); - if (ret < 0) - return gnutls_assert_val(ret); - } + } else { + ret = gnutls_rnd(GNUTLS_RND_NONCE, + session->security_parameters.client_random, + GNUTLS_RANDOM_SIZE); + if (ret < 0) + return gnutls_assert_val(ret); } + return 0; } @@ -490,9 +493,7 @@ read_client_hello(gnutls_session_t session, uint8_t * data, /* Read client random value. */ DECR_LEN(len, GNUTLS_RANDOM_SIZE); - ret = _gnutls_set_client_random(session, &data[pos]); - if (ret < 0) - return gnutls_assert_val(ret); + _gnutls_set_client_random(session, &data[pos]); pos += GNUTLS_RANDOM_SIZE; @@ -1788,7 +1789,7 @@ static int send_client_hello(gnutls_session_t session, int again) if (!IS_DTLS(session) || session->internals.dtls.hsk_hello_verify_requests == 0) { - ret = _gnutls_set_client_random(session, NULL); + ret = _gnutls_gen_client_random(session); if (ret < 0) return gnutls_assert_val(ret); diff --git a/lib/handshake.h b/lib/handshake.h index b491ba1e51..79ac19eb7a 100644 --- a/lib/handshake.h +++ b/lib/handshake.h @@ -62,7 +62,7 @@ int _gnutls_recv_handshake(gnutls_session_t session, unsigned int optional, gnutls_buffer_st * buf); int _gnutls_generate_session_id(uint8_t * session_id, uint8_t * len); int _gnutls_gen_server_random(gnutls_session_t session, int version); -int _gnutls_set_client_random(gnutls_session_t session, uint8_t * rnd); +void _gnutls_set_client_random(gnutls_session_t session, uint8_t * rnd); int _gnutls_find_pk_algos_in_ciphersuites(uint8_t * data, int datalen); int _gnutls_server_select_suite(gnutls_session_t session, uint8_t * data, diff --git a/lib/sslv2_compat.c b/lib/sslv2_compat.c index 43890f3c94..882cbd628d 100644 --- a/lib/sslv2_compat.c +++ b/lib/sslv2_compat.c @@ -208,9 +208,7 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, memcpy(&rnd[GNUTLS_RANDOM_SIZE - challenge], &data[pos], challenge); - ret = _gnutls_set_client_random(session, rnd); - if (ret < 0) - return gnutls_assert_val(ret); + _gnutls_set_client_random(session, rnd); /* generate server random value */ ret = _gnutls_gen_server_random(session, neg_version); |