summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/handshake.c43
-rw-r--r--lib/handshake.h2
-rw-r--r--lib/sslv2_compat.c4
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);