emtpy fragments are not necessary for SSL_eNULL
[openssl.git] / ssl / ssl_ciph.c
index a196d5e574eb15a4d2c3f47835a2829890ad9796..a1cef720829676959eba3300b0781fbc1d103be3 100644 (file)
@@ -68,7 +68,9 @@
 #define SSL_ENC_IDEA_IDX       4
 #define SSL_ENC_eFZA_IDX       5
 #define SSL_ENC_NULL_IDX       6
-#define SSL_ENC_NUM_IDX                7
+#define SSL_ENC_AES128_IDX     7
+#define SSL_ENC_AES256_IDX     8
+#define SSL_ENC_NUM_IDX                9
 
 static const EVP_CIPHER *ssl_cipher_methods[SSL_ENC_NUM_IDX]={
        NULL,NULL,NULL,NULL,NULL,NULL,
@@ -98,7 +100,7 @@ typedef struct cipher_order_st
        } CIPHER_ORDER;
 
 static const SSL_CIPHER cipher_aliases[]={
-       /* Don't include eNULL unless specifically enabled */
+       /* Don't include eNULL unless specifically enabled. */
        {0,SSL_TXT_ALL, 0,SSL_ALL & ~SSL_eNULL, SSL_ALL ,0,0,0,SSL_ALL,SSL_ALL}, /* must be first */
         {0,SSL_TXT_kKRB5,0,SSL_kKRB5,0,0,0,0,SSL_MKEY_MASK,0},  /* VRS Kerberos5 */
        {0,SSL_TXT_kRSA,0,SSL_kRSA,  0,0,0,0,SSL_MKEY_MASK,0},
@@ -124,6 +126,7 @@ static const SSL_CIPHER cipher_aliases[]={
        {0,SSL_TXT_IDEA,0,SSL_IDEA,  0,0,0,0,SSL_ENC_MASK,0},
        {0,SSL_TXT_eNULL,0,SSL_eNULL,0,0,0,0,SSL_ENC_MASK,0},
        {0,SSL_TXT_eFZA,0,SSL_eFZA,  0,0,0,0,SSL_ENC_MASK,0},
+       {0,SSL_TXT_AES, 0,SSL_AES,   0,0,0,0,SSL_ENC_MASK,0},
 
        {0,SSL_TXT_MD5, 0,SSL_MD5,   0,0,0,0,SSL_MAC_MASK,0},
        {0,SSL_TXT_SHA1,0,SSL_SHA1,  0,0,0,0,SSL_MAC_MASK,0},
@@ -163,6 +166,10 @@ static void load_ciphers(void)
                EVP_get_cipherbyname(SN_rc2_cbc);
        ssl_cipher_methods[SSL_ENC_IDEA_IDX]= 
                EVP_get_cipherbyname(SN_idea_cbc);
+       ssl_cipher_methods[SSL_ENC_AES128_IDX]=
+         EVP_get_cipherbyname(SN_aes_128_cbc);
+       ssl_cipher_methods[SSL_ENC_AES256_IDX]=
+         EVP_get_cipherbyname(SN_aes_256_cbc);
 
        ssl_digest_methods[SSL_MD_MD5_IDX]=
                EVP_get_digestbyname(SN_md5);
@@ -223,6 +230,14 @@ int ssl_cipher_get_evp(SSL_SESSION *s, const EVP_CIPHER **enc,
        case SSL_eNULL:
                i=SSL_ENC_NULL_IDX;
                break;
+       case SSL_AES:
+               switch(c->alg_bits)
+                       {
+               case 128: i=SSL_ENC_AES128_IDX; break;
+               case 256: i=SSL_ENC_AES256_IDX; break;
+               default: i=-1; break;
+                       }
+               break;
        default:
                i= -1;
                break;
@@ -285,16 +300,16 @@ static unsigned long ssl_cipher_get_disabled(void)
        unsigned long mask;
 
        mask = SSL_kFZA;
-#ifdef NO_RSA
+#ifdef OPENSSL_NO_RSA
        mask |= SSL_aRSA|SSL_kRSA;
 #endif
-#ifdef NO_DSA
+#ifdef OPENSSL_NO_DSA
        mask |= SSL_aDSS;
 #endif
-#ifdef NO_DH
+#ifdef OPENSSL_NO_DH
        mask |= SSL_kDHr|SSL_kDHd|SSL_kEDH|SSL_aDH;
 #endif
-#ifdef NO_KRB5
+#ifdef OPENSSL_NO_KRB5
        mask |= SSL_kKRB5|SSL_aKRB5;
 #endif
 
@@ -308,6 +323,7 @@ static unsigned long ssl_cipher_get_disabled(void)
        mask |= (ssl_cipher_methods[SSL_ENC_RC2_IDX ] == NULL) ? SSL_RC2 :0;
        mask |= (ssl_cipher_methods[SSL_ENC_IDEA_IDX] == NULL) ? SSL_IDEA:0;
        mask |= (ssl_cipher_methods[SSL_ENC_eFZA_IDX] == NULL) ? SSL_eFZA:0;
+       mask |= (ssl_cipher_methods[SSL_ENC_AES128_IDX] == NULL) ? SSL_AES:0;
 
        mask |= (ssl_digest_methods[SSL_MD_MD5_IDX ] == NULL) ? SSL_MD5 :0;
        mask |= (ssl_digest_methods[SSL_MD_SHA1_IDX] == NULL) ? SSL_SHA1:0;
@@ -979,6 +995,15 @@ char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len)
        case SSL_eNULL:
                enc="None";
                break;
+       case SSL_AES:
+               switch(cipher->strength_bits)
+                       {
+               case 128: enc="AES(128)"; break;
+               case 192: enc="AES(192)"; break;
+               case 256: enc="AES(256)"; break;
+               default: enc="AES(?""?""?)"; break;
+                       }
+               break;
        default:
                enc="unknown";
                break;