aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2015-05-07 00:04:48 +0100
committerDr. Stephen Henson <steve@openssl.org>2015-05-07 00:37:10 +0100
commitdab18ab596acb35eff2545643e25757e4f9cd777 (patch)
tree3381e1ce7cce177283936f5eae4913c769d322b8
parent45ebd7312874548904f3e438b39704d0134c7a1b (diff)
downloadopenssl-dab18ab596acb35eff2545643e25757e4f9cd777.tar.gz
Digest cached records if not sending a certificate.
If server requests a certificate, but the client doesn't send one, cache digested records. This is an optimisation and ensures the correct finished mac is used when extended master secret is used with client authentication. Reviewed-by: Tim Hudson <tjh@openssl.org>
-rw-r--r--ssl/s3_clnt.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/ssl/s3_clnt.c b/ssl/s3_clnt.c
index ea4503fbcb..86b7994ca4 100644
--- a/ssl/s3_clnt.c
+++ b/ssl/s3_clnt.c
@@ -3348,6 +3348,11 @@ int ssl3_send_client_certificate(SSL *s)
return (1);
} else {
s->s3->tmp.cert_req = 2;
+ if (s->s3->handshake_buffer && !ssl3_digest_cached_records(s)) {
+ ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
+ return 0;
+ }
}
}