disable AES ciphersuites unless explicitly requested
[openssl.git] / ssl / s2_lib.c
index 40ca3779bf1e600d93dc1e785eeb0bc700b11374..bce2b4e83f2e6b5c426219be6fed8c02580791d8 100644 (file)
@@ -62,6 +62,7 @@
 #include <openssl/rsa.h>
 #include <openssl/objects.h>
 #include <openssl/evp.h>
+#include <openssl/md5.h>
 
 static long ssl2_default_timeout(void );
 const char *ssl2_version_str="SSLv2" OPENSSL_VERSION_PTEXT;
@@ -329,7 +330,7 @@ void ssl2_clear(SSL *s)
        s->packet_length=0;
        }
 
-long ssl2_ctrl(SSL *s, int cmd, long larg, char *parg)
+long ssl2_ctrl(SSL *s, int cmd, long larg, void *parg)
        {
        int ret=0;
 
@@ -349,7 +350,7 @@ long ssl2_callback_ctrl(SSL *s, int cmd, void (*fp)())
        return(0);
        }
 
-long ssl2_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, char *parg)
+long ssl2_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
        {
        return(0);
        }
@@ -423,20 +424,21 @@ void ssl2_generate_key_material(SSL *s)
        c = os_toascii['0']; /* Must be an ASCII '0', not EBCDIC '0',
                                see SSLv2 docu */
 #endif
-
+       EVP_MD_CTX_init(&ctx);
        km=s->s2->key_material;
        for (i=0; i<s->s2->key_material_length; i+=MD5_DIGEST_LENGTH)
                {
-               EVP_DigestInit(&ctx,EVP_md5());
+               EVP_DigestInit_ex(&ctx,EVP_md5(), NULL);
 
                EVP_DigestUpdate(&ctx,s->session->master_key,s->session->master_key_length);
                EVP_DigestUpdate(&ctx,&c,1);
                c++;
                EVP_DigestUpdate(&ctx,s->s2->challenge,s->s2->challenge_length);
                EVP_DigestUpdate(&ctx,s->s2->conn_id,s->s2->conn_id_length);
-               EVP_DigestFinal(&ctx,km,NULL);
+               EVP_DigestFinal_ex(&ctx,km,NULL);
                km+=MD5_DIGEST_LENGTH;
                }
+       EVP_MD_CTX_cleanup(&ctx);
        }
 
 void ssl2_return_error(SSL *s, int err)
@@ -468,10 +470,14 @@ void ssl2_write_error(SSL *s)
 
        if (i < 0)
                s->error=error;
-       else if (i != s->error)
+       else
+               {
                s->error=error-i;
-       /* else
-               s->error=0; */
+
+               if (s->error == 0)
+                       if (s->msg_callback)
+                               s->msg_callback(1, s->version, 0, buf, 3, s, s->msg_callback_arg); /* ERROR */
+               }
        }
 
 int ssl2_shutdown(SSL *s)