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:09:10 +0000 (14:09 +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/1983)

ssl/statem/statem.c

index f4895f41ac5693d8b94b82b1d4bd71f280736063..512f1e0941ef87204884e648b66ebaf6e00e4207 100644 (file)
@@ -361,6 +361,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++;
 
@@ -368,7 +370,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)) {