summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_kex.c
diff options
context:
space:
mode:
authorjsing <>2021-12-04 13:50:35 +0000
committerjsing <>2021-12-04 13:50:35 +0000
commit7747938abe289fe6b8f9dd672e16cfcfcbdf8c95 (patch)
tree9582d14747bb622033ba4dc27bec767bf5525dd5 /src/lib/libssl/ssl_kex.c
parent8f4c834e03d9c77686f81fede7b078f868e1c6af (diff)
downloadopenbsd-7747938abe289fe6b8f9dd672e16cfcfcbdf8c95.tar.gz
openbsd-7747938abe289fe6b8f9dd672e16cfcfcbdf8c95.tar.bz2
openbsd-7747938abe289fe6b8f9dd672e16cfcfcbdf8c95.zip
Move the minimum DHE key size check into ssl_kex_peer_params_dhe()
ok inoguchi@ tb@
Diffstat (limited to 'src/lib/libssl/ssl_kex.c')
-rw-r--r--src/lib/libssl/ssl_kex.c16
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
28int 30int
29ssl_kex_generate_dhe(DH *dh, DH *dh_params) 31ssl_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
112int 114int
113ssl_kex_peer_params_dhe(DH *dh, CBS *cbs) 115ssl_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: