Parcourir la source

use client version when eliminating TLS v1.2 ciphersuites in client hello

Dr. Stephen Henson il y a 12 ans
Parent
commit
6dd547398a
2 fichiers modifiés avec 4 ajouts et 1 suppressions
  1. 1 1
      ssl/ssl_lib.c
  2. 3 0
      ssl/tls1.h

+ 1 - 1
ssl/ssl_lib.c

@@ -1381,7 +1381,7 @@ int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p,
 		c=sk_SSL_CIPHER_value(sk,i);
 		/* Skip TLS v1.2 only ciphersuites if lower than v1.2 */
 		if ((c->algorithm_ssl & SSL_TLSV1_2) && 
-			(TLS1_get_version(s) < TLS1_2_VERSION))
+			(TLS1_get_client_version(s) < TLS1_2_VERSION))
 			continue;
 #ifndef OPENSSL_NO_KRB5
 		if (((c->algorithm_mkey & SSL_kKRB5) || (c->algorithm_auth & SSL_aKRB5)) &&

+ 3 - 0
ssl/tls1.h

@@ -174,6 +174,9 @@ extern "C" {
 #define TLS1_get_version(s) \
 		((s->version >> 8) == TLS1_VERSION_MAJOR ? s->version : 0)
 
+#define TLS1_get_client_version(s) \
+		((s->client_version >> 8) == TLS1_VERSION_MAJOR ? s->client_version : 0)
+
 #define TLS1_AD_DECRYPTION_FAILED	21
 #define TLS1_AD_RECORD_OVERFLOW		22
 #define TLS1_AD_UNKNOWN_CA		48	/* fatal */