diff options
Diffstat (limited to 'src/lib/libssl/ssl_sigalgs.c')
-rw-r--r-- | src/lib/libssl/ssl_sigalgs.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/lib/libssl/ssl_sigalgs.c b/src/lib/libssl/ssl_sigalgs.c index 79239ef597..8a1b5f5198 100644 --- a/src/lib/libssl/ssl_sigalgs.c +++ b/src/lib/libssl/ssl_sigalgs.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_sigalgs.c,v 1.42 2022/06/29 07:53:00 tb Exp $ */ | 1 | /* $OpenBSD: ssl_sigalgs.c,v 1.43 2022/06/29 07:53:58 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2018-2020 Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2018-2020 Bob Beck <beck@openbsd.org> |
4 | * Copyright (c) 2021 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2021 Joel Sing <jsing@openbsd.org> |
@@ -241,11 +241,13 @@ ssl_sigalg_from_value(SSL *s, uint16_t value) | |||
241 | } | 241 | } |
242 | 242 | ||
243 | int | 243 | int |
244 | ssl_sigalgs_build(uint16_t tls_version, CBB *cbb) | 244 | ssl_sigalgs_build(uint16_t tls_version, CBB *cbb, int security_level) |
245 | { | 245 | { |
246 | const struct ssl_sigalg *sigalg; | ||
246 | const uint16_t *values; | 247 | const uint16_t *values; |
247 | size_t len; | 248 | size_t len; |
248 | size_t i; | 249 | size_t i; |
250 | int ret = 0; | ||
249 | 251 | ||
250 | ssl_sigalgs_for_version(tls_version, &values, &len); | 252 | ssl_sigalgs_for_version(tls_version, &values, &len); |
251 | 253 | ||
@@ -254,12 +256,17 @@ ssl_sigalgs_build(uint16_t tls_version, CBB *cbb) | |||
254 | /* Do not allow the legacy value for < 1.2 to be used. */ | 256 | /* Do not allow the legacy value for < 1.2 to be used. */ |
255 | if (values[i] == SIGALG_RSA_PKCS1_MD5_SHA1) | 257 | if (values[i] == SIGALG_RSA_PKCS1_MD5_SHA1) |
256 | return 0; | 258 | return 0; |
257 | if (ssl_sigalg_lookup(values[i]) == NULL) | 259 | if ((sigalg = ssl_sigalg_lookup(values[i])) == NULL) |
258 | return 0; | 260 | return 0; |
261 | if (sigalg->security_level < security_level) | ||
262 | continue; | ||
263 | |||
259 | if (!CBB_add_u16(cbb, values[i])) | 264 | if (!CBB_add_u16(cbb, values[i])) |
260 | return 0; | 265 | return 0; |
266 | |||
267 | ret = 1; | ||
261 | } | 268 | } |
262 | return 1; | 269 | return ret; |
263 | } | 270 | } |
264 | 271 | ||
265 | static const struct ssl_sigalg * | 272 | static const struct ssl_sigalg * |