diff options
author | jsing <> | 2021-02-25 17:06:05 +0000 |
---|---|---|
committer | jsing <> | 2021-02-25 17:06:05 +0000 |
commit | 72c7f20e4fbcb3386178960b8f88ab2fbc042567 (patch) | |
tree | 5a334628a895bbe67688cd0dbadfdc68524f02de | |
parent | aed0a5deca305a997de3f6234733204b383f094f (diff) | |
download | openbsd-72c7f20e4fbcb3386178960b8f88ab2fbc042567.tar.gz openbsd-72c7f20e4fbcb3386178960b8f88ab2fbc042567.tar.bz2 openbsd-72c7f20e4fbcb3386178960b8f88ab2fbc042567.zip |
Only use TLS versions internally (rather than both TLS and DTLS versions).
DTLS protocol version numbers are the 1's compliment of human readable TLS
version numbers, which means that newer versions decrease in value and
there is no direct mapping between TLS protocol version numbers and DTLS
protocol version numbers.
Rather than having to deal with this internally, only use TLS versions
internally and map between DTLS and TLS protocol versions when necessary.
Rename functions and variables to use 'tls_version' when they contain a
TLS version (and never a DTLS version).
ok tb@
-rw-r--r-- | src/lib/libssl/ssl_ciphers.c | 25 | ||||
-rw-r--r-- | src/lib/libssl/ssl_lib.c | 22 | ||||
-rw-r--r-- | src/lib/libssl/ssl_locl.h | 28 | ||||
-rw-r--r-- | src/lib/libssl/ssl_methods.c | 66 | ||||
-rw-r--r-- | src/lib/libssl/ssl_packet.c | 7 | ||||
-rw-r--r-- | src/lib/libssl/ssl_versions.c | 98 | ||||
-rw-r--r-- | src/lib/libssl/tls13_client.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/tls13_legacy.c | 6 | ||||
-rw-r--r-- | src/lib/libssl/tls13_server.c | 4 |
9 files changed, 132 insertions, 128 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 | ||
38 | int | 38 | int |
39 | ssl_cipher_allowed_in_version_range(const SSL_CIPHER *cipher, uint16_t min_ver, | 39 | ssl_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))) |
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 33aca33c92..57d0f4b779 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_lib.c,v 1.248 2021/02/20 14:14:16 tb Exp $ */ | 1 | /* $OpenBSD: ssl_lib.c,v 1.249 2021/02/25 17:06:05 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 | * |
@@ -254,8 +254,8 @@ SSL_new(SSL_CTX *ctx) | |||
254 | if ((s->internal = calloc(1, sizeof(*s->internal))) == NULL) | 254 | if ((s->internal = calloc(1, sizeof(*s->internal))) == NULL) |
255 | goto err; | 255 | goto err; |
256 | 256 | ||
257 | s->internal->min_version = ctx->internal->min_version; | 257 | s->internal->min_tls_version = ctx->internal->min_tls_version; |
258 | s->internal->max_version = ctx->internal->max_version; | 258 | s->internal->max_tls_version = ctx->internal->max_tls_version; |
259 | s->internal->min_proto_version = ctx->internal->min_proto_version; | 259 | s->internal->min_proto_version = ctx->internal->min_proto_version; |
260 | s->internal->max_proto_version = ctx->internal->max_proto_version; | 260 | s->internal->max_proto_version = ctx->internal->max_proto_version; |
261 | 261 | ||
@@ -1336,7 +1336,7 @@ SSL_get1_supported_ciphers(SSL *s) | |||
1336 | 1336 | ||
1337 | if (s == NULL) | 1337 | if (s == NULL) |
1338 | return NULL; | 1338 | return NULL; |
1339 | if (!ssl_supported_version_range(s, &min_vers, &max_vers)) | 1339 | if (!ssl_supported_tls_version_range(s, &min_vers, &max_vers)) |
1340 | return NULL; | 1340 | return NULL; |
1341 | if ((ciphers = SSL_get_ciphers(s)) == NULL) | 1341 | if ((ciphers = SSL_get_ciphers(s)) == NULL) |
1342 | return NULL; | 1342 | return NULL; |
@@ -1346,7 +1346,7 @@ SSL_get1_supported_ciphers(SSL *s) | |||
1346 | for (i = 0; i < sk_SSL_CIPHER_num(ciphers); i++) { | 1346 | for (i = 0; i < sk_SSL_CIPHER_num(ciphers); i++) { |
1347 | if ((cipher = sk_SSL_CIPHER_value(ciphers, i)) == NULL) | 1347 | if ((cipher = sk_SSL_CIPHER_value(ciphers, i)) == NULL) |
1348 | goto err; | 1348 | goto err; |
1349 | if (!ssl_cipher_allowed_in_version_range(cipher, min_vers, | 1349 | if (!ssl_cipher_allowed_in_tls_version_range(cipher, min_vers, |
1350 | max_vers)) | 1350 | max_vers)) |
1351 | continue; | 1351 | continue; |
1352 | if (!sk_SSL_CIPHER_push(supported_ciphers, cipher)) | 1352 | if (!sk_SSL_CIPHER_push(supported_ciphers, cipher)) |
@@ -1829,8 +1829,8 @@ SSL_CTX_new(const SSL_METHOD *meth) | |||
1829 | } | 1829 | } |
1830 | 1830 | ||
1831 | ret->method = meth; | 1831 | ret->method = meth; |
1832 | ret->internal->min_version = meth->internal->min_version; | 1832 | ret->internal->min_tls_version = meth->internal->min_tls_version; |
1833 | ret->internal->max_version = meth->internal->max_version; | 1833 | ret->internal->max_tls_version = meth->internal->max_tls_version; |
1834 | ret->internal->min_proto_version = 0; | 1834 | ret->internal->min_proto_version = 0; |
1835 | ret->internal->max_proto_version = 0; | 1835 | ret->internal->max_proto_version = 0; |
1836 | ret->internal->mode = SSL_MODE_AUTO_RETRY; | 1836 | ret->internal->mode = SSL_MODE_AUTO_RETRY; |
@@ -3027,7 +3027,7 @@ int | |||
3027 | SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version) | 3027 | SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version) |
3028 | { | 3028 | { |
3029 | return ssl_version_set_min(ctx->method, version, | 3029 | return ssl_version_set_min(ctx->method, version, |
3030 | ctx->internal->max_version, &ctx->internal->min_version, | 3030 | ctx->internal->max_tls_version, &ctx->internal->min_tls_version, |
3031 | &ctx->internal->min_proto_version); | 3031 | &ctx->internal->min_proto_version); |
3032 | } | 3032 | } |
3033 | 3033 | ||
@@ -3041,7 +3041,7 @@ int | |||
3041 | SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version) | 3041 | SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version) |
3042 | { | 3042 | { |
3043 | return ssl_version_set_max(ctx->method, version, | 3043 | return ssl_version_set_max(ctx->method, version, |
3044 | ctx->internal->min_version, &ctx->internal->max_version, | 3044 | ctx->internal->min_tls_version, &ctx->internal->max_tls_version, |
3045 | &ctx->internal->max_proto_version); | 3045 | &ctx->internal->max_proto_version); |
3046 | } | 3046 | } |
3047 | 3047 | ||
@@ -3055,7 +3055,7 @@ int | |||
3055 | SSL_set_min_proto_version(SSL *ssl, uint16_t version) | 3055 | SSL_set_min_proto_version(SSL *ssl, uint16_t version) |
3056 | { | 3056 | { |
3057 | return ssl_version_set_min(ssl->method, version, | 3057 | return ssl_version_set_min(ssl->method, version, |
3058 | ssl->internal->max_version, &ssl->internal->min_version, | 3058 | ssl->internal->max_tls_version, &ssl->internal->min_tls_version, |
3059 | &ssl->internal->min_proto_version); | 3059 | &ssl->internal->min_proto_version); |
3060 | } | 3060 | } |
3061 | int | 3061 | int |
@@ -3068,7 +3068,7 @@ int | |||
3068 | SSL_set_max_proto_version(SSL *ssl, uint16_t version) | 3068 | SSL_set_max_proto_version(SSL *ssl, uint16_t version) |
3069 | { | 3069 | { |
3070 | return ssl_version_set_max(ssl->method, version, | 3070 | return ssl_version_set_max(ssl->method, version, |
3071 | ssl->internal->min_version, &ssl->internal->max_version, | 3071 | ssl->internal->min_tls_version, &ssl->internal->max_tls_version, |
3072 | &ssl->internal->max_proto_version); | 3072 | &ssl->internal->max_proto_version); |
3073 | } | 3073 | } |
3074 | 3074 | ||
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index 3a4d318987..7ed3094c3e 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.322 2021/02/22 15:59:10 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_locl.h,v 1.323 2021/02/25 17:06:05 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 | * |
@@ -362,8 +362,8 @@ typedef struct ssl_method_internal_st { | |||
362 | int server; | 362 | int server; |
363 | int version; | 363 | int version; |
364 | 364 | ||
365 | uint16_t min_version; | 365 | uint16_t min_tls_version; |
366 | uint16_t max_version; | 366 | uint16_t max_tls_version; |
367 | 367 | ||
368 | int (*ssl_new)(SSL *s); | 368 | int (*ssl_new)(SSL *s); |
369 | void (*ssl_clear)(SSL *s); | 369 | void (*ssl_clear)(SSL *s); |
@@ -517,8 +517,8 @@ int tls12_record_layer_seal_record(struct tls12_record_layer *rl, | |||
517 | CBB *out); | 517 | CBB *out); |
518 | 518 | ||
519 | typedef struct ssl_ctx_internal_st { | 519 | typedef struct ssl_ctx_internal_st { |
520 | uint16_t min_version; | 520 | uint16_t min_tls_version; |
521 | uint16_t max_version; | 521 | uint16_t max_tls_version; |
522 | 522 | ||
523 | /* | 523 | /* |
524 | * These may be zero to imply minimum or maximum version supported by | 524 | * These may be zero to imply minimum or maximum version supported by |
@@ -686,8 +686,8 @@ typedef struct ssl_ctx_internal_st { | |||
686 | typedef struct ssl_internal_st { | 686 | typedef struct ssl_internal_st { |
687 | struct tls13_ctx *tls13; | 687 | struct tls13_ctx *tls13; |
688 | 688 | ||
689 | uint16_t min_version; | 689 | uint16_t min_tls_version; |
690 | uint16_t max_version; | 690 | uint16_t max_tls_version; |
691 | 691 | ||
692 | /* | 692 | /* |
693 | * These may be zero to imply minimum or maximum version supported by | 693 | * These may be zero to imply minimum or maximum version supported by |
@@ -1121,19 +1121,19 @@ struct ssl_aead_ctx_st { | |||
1121 | extern const SSL_CIPHER ssl3_ciphers[]; | 1121 | extern const SSL_CIPHER ssl3_ciphers[]; |
1122 | 1122 | ||
1123 | const char *ssl_version_string(int ver); | 1123 | const char *ssl_version_string(int ver); |
1124 | int ssl_enabled_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver); | 1124 | int ssl_version_set_min(const SSL_METHOD *meth, uint16_t proto_ver, |
1125 | int ssl_supported_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver); | 1125 | uint16_t max_tls_ver, uint16_t *out_tls_ver, uint16_t *out_proto_ver); |
1126 | int ssl_version_set_min(const SSL_METHOD *meth, uint16_t ver, uint16_t max_ver, | 1126 | int ssl_version_set_max(const SSL_METHOD *meth, uint16_t proto_ver, |
1127 | uint16_t *out_ver, uint16_t *out_proto_ver); | 1127 | uint16_t min_tls_ver, uint16_t *out_tls_ver, uint16_t *out_proto_ver); |
1128 | int ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver, | 1128 | int ssl_enabled_tls_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver); |
1129 | uint16_t *out_ver, uint16_t *out_proto_ver); | 1129 | int ssl_supported_tls_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver); |
1130 | int ssl_downgrade_max_version(SSL *s, uint16_t *max_ver); | 1130 | int ssl_downgrade_max_version(SSL *s, uint16_t *max_ver); |
1131 | int ssl_max_supported_version(SSL *s, uint16_t *max_ver); | 1131 | int ssl_max_supported_version(SSL *s, uint16_t *max_ver); |
1132 | int ssl_max_shared_version(SSL *s, uint16_t peer_ver, uint16_t *max_ver); | 1132 | int ssl_max_shared_version(SSL *s, uint16_t peer_ver, uint16_t *max_ver); |
1133 | int ssl_check_version_from_server(SSL *s, uint16_t server_version); | 1133 | int ssl_check_version_from_server(SSL *s, uint16_t server_version); |
1134 | int ssl_legacy_stack_version(SSL *s, uint16_t version); | 1134 | int ssl_legacy_stack_version(SSL *s, uint16_t version); |
1135 | int ssl_cipher_in_list(STACK_OF(SSL_CIPHER) *ciphers, const SSL_CIPHER *cipher); | 1135 | int ssl_cipher_in_list(STACK_OF(SSL_CIPHER) *ciphers, const SSL_CIPHER *cipher); |
1136 | int ssl_cipher_allowed_in_version_range(const SSL_CIPHER *cipher, | 1136 | int ssl_cipher_allowed_in_tls_version_range(const SSL_CIPHER *cipher, |
1137 | uint16_t min_ver, uint16_t max_ver); | 1137 | uint16_t min_ver, uint16_t max_ver); |
1138 | 1138 | ||
1139 | const SSL_METHOD *tls_legacy_method(void); | 1139 | const SSL_METHOD *tls_legacy_method(void); |
diff --git a/src/lib/libssl/ssl_methods.c b/src/lib/libssl/ssl_methods.c index ae532ba16d..084f533f5e 100644 --- a/src/lib/libssl/ssl_methods.c +++ b/src/lib/libssl/ssl_methods.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_methods.c,v 1.22 2021/02/20 08:33:17 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_methods.c,v 1.23 2021/02/25 17:06:05 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 | * |
@@ -64,8 +64,8 @@ static const SSL_METHOD_INTERNAL DTLS_method_internal_data = { | |||
64 | .dtls = 1, | 64 | .dtls = 1, |
65 | .server = 1, | 65 | .server = 1, |
66 | .version = DTLS1_2_VERSION, | 66 | .version = DTLS1_2_VERSION, |
67 | .min_version = DTLS1_VERSION, | 67 | .min_tls_version = TLS1_1_VERSION, |
68 | .max_version = DTLS1_2_VERSION, | 68 | .max_tls_version = TLS1_2_VERSION, |
69 | .ssl_new = dtls1_new, | 69 | .ssl_new = dtls1_new, |
70 | .ssl_clear = dtls1_clear, | 70 | .ssl_clear = dtls1_clear, |
71 | .ssl_free = dtls1_free, | 71 | .ssl_free = dtls1_free, |
@@ -93,8 +93,8 @@ static const SSL_METHOD_INTERNAL DTLS_client_method_internal_data = { | |||
93 | .dtls = 1, | 93 | .dtls = 1, |
94 | .server = 0, | 94 | .server = 0, |
95 | .version = DTLS1_2_VERSION, | 95 | .version = DTLS1_2_VERSION, |
96 | .min_version = DTLS1_VERSION, | 96 | .min_tls_version = TLS1_1_VERSION, |
97 | .max_version = DTLS1_2_VERSION, | 97 | .max_tls_version = TLS1_2_VERSION, |
98 | .ssl_new = dtls1_new, | 98 | .ssl_new = dtls1_new, |
99 | .ssl_clear = dtls1_clear, | 99 | .ssl_clear = dtls1_clear, |
100 | .ssl_free = dtls1_free, | 100 | .ssl_free = dtls1_free, |
@@ -123,8 +123,8 @@ static const SSL_METHOD_INTERNAL DTLSv1_method_internal_data = { | |||
123 | .dtls = 1, | 123 | .dtls = 1, |
124 | .server = 1, | 124 | .server = 1, |
125 | .version = DTLS1_VERSION, | 125 | .version = DTLS1_VERSION, |
126 | .min_version = DTLS1_VERSION, | 126 | .min_tls_version = TLS1_1_VERSION, |
127 | .max_version = DTLS1_VERSION, | 127 | .max_tls_version = TLS1_1_VERSION, |
128 | .ssl_new = dtls1_new, | 128 | .ssl_new = dtls1_new, |
129 | .ssl_clear = dtls1_clear, | 129 | .ssl_clear = dtls1_clear, |
130 | .ssl_free = dtls1_free, | 130 | .ssl_free = dtls1_free, |
@@ -152,8 +152,8 @@ static const SSL_METHOD_INTERNAL DTLSv1_client_method_internal_data = { | |||
152 | .dtls = 1, | 152 | .dtls = 1, |
153 | .server = 0, | 153 | .server = 0, |
154 | .version = DTLS1_VERSION, | 154 | .version = DTLS1_VERSION, |
155 | .min_version = DTLS1_VERSION, | 155 | .min_tls_version = TLS1_1_VERSION, |
156 | .max_version = DTLS1_VERSION, | 156 | .max_tls_version = TLS1_1_VERSION, |
157 | .ssl_new = dtls1_new, | 157 | .ssl_new = dtls1_new, |
158 | .ssl_clear = dtls1_clear, | 158 | .ssl_clear = dtls1_clear, |
159 | .ssl_free = dtls1_free, | 159 | .ssl_free = dtls1_free, |
@@ -181,8 +181,8 @@ static const SSL_METHOD_INTERNAL DTLSv1_2_method_internal_data = { | |||
181 | .dtls = 1, | 181 | .dtls = 1, |
182 | .server = 1, | 182 | .server = 1, |
183 | .version = DTLS1_2_VERSION, | 183 | .version = DTLS1_2_VERSION, |
184 | .min_version = DTLS1_2_VERSION, | 184 | .min_tls_version = TLS1_2_VERSION, |
185 | .max_version = DTLS1_2_VERSION, | 185 | .max_tls_version = TLS1_2_VERSION, |
186 | .ssl_new = dtls1_new, | 186 | .ssl_new = dtls1_new, |
187 | .ssl_clear = dtls1_clear, | 187 | .ssl_clear = dtls1_clear, |
188 | .ssl_free = dtls1_free, | 188 | .ssl_free = dtls1_free, |
@@ -210,8 +210,8 @@ static const SSL_METHOD_INTERNAL DTLSv1_2_client_method_internal_data = { | |||
210 | .dtls = 1, | 210 | .dtls = 1, |
211 | .server = 0, | 211 | .server = 0, |
212 | .version = DTLS1_2_VERSION, | 212 | .version = DTLS1_2_VERSION, |
213 | .min_version = DTLS1_2_VERSION, | 213 | .min_tls_version = TLS1_2_VERSION, |
214 | .max_version = DTLS1_2_VERSION, | 214 | .max_tls_version = TLS1_2_VERSION, |
215 | .ssl_new = dtls1_new, | 215 | .ssl_new = dtls1_new, |
216 | .ssl_clear = dtls1_clear, | 216 | .ssl_clear = dtls1_clear, |
217 | .ssl_free = dtls1_free, | 217 | .ssl_free = dtls1_free, |
@@ -306,8 +306,8 @@ static const SSL_METHOD_INTERNAL TLS_method_internal_data = { | |||
306 | .dtls = 0, | 306 | .dtls = 0, |
307 | .server = 1, | 307 | .server = 1, |
308 | .version = TLS1_3_VERSION, | 308 | .version = TLS1_3_VERSION, |
309 | .min_version = TLS1_VERSION, | 309 | .min_tls_version = TLS1_VERSION, |
310 | .max_version = TLS1_3_VERSION, | 310 | .max_tls_version = TLS1_3_VERSION, |
311 | .ssl_new = tls1_new, | 311 | .ssl_new = tls1_new, |
312 | .ssl_clear = tls1_clear, | 312 | .ssl_clear = tls1_clear, |
313 | .ssl_free = tls1_free, | 313 | .ssl_free = tls1_free, |
@@ -336,8 +336,8 @@ static const SSL_METHOD_INTERNAL TLS_legacy_method_internal_data = { | |||
336 | .dtls = 0, | 336 | .dtls = 0, |
337 | .server = 1, | 337 | .server = 1, |
338 | .version = TLS1_2_VERSION, | 338 | .version = TLS1_2_VERSION, |
339 | .min_version = TLS1_VERSION, | 339 | .min_tls_version = TLS1_VERSION, |
340 | .max_version = TLS1_2_VERSION, | 340 | .max_tls_version = TLS1_2_VERSION, |
341 | .ssl_new = tls1_new, | 341 | .ssl_new = tls1_new, |
342 | .ssl_clear = tls1_clear, | 342 | .ssl_clear = tls1_clear, |
343 | .ssl_free = tls1_free, | 343 | .ssl_free = tls1_free, |
@@ -366,8 +366,8 @@ static const SSL_METHOD_INTERNAL TLS_client_method_internal_data = { | |||
366 | .dtls = 0, | 366 | .dtls = 0, |
367 | .server = 0, | 367 | .server = 0, |
368 | .version = TLS1_3_VERSION, | 368 | .version = TLS1_3_VERSION, |
369 | .min_version = TLS1_VERSION, | 369 | .min_tls_version = TLS1_VERSION, |
370 | .max_version = TLS1_3_VERSION, | 370 | .max_tls_version = TLS1_3_VERSION, |
371 | .ssl_new = tls1_new, | 371 | .ssl_new = tls1_new, |
372 | .ssl_clear = tls1_clear, | 372 | .ssl_clear = tls1_clear, |
373 | .ssl_free = tls1_free, | 373 | .ssl_free = tls1_free, |
@@ -397,8 +397,8 @@ static const SSL_METHOD_INTERNAL TLS_legacy_client_method_internal_data = { | |||
397 | .dtls = 0, | 397 | .dtls = 0, |
398 | .server = 0, | 398 | .server = 0, |
399 | .version = TLS1_2_VERSION, | 399 | .version = TLS1_2_VERSION, |
400 | .min_version = TLS1_VERSION, | 400 | .min_tls_version = TLS1_VERSION, |
401 | .max_version = TLS1_2_VERSION, | 401 | .max_tls_version = TLS1_2_VERSION, |
402 | .ssl_new = tls1_new, | 402 | .ssl_new = tls1_new, |
403 | .ssl_clear = tls1_clear, | 403 | .ssl_clear = tls1_clear, |
404 | .ssl_free = tls1_free, | 404 | .ssl_free = tls1_free, |
@@ -427,8 +427,8 @@ static const SSL_METHOD_INTERNAL TLSv1_method_internal_data = { | |||
427 | .dtls = 0, | 427 | .dtls = 0, |
428 | .server = 1, | 428 | .server = 1, |
429 | .version = TLS1_VERSION, | 429 | .version = TLS1_VERSION, |
430 | .min_version = TLS1_VERSION, | 430 | .min_tls_version = TLS1_VERSION, |
431 | .max_version = TLS1_VERSION, | 431 | .max_tls_version = TLS1_VERSION, |
432 | .ssl_new = tls1_new, | 432 | .ssl_new = tls1_new, |
433 | .ssl_clear = tls1_clear, | 433 | .ssl_clear = tls1_clear, |
434 | .ssl_free = tls1_free, | 434 | .ssl_free = tls1_free, |
@@ -456,8 +456,8 @@ static const SSL_METHOD_INTERNAL TLSv1_client_method_internal_data = { | |||
456 | .dtls = 0, | 456 | .dtls = 0, |
457 | .server = 0, | 457 | .server = 0, |
458 | .version = TLS1_VERSION, | 458 | .version = TLS1_VERSION, |
459 | .min_version = TLS1_VERSION, | 459 | .min_tls_version = TLS1_VERSION, |
460 | .max_version = TLS1_VERSION, | 460 | .max_tls_version = TLS1_VERSION, |
461 | .ssl_new = tls1_new, | 461 | .ssl_new = tls1_new, |
462 | .ssl_clear = tls1_clear, | 462 | .ssl_clear = tls1_clear, |
463 | .ssl_free = tls1_free, | 463 | .ssl_free = tls1_free, |
@@ -485,8 +485,8 @@ static const SSL_METHOD_INTERNAL TLSv1_1_method_internal_data = { | |||
485 | .dtls = 0, | 485 | .dtls = 0, |
486 | .server = 1, | 486 | .server = 1, |
487 | .version = TLS1_1_VERSION, | 487 | .version = TLS1_1_VERSION, |
488 | .min_version = TLS1_1_VERSION, | 488 | .min_tls_version = TLS1_1_VERSION, |
489 | .max_version = TLS1_1_VERSION, | 489 | .max_tls_version = TLS1_1_VERSION, |
490 | .ssl_new = tls1_new, | 490 | .ssl_new = tls1_new, |
491 | .ssl_clear = tls1_clear, | 491 | .ssl_clear = tls1_clear, |
492 | .ssl_free = tls1_free, | 492 | .ssl_free = tls1_free, |
@@ -514,8 +514,8 @@ static const SSL_METHOD_INTERNAL TLSv1_1_client_method_internal_data = { | |||
514 | .dtls = 0, | 514 | .dtls = 0, |
515 | .server = 0, | 515 | .server = 0, |
516 | .version = TLS1_1_VERSION, | 516 | .version = TLS1_1_VERSION, |
517 | .min_version = TLS1_1_VERSION, | 517 | .min_tls_version = TLS1_1_VERSION, |
518 | .max_version = TLS1_1_VERSION, | 518 | .max_tls_version = TLS1_1_VERSION, |
519 | .ssl_new = tls1_new, | 519 | .ssl_new = tls1_new, |
520 | .ssl_clear = tls1_clear, | 520 | .ssl_clear = tls1_clear, |
521 | .ssl_free = tls1_free, | 521 | .ssl_free = tls1_free, |
@@ -543,8 +543,8 @@ static const SSL_METHOD_INTERNAL TLSv1_2_method_internal_data = { | |||
543 | .dtls = 0, | 543 | .dtls = 0, |
544 | .server = 1, | 544 | .server = 1, |
545 | .version = TLS1_2_VERSION, | 545 | .version = TLS1_2_VERSION, |
546 | .min_version = TLS1_2_VERSION, | 546 | .min_tls_version = TLS1_2_VERSION, |
547 | .max_version = TLS1_2_VERSION, | 547 | .max_tls_version = TLS1_2_VERSION, |
548 | .ssl_new = tls1_new, | 548 | .ssl_new = tls1_new, |
549 | .ssl_clear = tls1_clear, | 549 | .ssl_clear = tls1_clear, |
550 | .ssl_free = tls1_free, | 550 | .ssl_free = tls1_free, |
@@ -572,8 +572,8 @@ static const SSL_METHOD_INTERNAL TLSv1_2_client_method_internal_data = { | |||
572 | .dtls = 0, | 572 | .dtls = 0, |
573 | .server = 0, | 573 | .server = 0, |
574 | .version = TLS1_2_VERSION, | 574 | .version = TLS1_2_VERSION, |
575 | .min_version = TLS1_2_VERSION, | 575 | .min_tls_version = TLS1_2_VERSION, |
576 | .max_version = TLS1_2_VERSION, | 576 | .max_tls_version = TLS1_2_VERSION, |
577 | .ssl_new = tls1_new, | 577 | .ssl_new = tls1_new, |
578 | .ssl_clear = tls1_clear, | 578 | .ssl_clear = tls1_clear, |
579 | .ssl_free = tls1_free, | 579 | .ssl_free = tls1_free, |
diff --git a/src/lib/libssl/ssl_packet.c b/src/lib/libssl/ssl_packet.c index fc1c3c07de..b383fe83e9 100644 --- a/src/lib/libssl/ssl_packet.c +++ b/src/lib/libssl/ssl_packet.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_packet.c,v 1.9 2020/10/14 16:57:33 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_packet.c,v 1.10 2021/02/25 17:06:05 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 | * |
@@ -247,12 +247,13 @@ ssl_server_legacy_first_packet(SSL *s) | |||
247 | return 1; | 247 | return 1; |
248 | 248 | ||
249 | /* Only continue if this is not a version locked method. */ | 249 | /* Only continue if this is not a version locked method. */ |
250 | if (s->method->internal->min_version == s->method->internal->max_version) | 250 | if (s->method->internal->min_tls_version == |
251 | s->method->internal->max_tls_version) | ||
251 | return 1; | 252 | return 1; |
252 | 253 | ||
253 | if (ssl_is_sslv2_client_hello(&header) == 1) { | 254 | if (ssl_is_sslv2_client_hello(&header) == 1) { |
254 | /* Only permit SSLv2 client hellos if TLSv1.0 is enabled. */ | 255 | /* Only permit SSLv2 client hellos if TLSv1.0 is enabled. */ |
255 | if (ssl_enabled_version_range(s, &min_version, NULL) != 1) { | 256 | if (ssl_enabled_tls_version_range(s, &min_version, NULL) != 1) { |
256 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); | 257 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); |
257 | return -1; | 258 | return -1; |
258 | } | 259 | } |
diff --git a/src/lib/libssl/ssl_versions.c b/src/lib/libssl/ssl_versions.c index 3c4801971e..a216de6e81 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.12 2021/02/22 15:59:10 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_versions.c,v 1.13 2021/02/25 17:06:05 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 | * |
@@ -18,7 +18,7 @@ | |||
18 | #include "ssl_locl.h" | 18 | #include "ssl_locl.h" |
19 | 19 | ||
20 | static int | 20 | static int |
21 | ssl_clamp_version_range(uint16_t *min_ver, uint16_t *max_ver, | 21 | ssl_clamp_tls_version_range(uint16_t *min_ver, uint16_t *max_ver, |
22 | uint16_t clamp_min, uint16_t clamp_max) | 22 | uint16_t clamp_min, uint16_t clamp_max) |
23 | { | 23 | { |
24 | if (clamp_min > clamp_max || *min_ver > *max_ver) | 24 | if (clamp_min > clamp_max || *min_ver > *max_ver) |
@@ -35,55 +35,71 @@ ssl_clamp_version_range(uint16_t *min_ver, uint16_t *max_ver, | |||
35 | } | 35 | } |
36 | 36 | ||
37 | int | 37 | int |
38 | ssl_version_set_min(const SSL_METHOD *meth, uint16_t ver, uint16_t max_ver, | 38 | ssl_version_set_min(const SSL_METHOD *meth, uint16_t proto_ver, |
39 | uint16_t *out_ver, uint16_t *out_proto_ver) | 39 | uint16_t max_tls_ver, uint16_t *out_tls_ver, uint16_t *out_proto_ver) |
40 | { | 40 | { |
41 | uint16_t min_version, max_version; | 41 | uint16_t min_version, max_version; |
42 | 42 | ||
43 | if (ver == 0) { | 43 | if (proto_ver == 0) { |
44 | *out_ver = meth->internal->min_version; | 44 | *out_tls_ver = meth->internal->min_tls_version; |
45 | *out_proto_ver = 0; | 45 | *out_proto_ver = 0; |
46 | return 1; | 46 | return 1; |
47 | } | 47 | } |
48 | if (meth->internal->dtls) { | ||
49 | if (proto_ver != DTLS1_VERSION) | ||
50 | return 0; | ||
51 | *out_tls_ver = TLS1_1_VERSION; | ||
52 | *out_proto_ver = proto_ver; | ||
53 | return 1; | ||
54 | } | ||
48 | 55 | ||
49 | min_version = ver; | 56 | min_version = proto_ver; |
50 | max_version = max_ver; | 57 | max_version = max_tls_ver; |
51 | 58 | ||
52 | if (!ssl_clamp_version_range(&min_version, &max_version, | 59 | if (!ssl_clamp_tls_version_range(&min_version, &max_version, |
53 | meth->internal->min_version, meth->internal->max_version)) | 60 | meth->internal->min_tls_version, meth->internal->max_tls_version)) |
54 | return 0; | 61 | return 0; |
55 | 62 | ||
56 | *out_ver = *out_proto_ver = min_version; | 63 | *out_tls_ver = min_version; |
64 | *out_proto_ver = min_version; | ||
57 | 65 | ||
58 | return 1; | 66 | return 1; |
59 | } | 67 | } |
60 | 68 | ||
61 | int | 69 | int |
62 | ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver, | 70 | ssl_version_set_max(const SSL_METHOD *meth, uint16_t proto_ver, |
63 | uint16_t *out_ver, uint16_t *out_proto_ver) | 71 | uint16_t min_tls_ver, uint16_t *out_tls_ver, uint16_t *out_proto_ver) |
64 | { | 72 | { |
65 | uint16_t min_version, max_version; | 73 | uint16_t min_version, max_version; |
66 | 74 | ||
67 | if (ver == 0) { | 75 | if (proto_ver == 0) { |
68 | *out_ver = meth->internal->max_version; | 76 | *out_tls_ver = meth->internal->max_tls_version; |
69 | *out_proto_ver = 0; | 77 | *out_proto_ver = 0; |
70 | return 1; | 78 | return 1; |
71 | } | 79 | } |
80 | if (meth->internal->dtls) { | ||
81 | if (proto_ver != DTLS1_VERSION) | ||
82 | return 0; | ||
83 | *out_tls_ver = TLS1_1_VERSION; | ||
84 | *out_proto_ver = proto_ver; | ||
85 | return 1; | ||
86 | } | ||
72 | 87 | ||
73 | min_version = min_ver; | 88 | min_version = min_tls_ver; |
74 | max_version = ver; | 89 | max_version = proto_ver; |
75 | 90 | ||
76 | if (!ssl_clamp_version_range(&min_version, &max_version, | 91 | if (!ssl_clamp_tls_version_range(&min_version, &max_version, |
77 | meth->internal->min_version, meth->internal->max_version)) | 92 | meth->internal->min_tls_version, meth->internal->max_tls_version)) |
78 | return 0; | 93 | return 0; |
79 | 94 | ||
80 | *out_ver = *out_proto_ver = max_version; | 95 | *out_tls_ver = max_version; |
96 | *out_proto_ver = max_version; | ||
81 | 97 | ||
82 | return 1; | 98 | return 1; |
83 | } | 99 | } |
84 | 100 | ||
85 | int | 101 | int |
86 | ssl_enabled_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver) | 102 | ssl_enabled_tls_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver) |
87 | { | 103 | { |
88 | uint16_t min_version, max_version; | 104 | uint16_t min_version, max_version; |
89 | 105 | ||
@@ -121,8 +137,8 @@ ssl_enabled_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver) | |||
121 | return 0; | 137 | return 0; |
122 | 138 | ||
123 | /* Limit to configured version range. */ | 139 | /* Limit to configured version range. */ |
124 | if (!ssl_clamp_version_range(&min_version, &max_version, | 140 | if (!ssl_clamp_tls_version_range(&min_version, &max_version, |
125 | s->internal->min_version, s->internal->max_version)) | 141 | s->internal->min_tls_version, s->internal->max_tls_version)) |
126 | return 0; | 142 | return 0; |
127 | 143 | ||
128 | if (min_ver != NULL) | 144 | if (min_ver != NULL) |
@@ -134,26 +150,19 @@ ssl_enabled_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver) | |||
134 | } | 150 | } |
135 | 151 | ||
136 | int | 152 | int |
137 | ssl_supported_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver) | 153 | ssl_supported_tls_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver) |
138 | { | 154 | { |
139 | uint16_t min_version, max_version; | 155 | uint16_t min_version, max_version; |
140 | 156 | ||
141 | /* DTLS cannot currently be disabled... */ | 157 | if (!ssl_enabled_tls_version_range(s, &min_version, &max_version)) |
142 | if (SSL_is_dtls(s)) { | ||
143 | min_version = max_version = DTLS1_VERSION; | ||
144 | goto done; | ||
145 | } | ||
146 | |||
147 | if (!ssl_enabled_version_range(s, &min_version, &max_version)) | ||
148 | return 0; | 158 | return 0; |
149 | 159 | ||
150 | /* Limit to the versions supported by this method. */ | 160 | /* Limit to the versions supported by this method. */ |
151 | if (!ssl_clamp_version_range(&min_version, &max_version, | 161 | if (!ssl_clamp_tls_version_range(&min_version, &max_version, |
152 | s->method->internal->min_version, | 162 | s->method->internal->min_tls_version, |
153 | s->method->internal->max_version)) | 163 | s->method->internal->max_tls_version)) |
154 | return 0; | 164 | return 0; |
155 | 165 | ||
156 | done: | ||
157 | if (min_ver != NULL) | 166 | if (min_ver != NULL) |
158 | *min_ver = min_version; | 167 | *min_ver = min_version; |
159 | if (max_ver != NULL) | 168 | if (max_ver != NULL) |
@@ -167,7 +176,12 @@ ssl_max_supported_version(SSL *s, uint16_t *max_ver) | |||
167 | { | 176 | { |
168 | *max_ver = 0; | 177 | *max_ver = 0; |
169 | 178 | ||
170 | if (!ssl_supported_version_range(s, NULL, max_ver)) | 179 | if (SSL_is_dtls(s)) { |
180 | *max_ver = DTLS1_VERSION; | ||
181 | return 1; | ||
182 | } | ||
183 | |||
184 | if (!ssl_supported_tls_version_range(s, NULL, max_ver)) | ||
171 | return 0; | 185 | return 0; |
172 | 186 | ||
173 | return 1; | 187 | return 1; |
@@ -199,7 +213,7 @@ ssl_max_shared_version(SSL *s, uint16_t peer_ver, uint16_t *max_ver) | |||
199 | else | 213 | else |
200 | return 0; | 214 | return 0; |
201 | 215 | ||
202 | if (!ssl_supported_version_range(s, &min_version, &max_version)) | 216 | if (!ssl_supported_tls_version_range(s, &min_version, &max_version)) |
203 | return 0; | 217 | return 0; |
204 | 218 | ||
205 | if (shared_version < min_version) | 219 | if (shared_version < min_version) |
@@ -232,12 +246,12 @@ ssl_downgrade_max_version(SSL *s, uint16_t *max_ver) | |||
232 | return 1; | 246 | return 1; |
233 | } | 247 | } |
234 | 248 | ||
235 | if (!ssl_enabled_version_range(s, &min_version, &max_version)) | 249 | if (!ssl_enabled_tls_version_range(s, &min_version, &max_version)) |
236 | return 0; | 250 | return 0; |
237 | 251 | ||
238 | if (!ssl_clamp_version_range(&min_version, &max_version, | 252 | if (!ssl_clamp_tls_version_range(&min_version, &max_version, |
239 | s->ctx->method->internal->min_version, | 253 | s->ctx->method->internal->min_tls_version, |
240 | s->ctx->method->internal->max_version)) | 254 | s->ctx->method->internal->max_tls_version)) |
241 | return 0; | 255 | return 0; |
242 | 256 | ||
243 | *max_ver = max_version; | 257 | *max_ver = max_version; |
@@ -255,7 +269,7 @@ ssl_check_version_from_server(SSL *s, uint16_t server_version) | |||
255 | if (SSL_is_dtls(s)) | 269 | if (SSL_is_dtls(s)) |
256 | return (server_version == DTLS1_VERSION); | 270 | return (server_version == DTLS1_VERSION); |
257 | 271 | ||
258 | if (!ssl_supported_version_range(s, &min_version, &max_version)) | 272 | if (!ssl_supported_tls_version_range(s, &min_version, &max_version)) |
259 | return 0; | 273 | return 0; |
260 | 274 | ||
261 | return (server_version >= min_version && server_version <= max_version); | 275 | return (server_version >= min_version && server_version <= max_version); |
diff --git a/src/lib/libssl/tls13_client.c b/src/lib/libssl/tls13_client.c index fbb84dcc87..a7c3bf2c00 100644 --- a/src/lib/libssl/tls13_client.c +++ b/src/lib/libssl/tls13_client.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_client.c,v 1.72 2021/02/22 16:15:49 tb Exp $ */ | 1 | /* $OpenBSD: tls13_client.c,v 1.73 2021/02/25 17:06:05 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -31,7 +31,7 @@ tls13_client_init(struct tls13_ctx *ctx) | |||
31 | size_t groups_len; | 31 | size_t groups_len; |
32 | SSL *s = ctx->ssl; | 32 | SSL *s = ctx->ssl; |
33 | 33 | ||
34 | if (!ssl_supported_version_range(s, &ctx->hs->min_version, | 34 | if (!ssl_supported_tls_version_range(s, &ctx->hs->min_version, |
35 | &ctx->hs->max_version)) { | 35 | &ctx->hs->max_version)) { |
36 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); | 36 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); |
37 | return 0; | 37 | return 0; |
diff --git a/src/lib/libssl/tls13_legacy.c b/src/lib/libssl/tls13_legacy.c index bacd11b950..f611aa061d 100644 --- a/src/lib/libssl/tls13_legacy.c +++ b/src/lib/libssl/tls13_legacy.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_legacy.c,v 1.21 2021/01/07 16:26:31 tb Exp $ */ | 1 | /* $OpenBSD: tls13_legacy.c,v 1.22 2021/02/25 17:06:05 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -359,7 +359,7 @@ tls13_use_legacy_client(struct tls13_ctx *ctx) | |||
359 | return 0; | 359 | return 0; |
360 | 360 | ||
361 | s->internal->handshake_func = s->method->internal->ssl_connect; | 361 | s->internal->handshake_func = s->method->internal->ssl_connect; |
362 | s->client_version = s->version = s->method->internal->max_version; | 362 | s->client_version = s->version = s->method->internal->max_tls_version; |
363 | 363 | ||
364 | S3I(s)->hs.state = SSL3_ST_CR_SRVR_HELLO_A; | 364 | S3I(s)->hs.state = SSL3_ST_CR_SRVR_HELLO_A; |
365 | 365 | ||
@@ -375,7 +375,7 @@ tls13_use_legacy_server(struct tls13_ctx *ctx) | |||
375 | return 0; | 375 | return 0; |
376 | 376 | ||
377 | s->internal->handshake_func = s->method->internal->ssl_accept; | 377 | s->internal->handshake_func = s->method->internal->ssl_accept; |
378 | s->client_version = s->version = s->method->internal->max_version; | 378 | s->client_version = s->version = s->method->internal->max_tls_version; |
379 | s->server = 1; | 379 | s->server = 1; |
380 | 380 | ||
381 | S3I(s)->hs.state = SSL3_ST_SR_CLNT_HELLO_A; | 381 | S3I(s)->hs.state = SSL3_ST_SR_CLNT_HELLO_A; |
diff --git a/src/lib/libssl/tls13_server.c b/src/lib/libssl/tls13_server.c index 0b079c1d83..715066fb59 100644 --- a/src/lib/libssl/tls13_server.c +++ b/src/lib/libssl/tls13_server.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_server.c,v 1.69 2021/01/09 10:41:48 tb Exp $ */ | 1 | /* $OpenBSD: tls13_server.c,v 1.70 2021/02/25 17:06:05 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org> |
4 | * Copyright (c) 2020 Bob Beck <beck@openbsd.org> | 4 | * Copyright (c) 2020 Bob Beck <beck@openbsd.org> |
@@ -29,7 +29,7 @@ tls13_server_init(struct tls13_ctx *ctx) | |||
29 | { | 29 | { |
30 | SSL *s = ctx->ssl; | 30 | SSL *s = ctx->ssl; |
31 | 31 | ||
32 | if (!ssl_supported_version_range(s, &ctx->hs->min_version, | 32 | if (!ssl_supported_tls_version_range(s, &ctx->hs->min_version, |
33 | &ctx->hs->max_version)) { | 33 | &ctx->hs->max_version)) { |
34 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); | 34 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); |
35 | return 0; | 35 | return 0; |