summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_ciphers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_ciphers.c')
-rw-r--r--src/lib/libssl/ssl_ciphers.c25
1 files changed, 7 insertions, 18 deletions
diff --git a/src/lib/libssl/ssl_ciphers.c b/src/lib/libssl/ssl_ciphers.c
index 399e274ad4..85c60b1abb 100644
--- a/src/lib/libssl/ssl_ciphers.c
+++ b/src/lib/libssl/ssl_ciphers.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_ciphers.c,v 1.9 2020/09/15 15:28:38 schwarze Exp $ */ 1/* $OpenBSD: ssl_ciphers.c,v 1.10 2021/02/25 17:06:05 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2015-2017 Doug Hogan <doug@openbsd.org> 3 * Copyright (c) 2015-2017 Doug Hogan <doug@openbsd.org>
4 * Copyright (c) 2015-2018, 2020 Joel Sing <jsing@openbsd.org> 4 * Copyright (c) 2015-2018, 2020 Joel Sing <jsing@openbsd.org>
@@ -36,28 +36,17 @@ ssl_cipher_in_list(STACK_OF(SSL_CIPHER) *ciphers, const SSL_CIPHER *cipher)
36} 36}
37 37
38int 38int
39ssl_cipher_allowed_in_version_range(const SSL_CIPHER *cipher, uint16_t min_ver, 39ssl_cipher_allowed_in_tls_version_range(const SSL_CIPHER *cipher, uint16_t min_ver,
40 uint16_t max_ver) 40 uint16_t max_ver)
41{ 41{
42 /* XXX: We only support DTLSv1 which is effectively TLSv1.1 */
43 if (min_ver == DTLS1_VERSION || max_ver == DTLS1_VERSION)
44 min_ver = max_ver = TLS1_1_VERSION;
45
46 switch(cipher->algorithm_ssl) { 42 switch(cipher->algorithm_ssl) {
47 case SSL_SSLV3: 43 case SSL_SSLV3:
48 if (min_ver <= TLS1_2_VERSION) 44 return (min_ver <= TLS1_2_VERSION);
49 return 1;
50 break;
51 case SSL_TLSV1_2: 45 case SSL_TLSV1_2:
52 if (min_ver <= TLS1_2_VERSION && TLS1_2_VERSION <= max_ver) 46 return (min_ver <= TLS1_2_VERSION && TLS1_2_VERSION <= max_ver);
53 return 1;
54 break;
55 case SSL_TLSV1_3: 47 case SSL_TLSV1_3:
56 if (min_ver <= TLS1_3_VERSION && TLS1_3_VERSION <= max_ver) 48 return (min_ver <= TLS1_3_VERSION && TLS1_3_VERSION <= max_ver);
57 return 1;
58 break;
59 } 49 }
60
61 return 0; 50 return 0;
62} 51}
63 52
@@ -72,13 +61,13 @@ ssl_cipher_list_to_bytes(SSL *s, STACK_OF(SSL_CIPHER) *ciphers, CBB *cbb)
72 if (ciphers == NULL) 61 if (ciphers == NULL)
73 return 0; 62 return 0;
74 63
75 if (!ssl_supported_version_range(s, &min_vers, &max_vers)) 64 if (!ssl_supported_tls_version_range(s, &min_vers, &max_vers))
76 return 0; 65 return 0;
77 66
78 for (i = 0; i < sk_SSL_CIPHER_num(ciphers); i++) { 67 for (i = 0; i < sk_SSL_CIPHER_num(ciphers); i++) {
79 if ((cipher = sk_SSL_CIPHER_value(ciphers, i)) == NULL) 68 if ((cipher = sk_SSL_CIPHER_value(ciphers, i)) == NULL)
80 return 0; 69 return 0;
81 if (!ssl_cipher_allowed_in_version_range(cipher, min_vers, 70 if (!ssl_cipher_allowed_in_tls_version_range(cipher, min_vers,
82 max_vers)) 71 max_vers))
83 continue; 72 continue;
84 if (!CBB_add_u16(cbb, ssl3_cipher_get_value(cipher))) 73 if (!CBB_add_u16(cbb, ssl3_cipher_get_value(cipher)))