diff options
| author | jsing <> | 2020-05-31 18:03:32 +0000 |
|---|---|---|
| committer | jsing <> | 2020-05-31 18:03:32 +0000 |
| commit | 95d91de56d07efcd6dd35c2b3815d31608c9ba7f (patch) | |
| tree | ba2c4b8a939c7f41a540f91b545d382c51e1939c /src/lib/libssl | |
| parent | ac59d0e35f28383b918365d1f209defd9cc9ffd5 (diff) | |
| download | openbsd-95d91de56d07efcd6dd35c2b3815d31608c9ba7f.tar.gz openbsd-95d91de56d07efcd6dd35c2b3815d31608c9ba7f.tar.bz2 openbsd-95d91de56d07efcd6dd35c2b3815d31608c9ba7f.zip | |
Replace ssl_max_server_version() with ssl_downgrade_max_version()
Replace the only occurrence of ssl_max_server_version() with a call
to ssl_downgrade_max_version() and remove ssl_max_server_version().
ok beck@ tb@
Diffstat (limited to 'src/lib/libssl')
| -rw-r--r-- | src/lib/libssl/ssl_ciphers.c | 7 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_locl.h | 3 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_versions.c | 26 |
3 files changed, 6 insertions, 30 deletions
diff --git a/src/lib/libssl/ssl_ciphers.c b/src/lib/libssl/ssl_ciphers.c index 3abed60b5b..3a1fb14d5c 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.3 2019/05/15 09:13:16 bcook Exp $ */ | 1 | /* $OpenBSD: ssl_ciphers.c,v 1.4 2020/05/31 18:03:32 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 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2015-2018 Joel Sing <jsing@openbsd.org> |
| @@ -133,8 +133,9 @@ ssl_bytes_to_cipher_list(SSL *s, CBS *cbs) | |||
| 133 | * Fail if the current version is an unexpected | 133 | * Fail if the current version is an unexpected |
| 134 | * downgrade. | 134 | * downgrade. |
| 135 | */ | 135 | */ |
| 136 | max_version = ssl_max_server_version(s); | 136 | if (!ssl_downgrade_max_version(s, &max_version)) |
| 137 | if (max_version == 0 || s->version < max_version) { | 137 | goto err; |
| 138 | if (s->version < max_version) { | ||
| 138 | SSLerror(s, SSL_R_INAPPROPRIATE_FALLBACK); | 139 | SSLerror(s, SSL_R_INAPPROPRIATE_FALLBACK); |
| 139 | ssl3_send_alert(s, SSL3_AL_FATAL, | 140 | ssl3_send_alert(s, SSL3_AL_FATAL, |
| 140 | SSL_AD_INAPPROPRIATE_FALLBACK); | 141 | SSL_AD_INAPPROPRIATE_FALLBACK); |
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index 03c2c227ed..bfc3c1ad9b 100644 --- a/src/lib/libssl/ssl_locl.h +++ b/src/lib/libssl/ssl_locl.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_locl.h,v 1.278 2020/05/31 16:36:35 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_locl.h,v 1.279 2020/05/31 18:03:32 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -1094,7 +1094,6 @@ int ssl_version_set_min(const SSL_METHOD *meth, uint16_t ver, uint16_t max_ver, | |||
| 1094 | uint16_t *out_ver); | 1094 | uint16_t *out_ver); |
| 1095 | int ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver, | 1095 | int ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver, |
| 1096 | uint16_t *out_ver); | 1096 | uint16_t *out_ver); |
| 1097 | uint16_t ssl_max_server_version(SSL *s); | ||
| 1098 | int ssl_downgrade_max_version(SSL *s, uint16_t *max_ver); | 1097 | int ssl_downgrade_max_version(SSL *s, uint16_t *max_ver); |
| 1099 | int ssl_cipher_is_permitted(const SSL_CIPHER *cipher, uint16_t min_ver, | 1098 | int ssl_cipher_is_permitted(const SSL_CIPHER *cipher, uint16_t min_ver, |
| 1100 | uint16_t max_ver); | 1099 | uint16_t max_ver); |
diff --git a/src/lib/libssl/ssl_versions.c b/src/lib/libssl/ssl_versions.c index 03eb41582a..b21fa7198c 100644 --- a/src/lib/libssl/ssl_versions.c +++ b/src/lib/libssl/ssl_versions.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_versions.c,v 1.5 2020/05/31 16:36:35 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_versions.c,v 1.6 2020/05/31 18:03:32 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -200,30 +200,6 @@ ssl_max_shared_version(SSL *s, uint16_t peer_ver, uint16_t *max_ver) | |||
| 200 | return 1; | 200 | return 1; |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | uint16_t | ||
| 204 | ssl_max_server_version(SSL *s) | ||
| 205 | { | ||
| 206 | uint16_t max_version, min_version = 0; | ||
| 207 | |||
| 208 | if (SSL_IS_DTLS(s)) | ||
| 209 | return (DTLS1_VERSION); | ||
| 210 | |||
| 211 | if (!ssl_enabled_version_range(s, &min_version, &max_version)) | ||
| 212 | return 0; | ||
| 213 | |||
| 214 | /* | ||
| 215 | * Limit to the versions supported by this method. The SSL method | ||
| 216 | * will be changed during version negotiation, as such we want to | ||
| 217 | * use the SSL method from the context. | ||
| 218 | */ | ||
| 219 | if (!ssl_clamp_version_range(&min_version, &max_version, | ||
| 220 | s->ctx->method->internal->min_version, | ||
| 221 | s->ctx->method->internal->max_version)) | ||
| 222 | return 0; | ||
| 223 | |||
| 224 | return (max_version); | ||
| 225 | } | ||
| 226 | |||
| 227 | int | 203 | int |
| 228 | ssl_downgrade_max_version(SSL *s, uint16_t *max_ver) | 204 | ssl_downgrade_max_version(SSL *s, uint16_t *max_ver) |
| 229 | { | 205 | { |
