Only accept a client certificate if the server requests

one, as required by SSL/TLS specs.
This commit is contained in:
Dr. Stephen Henson 2003-09-03 23:47:34 +00:00
parent 510dc1ecd0
commit 14f3d7c5cc
2 changed files with 10 additions and 4 deletions

View File

@ -2515,6 +2515,11 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
Changes between 0.9.6j and 0.9.6k [xx XXX 2003] Changes between 0.9.6j and 0.9.6k [xx XXX 2003]
*) In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
if the server requested one: as stated in TLS 1.0 and SSL 3.0
specifications.
[Steve Henson]
*) In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional *) In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional
extra data after the compression methods not only for TLS 1.0 extra data after the compression methods not only for TLS 1.0
but also for SSL 3.0 (as required by the specification). but also for SSL 3.0 (as required by the specification).

View File

@ -456,10 +456,11 @@ int ssl3_accept(SSL *s)
if (ret == 2) if (ret == 2)
s->state = SSL3_ST_SR_CLNT_HELLO_C; s->state = SSL3_ST_SR_CLNT_HELLO_C;
else { else {
/* could be sent for a DH cert, even if we if (s->s3->tmp.cert_request)
* have not asked for it :-) */ {
ret=ssl3_get_client_certificate(s); ret=ssl3_get_client_certificate(s);
if (ret <= 0) goto end; if (ret <= 0) goto end;
}
s->init_num=0; s->init_num=0;
s->state=SSL3_ST_SR_KEY_EXCH_A; s->state=SSL3_ST_SR_KEY_EXCH_A;
} }