diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libssl/s3_lib.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index 2726744357..e93298c2db 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s3_lib.c,v 1.236 2022/08/17 07:39:19 jsing Exp $ */ | 1 | /* $OpenBSD: s3_lib.c,v 1.237 2022/08/17 18:51:47 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 | * |
@@ -1656,6 +1656,39 @@ ssl3_clear(SSL *s) | |||
1656 | } | 1656 | } |
1657 | 1657 | ||
1658 | long | 1658 | long |
1659 | _SSL_get_shared_group(SSL *s, long n) | ||
1660 | { | ||
1661 | size_t count; | ||
1662 | int nid; | ||
1663 | |||
1664 | /* OpenSSL document that they return -1 for clients. They return 0. */ | ||
1665 | if (!s->server) | ||
1666 | return 0; | ||
1667 | |||
1668 | if (n == -1) { | ||
1669 | if (!tls1_count_shared_groups(s, &count)) | ||
1670 | return 0; | ||
1671 | |||
1672 | if (count > LONG_MAX) | ||
1673 | count = LONG_MAX; | ||
1674 | |||
1675 | return count; | ||
1676 | } | ||
1677 | |||
1678 | /* Undocumented special case added for Suite B profile support. */ | ||
1679 | if (n == -2) | ||
1680 | n = 0; | ||
1681 | |||
1682 | if (n < 0) | ||
1683 | return 0; | ||
1684 | |||
1685 | if (!tls1_get_shared_group_by_index(s, n, &nid)) | ||
1686 | return NID_undef; | ||
1687 | |||
1688 | return nid; | ||
1689 | } | ||
1690 | |||
1691 | long | ||
1659 | _SSL_get_peer_tmp_key(SSL *s, EVP_PKEY **key) | 1692 | _SSL_get_peer_tmp_key(SSL *s, EVP_PKEY **key) |
1660 | { | 1693 | { |
1661 | EVP_PKEY *pkey = NULL; | 1694 | EVP_PKEY *pkey = NULL; |
@@ -2075,6 +2108,9 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
2075 | case SSL_CTRL_SET_GROUPS_LIST: | 2108 | case SSL_CTRL_SET_GROUPS_LIST: |
2076 | return SSL_set1_groups_list(s, parg); | 2109 | return SSL_set1_groups_list(s, parg); |
2077 | 2110 | ||
2111 | case SSL_CTRL_GET_SHARED_GROUP: | ||
2112 | return _SSL_get_shared_group(s, larg); | ||
2113 | |||
2078 | /* XXX - rename to SSL_CTRL_GET_PEER_TMP_KEY and remove server check. */ | 2114 | /* XXX - rename to SSL_CTRL_GET_PEER_TMP_KEY and remove server check. */ |
2079 | case SSL_CTRL_GET_SERVER_TMP_KEY: | 2115 | case SSL_CTRL_GET_SERVER_TMP_KEY: |
2080 | if (s->server != 0) | 2116 | if (s->server != 0) |