diff options
Diffstat (limited to 'src/lib/libssl/t1_lib.c')
| -rw-r--r-- | src/lib/libssl/t1_lib.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c index 912bea592a..9dfcc0c0f3 100644 --- a/src/lib/libssl/t1_lib.c +++ b/src/lib/libssl/t1_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t1_lib.c,v 1.207 2025/12/04 21:16:17 beck Exp $ */ | 1 | /* $OpenBSD: t1_lib.c,v 1.209 2026/06/06 08:45:41 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -154,6 +154,7 @@ struct supported_group { | |||
| 154 | uint16_t group_id; | 154 | uint16_t group_id; |
| 155 | int nid; | 155 | int nid; |
| 156 | int bits; | 156 | int bits; |
| 157 | uint16_t min_version; | ||
| 157 | }; | 158 | }; |
| 158 | 159 | ||
| 159 | /* | 160 | /* |
| @@ -310,6 +311,7 @@ static const struct supported_group nid_list[] = { | |||
| 310 | .group_id = 4588, | 311 | .group_id = 4588, |
| 311 | .nid = NID_X25519MLKEM768, | 312 | .nid = NID_X25519MLKEM768, |
| 312 | .bits = 128, | 313 | .bits = 128, |
| 314 | .min_version = TLS1_3_VERSION, | ||
| 313 | }, | 315 | }, |
| 314 | }; | 316 | }; |
| 315 | 317 | ||
| @@ -512,6 +514,17 @@ tls1_group_id_present(uint16_t group_id, const uint16_t *list, size_t list_len) | |||
| 512 | return 0; | 514 | return 0; |
| 513 | } | 515 | } |
| 514 | 516 | ||
| 517 | static int | ||
| 518 | tls1_group_id_allowed(const SSL *ssl, uint16_t group_id) | ||
| 519 | { | ||
| 520 | const struct supported_group *sg; | ||
| 521 | |||
| 522 | if ((sg = tls1_supported_group_by_id(group_id)) == NULL) | ||
| 523 | return 0; | ||
| 524 | |||
| 525 | return ssl_effective_tls_version(ssl) >= sg->min_version; | ||
| 526 | } | ||
| 527 | |||
| 515 | int | 528 | int |
| 516 | tls1_count_shared_groups(const SSL *ssl, size_t *out_count) | 529 | tls1_count_shared_groups(const SSL *ssl, size_t *out_count) |
| 517 | { | 530 | { |
| @@ -529,6 +542,9 @@ tls1_count_shared_groups(const SSL *ssl, size_t *out_count) | |||
| 529 | if (!ssl_security_shared_group(ssl, pref[i])) | 542 | if (!ssl_security_shared_group(ssl, pref[i])) |
| 530 | continue; | 543 | continue; |
| 531 | 544 | ||
| 545 | if (!tls1_group_id_allowed(ssl, pref[i])) | ||
| 546 | continue; | ||
| 547 | |||
| 532 | count++; | 548 | count++; |
| 533 | } | 549 | } |
| 534 | 550 | ||
| @@ -555,6 +571,9 @@ tls1_group_by_index(const SSL *ssl, size_t n, int *out_nid, | |||
| 555 | if (!ssl_security_fn(ssl, pref[i])) | 571 | if (!ssl_security_fn(ssl, pref[i])) |
| 556 | continue; | 572 | continue; |
| 557 | 573 | ||
| 574 | if (!tls1_group_id_allowed(ssl, pref[i])) | ||
| 575 | continue; | ||
| 576 | |||
| 558 | if (count++ == n) | 577 | if (count++ == n) |
| 559 | return tls1_ec_group_id2nid(pref[i], out_nid); | 578 | return tls1_ec_group_id2nid(pref[i], out_nid); |
| 560 | } | 579 | } |
| @@ -659,6 +678,10 @@ tls1_check_group(SSL *s, uint16_t group_id) | |||
| 659 | for (i = 0; i < groupslen; i++) { | 678 | for (i = 0; i < groupslen; i++) { |
| 660 | if (!ssl_security_supported_group(s, groups[i])) | 679 | if (!ssl_security_supported_group(s, groups[i])) |
| 661 | continue; | 680 | continue; |
| 681 | |||
| 682 | if (!tls1_group_id_allowed(s, groups[i])) | ||
| 683 | continue; | ||
| 684 | |||
| 662 | if (groups[i] == group_id) | 685 | if (groups[i] == group_id) |
| 663 | return 1; | 686 | return 1; |
| 664 | } | 687 | } |
| @@ -788,7 +811,7 @@ int | |||
| 788 | ssl_check_clienthello_tlsext_late(SSL *s) | 811 | ssl_check_clienthello_tlsext_late(SSL *s) |
| 789 | { | 812 | { |
| 790 | int ret = SSL_TLSEXT_ERR_OK; | 813 | int ret = SSL_TLSEXT_ERR_OK; |
| 791 | int al = 0; /* XXX gcc3 */ | 814 | int al; |
| 792 | 815 | ||
| 793 | /* If status request then ask callback what to do. | 816 | /* If status request then ask callback what to do. |
| 794 | * Note: this must be called after servername callbacks in case | 817 | * Note: this must be called after servername callbacks in case |
