a660e7ab67
Instead, add ssl_has_certificate to the ssl3_send_cert_verify check. If writing the empty Certificate does not complete synchronously (it almost always does due to the buffer BIO), but if the buffer boundary is at exactly the wrong place, write_message will need a retry but, having cleared cert_request, we never re-enter ssl3_send_client_certificate. This will later be moot when we've gotten rid of the buffer BIO, but this is cleaner anyway and is closer to the TLS 1.3 code. With this change, blindly taking away the BIO buffer in TLS (which is not what we want since we want the entire flight in one write but is a nice sanity check), only the SSL 3.0 no client certificate tests fail. They too rely on some writes completing synchronously due to SSL 3.0 sending a warning alert. There is a similar bug when tlsext_servername_callback returns SSL_TLSEXT_ERR_ALERT_WARNING. Those will be resolved after reworking the write path since it's a bit of a mess. Change-Id: I56b4df6163cae1df263cf36f0d93046d0375a5ac Reviewed-on: https://boringssl-review.googlesource.com/13052 Reviewed-by: David Benjamin <davidben@google.com> |
||
---|---|---|
.. | ||
test | ||
CMakeLists.txt | ||
custom_extensions.c | ||
d1_both.c | ||
d1_lib.c | ||
d1_pkt.c | ||
d1_srtp.c | ||
dtls_method.c | ||
dtls_record.c | ||
handshake_client.c | ||
handshake_server.c | ||
internal.h | ||
s3_both.c | ||
s3_enc.c | ||
s3_lib.c | ||
s3_pkt.c | ||
ssl_aead_ctx.c | ||
ssl_asn1.c | ||
ssl_buffer.c | ||
ssl_cert.c | ||
ssl_cipher.c | ||
ssl_ecdh.c | ||
ssl_file.c | ||
ssl_lib.c | ||
ssl_rsa.c | ||
ssl_session.c | ||
ssl_stat.c | ||
ssl_test.cc | ||
t1_enc.c | ||
t1_lib.c | ||
tls13_both.c | ||
tls13_client.c | ||
tls13_enc.c | ||
tls13_server.c | ||
tls_method.c | ||
tls_record.c |