diff options
Diffstat (limited to 'src/lib/libssl/ssl_kex.c')
| -rw-r--r-- | src/lib/libssl/ssl_kex.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/lib/libssl/ssl_kex.c b/src/lib/libssl/ssl_kex.c index 68d83cedbe..639981bec9 100644 --- a/src/lib/libssl/ssl_kex.c +++ b/src/lib/libssl/ssl_kex.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_kex.c,v 1.6 2021/12/04 13:15:10 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_kex.c,v 1.7 2021/12/04 13:50:35 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -25,6 +25,8 @@ | |||
| 25 | 25 | ||
| 26 | #include "bytestring.h" | 26 | #include "bytestring.h" |
| 27 | 27 | ||
| 28 | #define DHE_MINIMUM_BITS 1024 | ||
| 29 | |||
| 28 | int | 30 | int |
| 29 | ssl_kex_generate_dhe(DH *dh, DH *dh_params) | 31 | ssl_kex_generate_dhe(DH *dh, DH *dh_params) |
| 30 | { | 32 | { |
| @@ -110,12 +112,14 @@ ssl_kex_public_dhe(DH *dh, CBB *cbb) | |||
| 110 | } | 112 | } |
| 111 | 113 | ||
| 112 | int | 114 | int |
| 113 | ssl_kex_peer_params_dhe(DH *dh, CBS *cbs) | 115 | ssl_kex_peer_params_dhe(DH *dh, CBS *cbs, int *invalid_params) |
| 114 | { | 116 | { |
| 115 | CBS dh_p, dh_g; | ||
| 116 | BIGNUM *p = NULL, *g = NULL; | 117 | BIGNUM *p = NULL, *g = NULL; |
| 118 | CBS dh_p, dh_g; | ||
| 117 | int ret = 0; | 119 | int ret = 0; |
| 118 | 120 | ||
| 121 | *invalid_params = 0; | ||
| 122 | |||
| 119 | if (!CBS_get_u16_length_prefixed(cbs, &dh_p)) | 123 | if (!CBS_get_u16_length_prefixed(cbs, &dh_p)) |
| 120 | goto err; | 124 | goto err; |
| 121 | if (!CBS_get_u16_length_prefixed(cbs, &dh_g)) | 125 | if (!CBS_get_u16_length_prefixed(cbs, &dh_g)) |
| @@ -128,10 +132,14 @@ ssl_kex_peer_params_dhe(DH *dh, CBS *cbs) | |||
| 128 | 132 | ||
| 129 | if (!DH_set0_pqg(dh, p, NULL, g)) | 133 | if (!DH_set0_pqg(dh, p, NULL, g)) |
| 130 | goto err; | 134 | goto err; |
| 131 | |||
| 132 | p = NULL; | 135 | p = NULL; |
| 133 | g = NULL; | 136 | g = NULL; |
| 134 | 137 | ||
| 138 | /* XXX - consider calling DH_check(). */ | ||
| 139 | |||
| 140 | if (DH_bits(dh) < DHE_MINIMUM_BITS) | ||
| 141 | *invalid_params = 1; | ||
| 142 | |||
| 135 | ret = 1; | 143 | ret = 1; |
| 136 | 144 | ||
| 137 | err: | 145 | err: |
