Remove serverinfo checks.
[openssl.git] / ssl / s3_lib.c
index 36ff200137235ffb65a4e9ca9efbf9816a312eb7..bb1074c67af01e6407c01d487ff30400c9731aea 100644 (file)
@@ -162,7 +162,7 @@ const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT;
 #define SSL3_NUM_CIPHERS       (sizeof(ssl3_ciphers)/sizeof(SSL_CIPHER))
 
 /* list of available SSLv3 ciphers (sorted by id) */
-OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
+OPENSSL_GLOBAL const SSL_CIPHER ssl3_ciphers[]={
 
 /* The RSA ciphers */
 /* Cipher 01 */
@@ -3033,6 +3033,127 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
        256,
        },
 
+#ifndef OPENSSL_NO_CAMELLIA
+       { /* Cipher C072 */
+       1,
+       TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
+       TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
+       SSL_kECDHE,
+       SSL_aECDSA,
+       SSL_CAMELLIA128,
+       SSL_SHA256,
+       SSL_TLSV1_2,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
+       128,
+       128
+       },
+
+       { /* Cipher C073 */
+       1,
+       TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
+       TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
+       SSL_kECDHE,
+       SSL_aECDSA,
+       SSL_CAMELLIA256,
+       SSL_SHA384,
+       SSL_TLSV1_2,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
+       256,
+       256
+       },
+
+       { /* Cipher C074 */
+       1,
+       TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
+       TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
+       SSL_kECDHe,
+       SSL_aECDH,
+       SSL_CAMELLIA128,
+       SSL_SHA256,
+       SSL_TLSV1_2,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
+       128,
+       128
+       },
+
+       { /* Cipher C075 */
+       1,
+       TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
+       TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
+       SSL_kECDHe,
+       SSL_aECDH,
+       SSL_CAMELLIA256,
+       SSL_SHA384,
+       SSL_TLSV1_2,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
+       256,
+       256
+       },
+
+       { /* Cipher C076 */
+       1,
+       TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+       TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+       SSL_kECDHE,
+       SSL_aRSA,
+       SSL_CAMELLIA128,
+       SSL_SHA256,
+       SSL_TLSV1_2,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
+       128,
+       128
+       },
+
+       { /* Cipher C077 */
+       1,
+       TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
+       TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
+       SSL_kECDHE,
+       SSL_aRSA,
+       SSL_CAMELLIA256,
+       SSL_SHA384,
+       SSL_TLSV1_2,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
+       256,
+       256
+       },
+
+       { /* Cipher C078 */
+       1,
+       TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+       TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+       SSL_kECDHr,
+       SSL_aECDH,
+       SSL_CAMELLIA128,
+       SSL_SHA256,
+       SSL_TLSV1_2,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
+       128,
+       128
+       },
+
+       { /* Cipher C079 */
+       1,
+       TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,
+       TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,
+       SSL_kECDHr,
+       SSL_aECDH,
+       SSL_CAMELLIA256,
+       SSL_SHA384,
+       SSL_TLSV1_2,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
+       256,
+       256
+       },
+#endif  /* OPENSSL_NO_CAMELLIA */
 #endif /* OPENSSL_NO_ECDH */
 
 
@@ -3099,7 +3220,7 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
 /* end of list */
        };
 
-SSL3_ENC_METHOD SSLv3_enc_data={
+const SSL3_ENC_METHOD SSLv3_enc_data={
        ssl3_enc,
        n_ssl3_mac,
        ssl3_setup_key_block,
@@ -3223,10 +3344,6 @@ void ssl3_free(SSL *s)
 
 #ifndef OPENSSL_NO_SRP
        SSL_SRP_CTX_free(s);
-#endif
-#ifndef OPENSSL_NO_TLSEXT
-       if (s->s3->serverinfo_client_tlsext_custom_types != NULL)
-               OPENSSL_free(s->s3->serverinfo_client_tlsext_custom_types);
 #endif
        OPENSSL_cleanse(s->s3,sizeof *s->s3);
        OPENSSL_free(s->s3);
@@ -3272,12 +3389,6 @@ void ssl3_clear(SSL *s)
                }
 #endif
 #ifndef OPENSSL_NO_TLSEXT
-       if (s->s3->serverinfo_client_tlsext_custom_types != NULL)
-               {
-               OPENSSL_free(s->s3->serverinfo_client_tlsext_custom_types);
-               s->s3->serverinfo_client_tlsext_custom_types = NULL;
-               }
-       s->s3->serverinfo_client_tlsext_custom_types_count = 0;
 #ifndef OPENSSL_NO_EC
        s->s3->is_probably_safari = 0;
 #endif /* !OPENSSL_NO_EC */
@@ -3646,8 +3757,10 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
                        cipher = s->s3->tmp.new_cipher;
                        if (!cipher)
                                return 0;
-                       /* No certificate for unauthenticated ciphersuites */
-                       if (cipher->algorithm_auth & SSL_aNULL)
+                       /* No certificate for unauthenticated ciphersuites
+                        * or using SRP authentication
+                        */
+                       if (cipher->algorithm_auth & (SSL_aNULL|SSL_aSRP))
                                return 2;
                        cpk = ssl_get_server_send_pkey(s);
                        if (!cpk)
@@ -4357,8 +4470,13 @@ SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
                emask_k = cert->export_mask_k;
                emask_a = cert->export_mask_a;
 #ifndef OPENSSL_NO_SRP
-               mask_k=cert->mask_k | s->srp_ctx.srp_Mask;
-               emask_k=cert->export_mask_k | s->srp_ctx.srp_Mask;
+               if (s->srp_ctx.srp_Mask & SSL_kSRP)
+                       {
+                       mask_k |= SSL_kSRP;
+                       emask_k |= SSL_kSRP;
+                       mask_a |= SSL_aSRP;
+                       emask_a |= SSL_aSRP;
+                       }
 #endif
                        
 #ifdef KSSL_DEBUG