summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_sigalgs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_sigalgs.c')
-rw-r--r--src/lib/libssl/ssl_sigalgs.c15
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
243int 243int
244ssl_sigalgs_build(uint16_t tls_version, CBB *cbb) 244ssl_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
265static const struct ssl_sigalg * 272static const struct ssl_sigalg *