New Configure option no-<cipher> (rsa, idea, rc5, ...).
diff --git a/ssl/s3_clnt.c b/ssl/s3_clnt.c
index 603de04..327c4dd 100644
--- a/ssl/s3_clnt.c
+++ b/ssl/s3_clnt.c
@@ -828,7 +828,9 @@
 	int al,i,j,param_len,ok;
 	long n,alg;
 	EVP_PKEY *pkey=NULL;
+#ifndef NO_RSA
 	RSA *rsa=NULL;
+#endif
 #ifndef NO_DH
 	DH *dh=NULL;
 #endif
@@ -1287,10 +1289,13 @@
 
 static int ssl3_send_client_key_exchange(SSL *s)
 	{
-	unsigned char *p,*q,*d;
+	unsigned char *p,*d;
 	int n;
 	unsigned long l;
+#ifndef NO_RSA
+	unsigned char *q;
 	EVP_PKEY *pkey=NULL;
+#endif
 
 	if (s->state == SSL3_ST_CW_KEY_EXCH_A)
 		{
@@ -1440,7 +1445,9 @@
 	unsigned char *p,*d;
 	unsigned char data[MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH];
 	EVP_PKEY *pkey;
+#ifndef NO_RSA
 	int i=0;
+#endif
 	unsigned long n;
 #ifndef NO_DSA
 	int j;
@@ -1590,8 +1597,12 @@
 	long algs;
 	EVP_PKEY *pkey=NULL;
 	CERT *c;
+#ifndef NO_RSA
 	RSA *rsa;
+#endif
+#ifndef NO_DH
 	DH *dh;
+#endif
 
 	c=s->session->cert;
 
@@ -1607,8 +1618,12 @@
 	if (algs & (SSL_aDH|SSL_aNULL))
 		return(1);
 
+#ifndef NO_RSA
 	rsa=s->session->cert->rsa_tmp;
+#endif
+#ifndef NO_DH
 	dh=s->session->cert->dh_tmp;
+#endif
 
 	/* This is the passed certificate */
 
@@ -1631,15 +1646,16 @@
 		goto f_err;
 		}
 #endif
-
+#ifndef NO_RSA
 	if ((algs & SSL_kRSA) &&
 		!(has_bits(i,EVP_PK_RSA|EVP_PKT_ENC) || (rsa != NULL)))
 		{
 		SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_RSA_ENCRYPTING_CERT);
 		goto f_err;
 		}
+#endif
 #ifndef NO_DH
-	else if ((algs & SSL_kEDH) &&
+	if ((algs & SSL_kEDH) &&
 		!(has_bits(i,EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL)))
 		{
 		SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_KEY);