diff options
| author | tb <> | 2022-06-29 07:53:58 +0000 |
|---|---|---|
| committer | tb <> | 2022-06-29 07:53:58 +0000 |
| commit | a1086276b4c8f8d8939172bf6629c0b903a7ceae (patch) | |
| tree | 594c4dd3136308d7d86b9e285e5fb25707f9d3f1 /src/lib/libssl/ssl_sigalgs.c | |
| parent | 0275009912e8916a8f6207901326206fba58328d (diff) | |
| download | openbsd-a1086276b4c8f8d8939172bf6629c0b903a7ceae.tar.gz openbsd-a1086276b4c8f8d8939172bf6629c0b903a7ceae.tar.bz2 openbsd-a1086276b4c8f8d8939172bf6629c0b903a7ceae.zip | |
Check the security level when building sigalgs
ok beck jsing
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 * |
