summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2021-06-29 19:36:14 +0000
committerjsing <>2021-06-29 19:36:14 +0000
commit6232f801a4c72cd960dca5f1378d66fe713b6f0c (patch)
tree02a4455bea5704a29e06d35a80fbde49dc9b5d35 /src
parent55dedc1f6860ad63e772dc15b0e2ee0a480651f1 (diff)
downloadopenbsd-6232f801a4c72cd960dca5f1378d66fe713b6f0c.tar.gz
openbsd-6232f801a4c72cd960dca5f1378d66fe713b6f0c.tar.bz2
openbsd-6232f801a4c72cd960dca5f1378d66fe713b6f0c.zip
Pull up and dedup the TLS version check in ssl_sigalg_pkey_ok().
Suggested by tb@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_sigalgs.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/lib/libssl/ssl_sigalgs.c b/src/lib/libssl/ssl_sigalgs.c
index 619ba57f0d..765f39d4a9 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.36 2021/06/29 19:33:46 jsing Exp $ */ 1/* $OpenBSD: ssl_sigalgs.c,v 1.37 2021/06/29 19:36:14 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>
@@ -277,15 +277,16 @@ ssl_sigalg_pkey_ok(SSL *s, const struct ssl_sigalg *sigalg, EVP_PKEY *pkey)
277 return 0; 277 return 0;
278 } 278 }
279 279
280 if (S3I(s)->hs.negotiated_tls_version < TLS1_3_VERSION)
281 return 1;
282
280 /* RSA cannot be used without PSS in TLSv1.3. */ 283 /* RSA cannot be used without PSS in TLSv1.3. */
281 if (S3I(s)->hs.negotiated_tls_version >= TLS1_3_VERSION && 284 if (sigalg->key_type == EVP_PKEY_RSA &&
282 sigalg->key_type == EVP_PKEY_RSA &&
283 (sigalg->flags & SIGALG_FLAG_RSA_PSS) == 0) 285 (sigalg->flags & SIGALG_FLAG_RSA_PSS) == 0)
284 return 0; 286 return 0;
285 287
286 /* Ensure that curve matches for EC keys. */ 288 /* Ensure that curve matches for EC keys. */
287 if (S3I(s)->hs.negotiated_tls_version >= TLS1_3_VERSION && 289 if (pkey->type == EVP_PKEY_EC) {
288 pkey->type == EVP_PKEY_EC) {
289 if (sigalg->curve_nid == 0) 290 if (sigalg->curve_nid == 0)
290 return 0; 291 return 0;
291 if (EC_GROUP_get_curve_name(EC_KEY_get0_group( 292 if (EC_GROUP_get_curve_name(EC_KEY_get0_group(