]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libssl/man/SSL_read.3
Regen amd64 assembly files for OpenSSL 1.1.1.
[FreeBSD/FreeBSD.git] / secure / lib / libssl / man / SSL_read.3
1 .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
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 .if !\nF .nr F 0
58 .if \nF>0 \{\
59 .    de IX
60 .    tm Index:\\$1\t\\n%\t"\\$2"
61 ..
62 .    if !\nF==2 \{\
63 .        nr % 0
64 .        nr F 2
65 .    \}
66 .\}
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "SSL_read 3"
132 .TH SSL_read 3 "2018-08-14" "1.0.2p" "OpenSSL"
133 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
134 .\" way too many mistakes in technical documents.
135 .if n .ad l
136 .nh
137 .SH "NAME"
138 SSL_read \- read bytes from a TLS/SSL connection.
139 .SH "SYNOPSIS"
140 .IX Header "SYNOPSIS"
141 .Vb 1
142 \& #include <openssl/ssl.h>
143 \&
144 \& int SSL_read(SSL *ssl, void *buf, int num);
145 .Ve
146 .SH "DESCRIPTION"
147 .IX Header "DESCRIPTION"
148 \&\fISSL_read()\fR tries to read \fBnum\fR bytes from the specified \fBssl\fR into the
149 buffer \fBbuf\fR.
150 .SH "NOTES"
151 .IX Header "NOTES"
152 If necessary, \fISSL_read()\fR will negotiate a \s-1TLS/SSL\s0 session, if
153 not already explicitly performed by \fISSL_connect\fR\|(3) or
154 \&\fISSL_accept\fR\|(3). If the
155 peer requests a re-negotiation, it will be performed transparently during
156 the \fISSL_read()\fR operation. The behaviour of \fISSL_read()\fR depends on the
157 underlying \s-1BIO.\s0
158 .PP
159 For the transparent negotiation to succeed, the \fBssl\fR must have been
160 initialized to client or server mode. This is being done by calling
161 \&\fISSL_set_connect_state\fR\|(3) or \fISSL_set_accept_state()\fR
162 before the first call to an \fISSL_read()\fR or \fISSL_write\fR\|(3)
163 function.
164 .PP
165 \&\fISSL_read()\fR works based on the \s-1SSL/TLS\s0 records. The data are received in
166 records (with a maximum record size of 16kB for SSLv3/TLSv1). Only when a
167 record has been completely received, it can be processed (decryption and
168 check of integrity). Therefore data that was not retrieved at the last
169 call of \fISSL_read()\fR can still be buffered inside the \s-1SSL\s0 layer and will be
170 retrieved on the next call to \fISSL_read()\fR. If \fBnum\fR is higher than the
171 number of bytes buffered, \fISSL_read()\fR will return with the bytes buffered.
172 If no more bytes are in the buffer, \fISSL_read()\fR will trigger the processing
173 of the next record. Only when the record has been received and processed
174 completely, \fISSL_read()\fR will return reporting success. At most the contents
175 of the record will be returned. As the size of an \s-1SSL/TLS\s0 record may exceed
176 the maximum packet size of the underlying transport (e.g. \s-1TCP\s0), it may
177 be necessary to read several packets from the transport layer before the
178 record is complete and \fISSL_read()\fR can succeed.
179 .PP
180 If the underlying \s-1BIO\s0 is \fBblocking\fR, \fISSL_read()\fR will only return, once the
181 read operation has been finished or an error occurred, except when a
182 renegotiation take place, in which case a \s-1SSL_ERROR_WANT_READ\s0 may occur. 
183 This behaviour can be controlled with the \s-1SSL_MODE_AUTO_RETRY\s0 flag of the
184 \&\fISSL_CTX_set_mode\fR\|(3) call.
185 .PP
186 If the underlying \s-1BIO\s0 is \fBnon-blocking\fR, \fISSL_read()\fR will also return
187 when the underlying \s-1BIO\s0 could not satisfy the needs of \fISSL_read()\fR
188 to continue the operation. In this case a call to
189 \&\fISSL_get_error\fR\|(3) with the
190 return value of \fISSL_read()\fR will yield \fB\s-1SSL_ERROR_WANT_READ\s0\fR or
191 \&\fB\s-1SSL_ERROR_WANT_WRITE\s0\fR. As at any time a re-negotiation is possible, a
192 call to \fISSL_read()\fR can also cause write operations! The calling process
193 then must repeat the call after taking appropriate action to satisfy the
194 needs of \fISSL_read()\fR. The action depends on the underlying \s-1BIO.\s0 When using a
195 non-blocking socket, nothing is to be done, but \fIselect()\fR can be used to check
196 for the required condition. When using a buffering \s-1BIO,\s0 like a \s-1BIO\s0 pair, data
197 must be written into or retrieved out of the \s-1BIO\s0 before being able to continue.
198 .PP
199 \&\fISSL_pending\fR\|(3) can be used to find out whether there
200 are buffered bytes available for immediate retrieval. In this case
201 \&\fISSL_read()\fR can be called without blocking or actually receiving new
202 data from the underlying socket.
203 .SH "WARNING"
204 .IX Header "WARNING"
205 When an \fISSL_read()\fR operation has to be repeated because of
206 \&\fB\s-1SSL_ERROR_WANT_READ\s0\fR or \fB\s-1SSL_ERROR_WANT_WRITE\s0\fR, it must be repeated
207 with the same arguments.
208 .SH "RETURN VALUES"
209 .IX Header "RETURN VALUES"
210 The following return values can occur:
211 .IP "> 0" 4
212 .IX Item "> 0"
213 The read operation was successful.
214 The return value is the number of bytes actually read from the \s-1TLS/SSL\s0
215 connection.
216 .IP "<= 0" 4
217 .IX Item "<= 0"
218 .PD 0
219 .IP "<0" 4
220 .IX Item "<0"
221 .PD
222 The read operation was not successful, because either the connection was closed,
223 an error occurred or action must be taken by the calling process.
224 Call \fISSL_get_error\fR\|(3) with the return value \fBret\fR to find out the reason.
225 .Sp
226 SSLv2 (deprecated) does not support a shutdown alert protocol, so it can
227 only be detected, whether the underlying connection was closed. It cannot
228 be checked, whether the closure was initiated by the peer or by something
229 else.
230 .Sp
231 Old documentation indicated a difference between 0 and \-1, and that \-1 was
232 retryable.
233 You should instead call \fISSL_get_error()\fR to find out if it's retryable.
234 .SH "SEE ALSO"
235 .IX Header "SEE ALSO"
236 \&\fISSL_get_error\fR\|(3), \fISSL_write\fR\|(3),
237 \&\fISSL_CTX_set_mode\fR\|(3), \fISSL_CTX_new\fR\|(3),
238 \&\fISSL_connect\fR\|(3), \fISSL_accept\fR\|(3)
239 \&\fISSL_set_connect_state\fR\|(3),
240 \&\fISSL_pending\fR\|(3),
241 \&\fISSL_shutdown\fR\|(3), \fISSL_set_shutdown\fR\|(3),
242 \&\fIssl\fR\|(3), \fIbio\fR\|(3)