Stop server from expecting Certificate message when not requested
authorMatt Caswell <matt@openssl.org>
Tue, 22 Nov 2016 16:54:28 +0000 (16:54 +0000)
committerMatt Caswell <matt@openssl.org>
Mon, 23 Jan 2017 14:04:44 +0000 (14:04 +0000)
In a non client-auth renegotiation where the original handshake *was*
client auth, then the server will expect the client to send a Certificate
message anyway resulting in a connection failure.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1982)

ssl/statem/statem.c

index f39a52946304ed5c5f1bc148ff7368ff24d5f56f..51a9266e42dfdc1dbd95a2302a56e809ed353bd3 100644 (file)
@@ -347,6 +347,8 @@ static int state_machine(SSL *s, int server)
                  */
                 s->ctx->stats.sess_accept_renegotiate++;
             }
+
+            s->s3->tmp.cert_request = 0;
         } else {
             s->ctx->stats.sess_connect++;
 
@@ -354,7 +356,6 @@ static int state_machine(SSL *s, int server)
             memset(s->s3->client_random, 0, sizeof(s->s3->client_random));
             s->hit = 0;
 
-            s->s3->tmp.cert_request = 0;
             s->s3->tmp.cert_req = 0;
 
             if (SSL_IS_DTLS(s)) {