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