Latest update
This commit is contained in:
@@ -1095,6 +1095,7 @@ WORK_STATE ossl_statem_client_post_process_message(SSL *s, WORK_STATE wst)
|
||||
ERR_R_INTERNAL_ERROR);
|
||||
return WORK_ERROR;
|
||||
|
||||
case TLS_ST_CR_CERT_VRFY:
|
||||
case TLS_ST_CR_CERT_REQ:
|
||||
return tls_prepare_client_certificate(s, wst);
|
||||
}
|
||||
@@ -2563,6 +2564,17 @@ MSG_PROCESS_RETURN tls_process_certificate_request(SSL *s, PACKET *pkt)
|
||||
/* we should setup a certificate to return.... */
|
||||
s->s3->tmp.cert_req = 1;
|
||||
|
||||
/*
|
||||
* In TLSv1.3 we don't prepare the client certificate yet. We wait until
|
||||
* after the CertificateVerify message has been received. This is because
|
||||
* in TLSv1.3 the CertificateRequest arrives before the Certificate message
|
||||
* but in TLSv1.2 it is the other way around. We want to make sure that
|
||||
* SSL_get_peer_certificate() returns something sensible in
|
||||
* client_cert_cb.
|
||||
*/
|
||||
if (SSL_IS_TLS13(s) && s->post_handshake_auth != SSL_PHA_REQUESTED)
|
||||
return MSG_PROCESS_CONTINUE_READING;
|
||||
|
||||
return MSG_PROCESS_CONTINUE_PROCESSING;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user