]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
dtls: Send consistent a client_random.
authorJonathan Bastien-Filiatrault <joe@x2a.org>
Mon, 6 Sep 2010 05:18:54 +0000 (01:18 -0400)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 17 Feb 2011 21:51:50 +0000 (22:51 +0100)
This is necessary when challenged by HelloVerifiyRequest as we MUST
send the same client parameters.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
lib/gnutls_handshake.c

index f5d3794b1e9422aceba611f776e6412e5b5a4d36..81bb263405710b2644d59bf9d01956653581e7a2 100644 (file)
@@ -2172,10 +2172,17 @@ _gnutls_send_client_hello (gnutls_session_t session, int again)
 
       /* Generate random data 
        */
-      _gnutls_tls_create_random (rnd);
-      _gnutls_set_client_random (session, rnd);
+      if (!_gnutls_is_dtls (session)
+         || session->internals.dtls.hsk_hello_verify_requests == 0)
+       {
+         _gnutls_tls_create_random (rnd);
+         _gnutls_set_client_random (session, rnd);
+
+         memcpy (&data[pos], rnd, GNUTLS_RANDOM_SIZE);
+       }
+      else
+       memcpy (&data[pos], session->security_parameters.client_random, GNUTLS_RANDOM_SIZE);
 
-      memcpy (&data[pos], rnd, GNUTLS_RANDOM_SIZE);
       pos += GNUTLS_RANDOM_SIZE;
 
       /* Copy the Session ID