Copy DH key (if available) in addition to the bare parameters
[openssl.git] / ssl / s23_clnt.c
index 36f609bd097a37b27ae3031b7b3b62c83c245e2c..aaedf6a9bbcb4f42a7822be91123c530dab79679 100644 (file)
@@ -68,7 +68,7 @@ static int ssl23_client_hello(SSL *s);
 static int ssl23_get_server_hello(SSL *s);
 static SSL_METHOD *ssl23_get_client_method(int ver)
        {
-#ifndef NO_RSA
+#ifndef NO_SSL2
        if (ver == SSL2_VERSION)
                return(SSLv2_client_method());
 #endif
@@ -104,7 +104,7 @@ int ssl23_connect(SSL *s)
        int ret= -1;
        int new_state,state;
 
-       RAND_seed(&Time,sizeof(Time));
+       RAND_add(&Time,sizeof(Time),0);
        ERR_clear_error();
        clear_sys_error();
 
@@ -188,7 +188,7 @@ int ssl23_connect(SSL *s)
                        /* break; */
                        }
 
-               if (s->debug) BIO_flush(s->wbio);
+               if (s->debug) { (void)BIO_flush(s->wbio); }
 
                if ((cb != NULL) && (s->state != state))
                        {
@@ -224,7 +224,7 @@ static int ssl23_client_hello(SSL *s)
 #endif
 
                p=s->s3->client_random;
-               RAND_bytes(p,SSL3_RANDOM_SIZE);
+               RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE);
 
                /* Do the message type and length last */
                d= &(buf[2]);
@@ -285,7 +285,7 @@ static int ssl23_client_hello(SSL *s)
                        i=ch_len;
                s2n(i,d);
                memset(&(s->s3->client_random[0]),0,SSL3_RANDOM_SIZE);
-               RAND_bytes(&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i);
+               RAND_pseudo_bytes(&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i);
                memcpy(p,&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i);
                p+=i;
 
@@ -309,7 +309,7 @@ static int ssl23_get_server_hello(SSL *s)
        {
        char buf[8];
        unsigned char *p;
-       int i,ch_len;
+       int i;
        int n;
 
        n=ssl23_read_bytes(s,7);
@@ -322,12 +322,14 @@ static int ssl23_get_server_hello(SSL *s)
        if ((p[0] & 0x80) && (p[2] == SSL2_MT_SERVER_HELLO) &&
                (p[5] == 0x00) && (p[6] == 0x02))
                {
-#ifdef NO_RSA
+#ifdef NO_SSL2
+               SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_PROTOCOL);
                goto err;
 #else
                /* we are talking sslv2 */
                /* we need to clean up the SSLv3 setup and put in the
                 * sslv2 stuff. */
+               int ch_len;
 
                if (s->options & SSL_OP_NO_SSLv2)
                        {