diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libssl/ssl_sigalgs.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/lib/libssl/ssl_sigalgs.c b/src/lib/libssl/ssl_sigalgs.c index f9788fb263..b503503105 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.34 2021/06/29 19:25:59 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_sigalgs.c,v 1.35 2021/06/29 19:29:16 jsing 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> |
| @@ -203,13 +203,14 @@ ssl_sigalg_lookup(uint16_t value) | |||
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | static const struct ssl_sigalg * | 205 | static const struct ssl_sigalg * |
| 206 | ssl_sigalg_from_value(uint16_t tls_version, uint16_t value) | 206 | ssl_sigalg_from_value(SSL *s, uint16_t value) |
| 207 | { | 207 | { |
| 208 | const uint16_t *values; | 208 | const uint16_t *values; |
| 209 | size_t len; | 209 | size_t len; |
| 210 | int i; | 210 | int i; |
| 211 | 211 | ||
| 212 | ssl_sigalgs_for_version(tls_version, &values, &len); | 212 | ssl_sigalgs_for_version(S3I(s)->hs.negotiated_tls_version, |
| 213 | &values, &len); | ||
| 213 | 214 | ||
| 214 | for (i = 0; i < len; i++) { | 215 | for (i = 0; i < len; i++) { |
| 215 | if (values[i] == value) | 216 | if (values[i] == value) |
| @@ -325,8 +326,7 @@ ssl_sigalg_select(SSL *s, EVP_PKEY *pkey) | |||
| 325 | if (!CBS_get_u16(&cbs, &sigalg_value)) | 326 | if (!CBS_get_u16(&cbs, &sigalg_value)) |
| 326 | return 0; | 327 | return 0; |
| 327 | 328 | ||
| 328 | if ((sigalg = ssl_sigalg_from_value( | 329 | if ((sigalg = ssl_sigalg_from_value(s, sigalg_value)) == NULL) |
| 329 | S3I(s)->hs.negotiated_tls_version, sigalg_value)) == NULL) | ||
| 330 | continue; | 330 | continue; |
| 331 | if (ssl_sigalg_pkey_ok(s, sigalg, pkey)) | 331 | if (ssl_sigalg_pkey_ok(s, sigalg, pkey)) |
| 332 | return sigalg; | 332 | return sigalg; |
| @@ -344,8 +344,7 @@ ssl_sigalg_for_peer(SSL *s, EVP_PKEY *pkey, uint16_t sigalg_value) | |||
| 344 | if (!SSL_USE_SIGALGS(s)) | 344 | if (!SSL_USE_SIGALGS(s)) |
| 345 | return ssl_sigalg_for_legacy(s, pkey); | 345 | return ssl_sigalg_for_legacy(s, pkey); |
| 346 | 346 | ||
| 347 | if ((sigalg = ssl_sigalg_from_value(S3I(s)->hs.negotiated_tls_version, | 347 | if ((sigalg = ssl_sigalg_from_value(s, sigalg_value)) == NULL) { |
| 348 | sigalg_value)) == NULL) { | ||
| 349 | SSLerror(s, SSL_R_UNKNOWN_DIGEST); | 348 | SSLerror(s, SSL_R_UNKNOWN_DIGEST); |
| 350 | return (NULL); | 349 | return (NULL); |
| 351 | } | 350 | } |
