]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/man3/SSL_export_keying_material.3
Merge OpenSSL 1.1.1i.
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / man3 / SSL_export_keying_material.3
1 .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.41)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is >0, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .nr rF 0
58 .if \n(.g .if rF .nr rF 1
59 .if (\n(rF:(\n(.g==0)) \{\
60 .    if \nF \{\
61 .        de IX
62 .        tm Index:\\$1\t\\n%\t"\\$2"
63 ..
64 .        if !\nF==2 \{\
65 .            nr % 0
66 .            nr F 2
67 .        \}
68 .    \}
69 .\}
70 .rr rF
71 .\"
72 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
73 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
74 .    \" fudge factors for nroff and troff
75 .if n \{\
76 .    ds #H 0
77 .    ds #V .8m
78 .    ds #F .3m
79 .    ds #[ \f1
80 .    ds #] \fP
81 .\}
82 .if t \{\
83 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
84 .    ds #V .6m
85 .    ds #F 0
86 .    ds #[ \&
87 .    ds #] \&
88 .\}
89 .    \" simple accents for nroff and troff
90 .if n \{\
91 .    ds ' \&
92 .    ds ` \&
93 .    ds ^ \&
94 .    ds , \&
95 .    ds ~ ~
96 .    ds /
97 .\}
98 .if t \{\
99 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
100 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
101 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
102 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
103 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
104 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
105 .\}
106 .    \" troff and (daisy-wheel) nroff accents
107 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
108 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
109 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
110 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
111 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
112 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
113 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
114 .ds ae a\h'-(\w'a'u*4/10)'e
115 .ds Ae A\h'-(\w'A'u*4/10)'E
116 .    \" corrections for vroff
117 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
118 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
119 .    \" for low resolution devices (crt and lpr)
120 .if \n(.H>23 .if \n(.V>19 \
121 \{\
122 .    ds : e
123 .    ds 8 ss
124 .    ds o a
125 .    ds d- d\h'-1'\(ga
126 .    ds D- D\h'-1'\(hy
127 .    ds th \o'bp'
128 .    ds Th \o'LP'
129 .    ds ae ae
130 .    ds Ae AE
131 .\}
132 .rm #[ #] #H #V #F C
133 .\" ========================================================================
134 .\"
135 .IX Title "SSL_EXPORT_KEYING_MATERIAL 3"
136 .TH SSL_EXPORT_KEYING_MATERIAL 3 "2020-12-08" "1.1.1i" "OpenSSL"
137 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
138 .\" way too many mistakes in technical documents.
139 .if n .ad l
140 .nh
141 .SH "NAME"
142 SSL_export_keying_material, SSL_export_keying_material_early \&\- obtain keying material for application use
143 .SH "SYNOPSIS"
144 .IX Header "SYNOPSIS"
145 .Vb 1
146 \& #include <openssl/ssl.h>
147 \&
148 \& int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen,
149 \&                                const char *label, size_t llen,
150 \&                                const unsigned char *context,
151 \&                                size_t contextlen, int use_context);
152 \&
153 \& int SSL_export_keying_material_early(SSL *s, unsigned char *out, size_t olen,
154 \&                                      const char *label, size_t llen,
155 \&                                      const unsigned char *context,
156 \&                                      size_t contextlen);
157 .Ve
158 .SH "DESCRIPTION"
159 .IX Header "DESCRIPTION"
160 During the creation of a \s-1TLS\s0 or \s-1DTLS\s0 connection shared keying material is
161 established between the two endpoints. The functions
162 \&\fBSSL_export_keying_material()\fR and \fBSSL_export_keying_material_early()\fR enable an
163 application to use some of this keying material for its own purposes in
164 accordance with \s-1RFC5705\s0 (for TLSv1.2 and below) or \s-1RFC8446\s0 (for TLSv1.3).
165 .PP
166 \&\fBSSL_export_keying_material()\fR derives keying material using
167 the \fIexporter_master_secret\fR established in the handshake.
168 .PP
169 \&\fBSSL_export_keying_material_early()\fR is only usable with TLSv1.3, and derives
170 keying material using the \fIearly_exporter_master_secret\fR (as defined in the
171 \&\s-1TLS 1.3 RFC\s0). For the client, the \fIearly_exporter_master_secret\fR is only
172 available when the client attempts to send 0\-RTT data. For the server, it is
173 only available when the server accepts 0\-RTT data.
174 .PP
175 An application may need to securely establish the context within which this
176 keying material will be used. For example this may include identifiers for the
177 application session, application algorithms or parameters, or the lifetime of
178 the context. The context value is left to the application but must be the same
179 on both sides of the communication.
180 .PP
181 For a given \s-1SSL\s0 connection \fBs\fR, \fBolen\fR bytes of data will be written to
182 \&\fBout\fR. The application specific context should be supplied in the location
183 pointed to by \fBcontext\fR and should be \fBcontextlen\fR bytes long. Provision of
184 a context is optional. If the context should be omitted entirely then
185 \&\fBuse_context\fR should be set to 0. Otherwise it should be any other value. If
186 \&\fBuse_context\fR is 0 then the values of \fBcontext\fR and \fBcontextlen\fR are ignored.
187 Note that in TLSv1.2 and below a zero length context is treated differently from
188 no context at all, and will result in different keying material being returned.
189 In TLSv1.3 a zero length context is that same as no context at all and will
190 result in the same keying material being returned.
191 .PP
192 An application specific label should be provided in the location pointed to by
193 \&\fBlabel\fR and should be \fBllen\fR bytes long. Typically this will be a value from
194 the \s-1IANA\s0 Exporter Label Registry
195 (<https://www.iana.org/assignments/tls\-parameters/tls\-parameters.xhtml#exporter\-labels>).
196 Alternatively labels beginning with \*(L"\s-1EXPERIMENTAL\*(R"\s0 are permitted by the standard
197 to be used without registration. TLSv1.3 imposes a maximum label length of
198 249 bytes.
199 .PP
200 Note that this function is only defined for TLSv1.0 and above, and DTLSv1.0 and
201 above. Attempting to use it in SSLv3 will result in an error.
202 .SH "RETURN VALUES"
203 .IX Header "RETURN VALUES"
204 \&\fBSSL_export_keying_material()\fR returns 0 or \-1 on failure or 1 on success.
205 .PP
206 \&\fBSSL_export_keying_material_early()\fR returns 0 on failure or 1 on success.
207 .SH "HISTORY"
208 .IX Header "HISTORY"
209 The \fBSSL_export_keying_material_early()\fR function was added in OpenSSL 1.1.1.
210 .SH "COPYRIGHT"
211 .IX Header "COPYRIGHT"
212 Copyright 2017\-2018 The OpenSSL Project Authors. All Rights Reserved.
213 .PP
214 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
215 this file except in compliance with the License.  You can obtain a copy
216 in the file \s-1LICENSE\s0 in the source distribution or at
217 <https://www.openssl.org/source/license.html>.