Only accept a client certificate if the server requests
authorDr. Stephen Henson <steve@openssl.org>
Wed, 3 Sep 2003 23:35:54 +0000 (23:35 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 3 Sep 2003 23:35:54 +0000 (23:35 +0000)
one, as required by SSL/TLS specs.

CHANGES
ssl/s3_srvr.c

diff --git a/CHANGES b/CHANGES
index c494b9281fbf4e4b4c3754a8d8c76dcaaa559102..0d45a0a152e1db49f8bc423af19b2f77aaaafaf9 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,11 @@
 
  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
      extra data after the compression methods not only for TLS 1.0
      but also for SSL 3.0 (as required by the specification).
index bd9f7dc209dcb171cfc5a10cbac311d529c2a0f7..5eaab1daae22fd08e6f822182a28994d75090226 100644 (file)
@@ -420,10 +420,11 @@ int ssl3_accept(SSL *s)
                        if (ret == 2)
                                s->state = SSL3_ST_SR_CLNT_HELLO_C;
                        else {
-                               /* could be sent for a DH cert, even if we
-                                * have not asked for it :-) */
-                               ret=ssl3_get_client_certificate(s);
-                               if (ret <= 0) goto end;
+                               if (s->s3->tmp.cert_request)
+                                       {
+                                       ret=ssl3_get_client_certificate(s);
+                                       if (ret <= 0) goto end;
+                                       }
                                s->init_num=0;
                                s->state=SSL3_ST_SR_KEY_EXCH_A;
                        }