diff options
Diffstat (limited to 'src/lib/libssl/tls13_key_share.c')
-rw-r--r-- | src/lib/libssl/tls13_key_share.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/lib/libssl/tls13_key_share.c b/src/lib/libssl/tls13_key_share.c index 58544dc1db..0d1c091462 100644 --- a/src/lib/libssl/tls13_key_share.c +++ b/src/lib/libssl/tls13_key_share.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_key_share.c,v 1.5 2020/04/18 13:43:47 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_key_share.c,v 1.6 2020/04/18 14:07:56 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -86,6 +86,22 @@ tls13_key_share_group(struct tls13_key_share *ks) | |||
86 | return ks->group_id; | 86 | return ks->group_id; |
87 | } | 87 | } |
88 | 88 | ||
89 | int | ||
90 | tls13_key_share_peer_pkey(struct tls13_key_share *ks, EVP_PKEY *pkey) | ||
91 | { | ||
92 | if (ks->nid == NID_X25519 && ks->x25519_peer_public != NULL) { | ||
93 | if (!ssl_kex_dummy_ecdhe_x25519(pkey)) | ||
94 | return 0; | ||
95 | } else if (ks->ecdhe_peer != NULL) { | ||
96 | if (!EVP_PKEY_set1_EC_KEY(pkey, ks->ecdhe_peer)) | ||
97 | return 0; | ||
98 | } else { | ||
99 | return 0; | ||
100 | } | ||
101 | |||
102 | return 1; | ||
103 | } | ||
104 | |||
89 | static int | 105 | static int |
90 | tls13_key_share_generate_ecdhe_ecp(struct tls13_key_share *ks) | 106 | tls13_key_share_generate_ecdhe_ecp(struct tls13_key_share *ks) |
91 | { | 107 | { |