1*9b1b080bSschwarze.\"	$OpenBSD: SSL_CTX_set1_groups.3,v 1.1 2017/08/12 14:09:34 schwarze Exp $
2*9b1b080bSschwarze.\"	OpenSSL SSL_CTX_set1_curves.pod de4d764e Nov 9 14:51:06 2016 +0000
3*9b1b080bSschwarze.\"
4*9b1b080bSschwarze.\" This file was written by Dr. Stephen Henson <steve@openssl.org>.
5*9b1b080bSschwarze.\" Copyright (c) 2013, 2014, 2016 The OpenSSL Project.  All rights reserved.
6*9b1b080bSschwarze.\"
7*9b1b080bSschwarze.\" Redistribution and use in source and binary forms, with or without
8*9b1b080bSschwarze.\" modification, are permitted provided that the following conditions
9*9b1b080bSschwarze.\" are met:
10*9b1b080bSschwarze.\"
11*9b1b080bSschwarze.\" 1. Redistributions of source code must retain the above copyright
12*9b1b080bSschwarze.\"    notice, this list of conditions and the following disclaimer.
13*9b1b080bSschwarze.\"
14*9b1b080bSschwarze.\" 2. Redistributions in binary form must reproduce the above copyright
15*9b1b080bSschwarze.\"    notice, this list of conditions and the following disclaimer in
16*9b1b080bSschwarze.\"    the documentation and/or other materials provided with the
17*9b1b080bSschwarze.\"    distribution.
18*9b1b080bSschwarze.\"
19*9b1b080bSschwarze.\" 3. All advertising materials mentioning features or use of this
20*9b1b080bSschwarze.\"    software must display the following acknowledgment:
21*9b1b080bSschwarze.\"    "This product includes software developed by the OpenSSL Project
22*9b1b080bSschwarze.\"    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
23*9b1b080bSschwarze.\"
24*9b1b080bSschwarze.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
25*9b1b080bSschwarze.\"    endorse or promote products derived from this software without
26*9b1b080bSschwarze.\"    prior written permission. For written permission, please contact
27*9b1b080bSschwarze.\"    openssl-core@openssl.org.
28*9b1b080bSschwarze.\"
29*9b1b080bSschwarze.\" 5. Products derived from this software may not be called "OpenSSL"
30*9b1b080bSschwarze.\"    nor may "OpenSSL" appear in their names without prior written
31*9b1b080bSschwarze.\"    permission of the OpenSSL Project.
32*9b1b080bSschwarze.\"
33*9b1b080bSschwarze.\" 6. Redistributions of any form whatsoever must retain the following
34*9b1b080bSschwarze.\"    acknowledgment:
35*9b1b080bSschwarze.\"    "This product includes software developed by the OpenSSL Project
36*9b1b080bSschwarze.\"    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
37*9b1b080bSschwarze.\"
38*9b1b080bSschwarze.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
39*9b1b080bSschwarze.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
40*9b1b080bSschwarze.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
41*9b1b080bSschwarze.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
42*9b1b080bSschwarze.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
43*9b1b080bSschwarze.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
44*9b1b080bSschwarze.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
45*9b1b080bSschwarze.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46*9b1b080bSschwarze.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
47*9b1b080bSschwarze.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48*9b1b080bSschwarze.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
49*9b1b080bSschwarze.\" OF THE POSSIBILITY OF SUCH DAMAGE.
50*9b1b080bSschwarze.\"
51*9b1b080bSschwarze.Dd $Mdocdate: August 12 2017 $
52*9b1b080bSschwarze.Dt SSL_CTX_SET1_GROUPS 3
53*9b1b080bSschwarze.Os
54*9b1b080bSschwarze.Sh NAME
55*9b1b080bSschwarze.Nm SSL_CTX_set1_groups ,
56*9b1b080bSschwarze.Nm SSL_CTX_set1_groups_list ,
57*9b1b080bSschwarze.Nm SSL_set1_groups ,
58*9b1b080bSschwarze.Nm SSL_set1_groups_list ,
59*9b1b080bSschwarze.Nm SSL_CTX_set1_curves ,
60*9b1b080bSschwarze.Nm SSL_CTX_set1_curves_list ,
61*9b1b080bSschwarze.Nm SSL_set1_curves ,
62*9b1b080bSschwarze.Nm SSL_set1_curves_list
63*9b1b080bSschwarze.Nd choose supported EC groups
64*9b1b080bSschwarze.Sh SYNOPSIS
65*9b1b080bSschwarze.In openssl/ssl.h
66*9b1b080bSschwarze.Ft int
67*9b1b080bSschwarze.Fo SSL_CTX_set1_groups
68*9b1b080bSschwarze.Fa "SSL_CTX *ctx"
69*9b1b080bSschwarze.Fa "const int *glist"
70*9b1b080bSschwarze.Fa "size_t glistlen"
71*9b1b080bSschwarze.Fc
72*9b1b080bSschwarze.Ft int
73*9b1b080bSschwarze.Fo SSL_CTX_set1_groups_list
74*9b1b080bSschwarze.Fa "SSL_CTX *ctx"
75*9b1b080bSschwarze.Fa "const char *list"
76*9b1b080bSschwarze.Fc
77*9b1b080bSschwarze.Ft int
78*9b1b080bSschwarze.Fo SSL_set1_groups
79*9b1b080bSschwarze.Fa "SSL *ssl"
80*9b1b080bSschwarze.Fa "const int *glist"
81*9b1b080bSschwarze.Fa "size_t glistlen"
82*9b1b080bSschwarze.Fc
83*9b1b080bSschwarze.Ft int
84*9b1b080bSschwarze.Fo SSL_set1_groups_list
85*9b1b080bSschwarze.Fa "SSL *ssl"
86*9b1b080bSschwarze.Fa "const char *list"
87*9b1b080bSschwarze.Fc
88*9b1b080bSschwarze.Ft int
89*9b1b080bSschwarze.Fo SSL_CTX_set1_curves
90*9b1b080bSschwarze.Fa "SSL_CTX *ctx"
91*9b1b080bSschwarze.Fa "const int *clist"
92*9b1b080bSschwarze.Fa "size_t clistlen"
93*9b1b080bSschwarze.Fc
94*9b1b080bSschwarze.Ft int
95*9b1b080bSschwarze.Fo SSL_CTX_set1_curves_list
96*9b1b080bSschwarze.Fa "SSL_CTX *ctx"
97*9b1b080bSschwarze.Fa "const char *list"
98*9b1b080bSschwarze.Fc
99*9b1b080bSschwarze.Ft int
100*9b1b080bSschwarze.Fo SSL_set1_curves
101*9b1b080bSschwarze.Fa "SSL *ssl"
102*9b1b080bSschwarze.Fa "const int *clist"
103*9b1b080bSschwarze.Fa "size_t clistlen"
104*9b1b080bSschwarze.Fc
105*9b1b080bSschwarze.Ft int
106*9b1b080bSschwarze.Fo SSL_set1_curves_list
107*9b1b080bSschwarze.Fa "SSL *ssl"
108*9b1b080bSschwarze.Fa "const char *list"
109*9b1b080bSschwarze.Fc
110*9b1b080bSschwarze.Sh DESCRIPTION
111*9b1b080bSschwarze.Fn SSL_CTX_set1_groups
112*9b1b080bSschwarzesets the supported groups for
113*9b1b080bSschwarze.Fa ctx
114*9b1b080bSschwarzeto the
115*9b1b080bSschwarze.Fa glistlen
116*9b1b080bSschwarzegroups in the array
117*9b1b080bSschwarze.Fa glist .
118*9b1b080bSschwarzeThe array consist of group NIDs in preference order.
119*9b1b080bSschwarzeFor a TLS client, the groups are used directly in the supported groups
120*9b1b080bSschwarzeextension.
121*9b1b080bSschwarzeFor a TLS server, the groups are used to determine the set of shared
122*9b1b080bSschwarzegroups.
123*9b1b080bSschwarze.Pp
124*9b1b080bSschwarze.Fn SSL_CTX_set1_groups_list
125*9b1b080bSschwarzesets the supported groups for
126*9b1b080bSschwarze.Fa ctx
127*9b1b080bSschwarzeto the
128*9b1b080bSschwarze.Fa list
129*9b1b080bSschwarzerepresented as a colon separated list of group NIDs or names, for example
130*9b1b080bSschwarze"P-521:P-384:P-256".
131*9b1b080bSschwarze.Pp
132*9b1b080bSschwarze.Fn SSL_set1_groups
133*9b1b080bSschwarzeand
134*9b1b080bSschwarze.Fn SSL_set1_groups_list
135*9b1b080bSschwarzeare similar except that they set supported groups for the SSL structure
136*9b1b080bSschwarze.Fa ssl
137*9b1b080bSschwarzeonly.
138*9b1b080bSschwarze.Pp
139*9b1b080bSschwarzeThe curve functions are deprecated synonyms for the equivalently
140*9b1b080bSschwarzenamed group functions and are identical in every respect except
141*9b1b080bSschwarzethat they are implemented as macros.
142*9b1b080bSschwarzeThey exist because prior to TLS1.3, there was only the concept of
143*9b1b080bSschwarzesupported curves.
144*9b1b080bSschwarzeIn TLS1.3, this was renamed to supported groups and extended to include
145*9b1b080bSschwarzeDiffie Hellman groups.
146*9b1b080bSschwarze.Pp
147*9b1b080bSschwarzeIf an application wishes to make use of several of these functions for
148*9b1b080bSschwarzeconfiguration purposes either on a command line or in a file, it should
149*9b1b080bSschwarzeconsider using the SSL_CONF interface instead of manually parsing
150*9b1b080bSschwarzeoptions.
151*9b1b080bSschwarze.Sh RETURN VALUES
152*9b1b080bSschwarzeAll these functions return 1 for success or 0 for failure.
153*9b1b080bSschwarze.Sh SEE ALSO
154*9b1b080bSschwarze.Xr ssl 3 ,
155*9b1b080bSschwarze.Xr SSL_CTX_add_extra_chain_cert 3 ,
156*9b1b080bSschwarze.Xr SSL_CTX_set_cipher_list 3 ,
157*9b1b080bSschwarze.Xr SSL_CTX_set_options 3 ,
158*9b1b080bSschwarze.Xr SSL_new 3
159*9b1b080bSschwarze.Sh HISTORY
160*9b1b080bSschwarzeThe curve functions first appeared in OpenSSL 1.0.2
161*9b1b080bSschwarzeand the group functions in OpenSSL 1.1.1.
162