New Configure option no-<cipher> (rsa, idea, rc5, ...).
[openssl.git] / ssl / s23_srvr.c
index 8dc0a0608fce8528f686b16575636c759eb5d48b..e74e019f1ddd32e860745c818f62e7078b9fb19c 100644 (file)
  */
 
 #include <stdio.h>
-#include "buffer.h"
-#include "rand.h"
-#include "objects.h"
-#include "evp.h"
+#include <openssl/buffer.h>
+#include <openssl/rand.h>
+#include <openssl/objects.h>
+#include <openssl/evp.h>
 #include "ssl_locl.h"
 
-#define BREAK break
-
-#ifndef NOPROTO
 static SSL_METHOD *ssl23_get_server_method(int ver);
 int ssl23_get_client_hello(SSL *s);
-#else
-static SSL_METHOD *ssl23_get_server_method();
-int ssl23_get_client_hello();
-#endif
-
 static SSL_METHOD *ssl23_get_server_method(int ver)
        {
+#ifndef NO_RSA
        if (ver == SSL2_VERSION)
                return(SSLv2_server_method());
-       else if (ver == SSL3_VERSION)
+#endif
+       if (ver == SSL3_VERSION)
                return(SSLv3_server_method());
        else if (ver == TLS1_VERSION)
                return(TLSv1_server_method());
@@ -92,11 +86,11 @@ SSL_METHOD *SSLv23_server_method(void)
 
        if (init)
                {
-               init=0;
                memcpy((char *)&SSLv23_server_data,
                        (char *)sslv23_base_method(),sizeof(SSL_METHOD));
                SSLv23_server_data.ssl_accept=ssl23_accept;
                SSLv23_server_data.get_ssl_method=ssl23_get_server_method;
+               init=0;
                }
        return(&SSLv23_server_data);
        }
@@ -412,6 +406,9 @@ next_bit:
 
        if (type == 1)
                {
+#ifdef NO_RSA
+               goto err;
+#else
                /* we are talking sslv2 */
                /* we need to clean up the SSLv3/TLSv1 setup and put in the
                 * sslv2 stuff. */
@@ -450,6 +447,7 @@ next_bit:
 
                s->method=SSLv2_server_method();
                s->handshake_func=s->method->ssl_accept;
+#endif
                }
 
        if ((type == 2) || (type == 3))