summaryrefslogtreecommitdiff
path: root/src/lib/libssl/tls13_key_share.c
diff options
context:
space:
mode:
authorjsing <>2020-04-17 17:16:53 +0000
committerjsing <>2020-04-17 17:16:53 +0000
commit295bf02f8211b77feb0bc6963c1b7ec49122ce18 (patch)
tree6980ad850639ce4d604770bdc22972d3796629db /src/lib/libssl/tls13_key_share.c
parent08ce53d34d4a31ffea547e7c058abeb9c77d0835 (diff)
downloadopenbsd-295bf02f8211b77feb0bc6963c1b7ec49122ce18.tar.gz
openbsd-295bf02f8211b77feb0bc6963c1b7ec49122ce18.tar.bz2
openbsd-295bf02f8211b77feb0bc6963c1b7ec49122ce18.zip
Generate client key share using our preferred group.
Generate a client key share using our preferred group, rather than always using X25519. This means that the key share group can be controlled via SSL{_CTX,}_set1_groups() and SSL{_CTX,}_set1_groups_list(). ok beck@
Diffstat (limited to 'src/lib/libssl/tls13_key_share.c')
-rw-r--r--src/lib/libssl/tls13_key_share.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/lib/libssl/tls13_key_share.c b/src/lib/libssl/tls13_key_share.c
index c38a3e3cb8..5404c04070 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.3 2020/02/04 18:06:26 jsing Exp $ */ 1/* $OpenBSD: tls13_key_share.c,v 1.4 2020/04/17 17:16:53 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2020 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -36,24 +36,32 @@ struct tls13_key_share {
36}; 36};
37 37
38struct tls13_key_share * 38struct tls13_key_share *
39tls13_key_share_new(int nid) 39tls13_key_share_new(uint16_t group_id)
40{ 40{
41 struct tls13_key_share *ks; 41 struct tls13_key_share *ks;
42 int nid;
42 43
43 if ((ks = calloc(1, sizeof(struct tls13_key_share))) == NULL) 44 if ((nid = tls1_ec_curve_id2nid(group_id)) == 0)
44 goto err; 45 return NULL;
45 46
46 if ((ks->group_id = tls1_ec_nid2curve_id(nid)) == 0) 47 if ((ks = calloc(1, sizeof(struct tls13_key_share))) == NULL)
47 goto err; 48 return NULL;
48 49
50 ks->group_id = group_id;
49 ks->nid = nid; 51 ks->nid = nid;
50 52
51 return ks; 53 return ks;
54}
52 55
53 err: 56struct tls13_key_share *
54 tls13_key_share_free(ks); 57tls13_key_share_new_nid(int nid)
58{
59 uint16_t group_id;
60
61 if ((group_id = tls1_ec_nid2curve_id(nid)) == 0)
62 return NULL;
55 63
56 return NULL; 64 return tls13_key_share_new(group_id);
57} 65}
58 66
59void 67void