diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/ssl_versions.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/lib/libssl/ssl_versions.c b/src/lib/libssl/ssl_versions.c index 6e17cdac6c..240a2498aa 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.2 2017/05/06 16:18:36 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_versions.c,v 1.3 2017/05/06 20:37:25 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 | * |
| @@ -35,6 +35,52 @@ 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, | ||
| 39 | uint16_t *out_ver) | ||
| 40 | { | ||
| 41 | uint16_t min_version, max_version; | ||
| 42 | |||
| 43 | if (ver == 0) { | ||
| 44 | *out_ver = meth->internal->min_version; | ||
| 45 | return 1; | ||
| 46 | } | ||
| 47 | |||
| 48 | min_version = ver; | ||
| 49 | max_version = max_ver; | ||
| 50 | |||
| 51 | if (!ssl_clamp_version_range(&min_version, &max_version, | ||
| 52 | meth->internal->min_version, meth->internal->max_version)) | ||
| 53 | return 0; | ||
| 54 | |||
| 55 | *out_ver = min_version; | ||
| 56 | |||
| 57 | return 1; | ||
| 58 | } | ||
| 59 | |||
| 60 | int | ||
| 61 | ssl_version_set_max(const SSL_METHOD *meth, uint16_t ver, uint16_t min_ver, | ||
| 62 | uint16_t *out_ver) | ||
| 63 | { | ||
| 64 | uint16_t min_version, max_version; | ||
| 65 | |||
| 66 | if (ver == 0) { | ||
| 67 | *out_ver = meth->internal->max_version; | ||
| 68 | return 1; | ||
| 69 | } | ||
| 70 | |||
| 71 | min_version = min_ver; | ||
| 72 | max_version = ver; | ||
| 73 | |||
| 74 | if (!ssl_clamp_version_range(&min_version, &max_version, | ||
| 75 | meth->internal->min_version, meth->internal->max_version)) | ||
| 76 | return 0; | ||
| 77 | |||
| 78 | *out_ver = max_version; | ||
| 79 | |||
| 80 | return 1; | ||
| 81 | } | ||
| 82 | |||
| 83 | int | ||
| 38 | ssl_enabled_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver) | 84 | ssl_enabled_version_range(SSL *s, uint16_t *min_ver, uint16_t *max_ver) |
| 39 | { | 85 | { |
| 40 | uint16_t min_version, max_version; | 86 | uint16_t min_version, max_version; |
