SSL_want.3ossl 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
  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_WANT 3ossl"
  136. .TH SSL_WANT 3ossl "2024-09-03" "3.3.2" "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_want, SSL_want_nothing, SSL_want_read, SSL_want_write,
  143. SSL_want_x509_lookup, SSL_want_retry_verify, SSL_want_async, SSL_want_async_job,
  144. SSL_want_client_hello_cb \- obtain state information TLS/SSL I/O operation
  145. .SH "SYNOPSIS"
  146. .IX Header "SYNOPSIS"
  147. .Vb 1
  148. \& #include <openssl/ssl.h>
  149. \&
  150. \& int SSL_want(const SSL *ssl);
  151. \& int SSL_want_nothing(const SSL *ssl);
  152. \& int SSL_want_read(const SSL *ssl);
  153. \& int SSL_want_write(const SSL *ssl);
  154. \& int SSL_want_x509_lookup(const SSL *ssl);
  155. \& int SSL_want_retry_verify(const SSL *ssl);
  156. \& int SSL_want_async(const SSL *ssl);
  157. \& int SSL_want_async_job(const SSL *ssl);
  158. \& int SSL_want_client_hello_cb(const SSL *ssl);
  159. .Ve
  160. .SH "DESCRIPTION"
  161. .IX Header "DESCRIPTION"
  162. \&\fBSSL_want()\fR returns state information for the \s-1SSL\s0 object \fBssl\fR.
  163. .PP
  164. The other SSL_want_*() calls are shortcuts for the possible states returned
  165. by \fBSSL_want()\fR.
  166. .SH "NOTES"
  167. .IX Header "NOTES"
  168. \&\fBSSL_want()\fR examines the internal state information of the \s-1SSL\s0 object. Its
  169. return values are similar to that of \fBSSL_get_error\fR\|(3).
  170. Unlike \fBSSL_get_error\fR\|(3), which also evaluates the
  171. error queue, the results are obtained by examining an internal state flag
  172. only. The information must therefore only be used for normal operation under
  173. nonblocking I/O. Error conditions are not handled and must be treated
  174. using \fBSSL_get_error\fR\|(3).
  175. .PP
  176. The result returned by \fBSSL_want()\fR should always be consistent with
  177. the result of \fBSSL_get_error\fR\|(3).
  178. .SH "RETURN VALUES"
  179. .IX Header "RETURN VALUES"
  180. The following return values can currently occur for \fBSSL_want()\fR:
  181. .IP "\s-1SSL_NOTHING\s0" 4
  182. .IX Item "SSL_NOTHING"
  183. There is no data to be written or to be read.
  184. .IP "\s-1SSL_WRITING\s0" 4
  185. .IX Item "SSL_WRITING"
  186. There are data in the \s-1SSL\s0 buffer that must be written to the underlying
  187. \&\fB\s-1BIO\s0\fR layer in order to complete the actual SSL_*() operation.
  188. A call to \fBSSL_get_error\fR\|(3) should return \fB\s-1SSL_ERROR_WANT_WRITE\s0\fR.
  189. .IP "\s-1SSL_READING\s0" 4
  190. .IX Item "SSL_READING"
  191. More data must be read from the underlying \fB\s-1BIO\s0\fR layer in order to
  192. complete the actual SSL_*() operation.
  193. A call to \fBSSL_get_error\fR\|(3) should return \fB\s-1SSL_ERROR_WANT_READ\s0\fR.
  194. .IP "\s-1SSL_X509_LOOKUP\s0" 4
  195. .IX Item "SSL_X509_LOOKUP"
  196. The operation did not complete because an application callback set by
  197. \&\fBSSL_CTX_set_client_cert_cb()\fR has asked to be called again.
  198. A call to \fBSSL_get_error\fR\|(3) should return \fB\s-1SSL_ERROR_WANT_X509_LOOKUP\s0\fR.
  199. .IP "\s-1SSL_RETRY_VERIFY\s0" 4
  200. .IX Item "SSL_RETRY_VERIFY"
  201. The operation did not complete because a certificate verification callback
  202. has asked to be called again via \fBSSL_set_retry_verify\fR\|(3).
  203. A call to \fBSSL_get_error\fR\|(3) should return \fB\s-1SSL_ERROR_WANT_RETRY_VERIFY\s0\fR.
  204. .IP "\s-1SSL_ASYNC_PAUSED\s0" 4
  205. .IX Item "SSL_ASYNC_PAUSED"
  206. An asynchronous operation partially completed and was then paused. See
  207. \&\fBSSL_get_all_async_fds\fR\|(3). A call to \fBSSL_get_error\fR\|(3) should return
  208. \&\fB\s-1SSL_ERROR_WANT_ASYNC\s0\fR.
  209. .IP "\s-1SSL_ASYNC_NO_JOBS\s0" 4
  210. .IX Item "SSL_ASYNC_NO_JOBS"
  211. The asynchronous job could not be started because there were no async jobs
  212. available in the pool (see \fBASYNC_init_thread\fR\|(3)). A call to \fBSSL_get_error\fR\|(3)
  213. should return \fB\s-1SSL_ERROR_WANT_ASYNC_JOB\s0\fR.
  214. .IP "\s-1SSL_CLIENT_HELLO_CB\s0" 4
  215. .IX Item "SSL_CLIENT_HELLO_CB"
  216. The operation did not complete because an application callback set by
  217. \&\fBSSL_CTX_set_client_hello_cb()\fR has asked to be called again.
  218. A call to \fBSSL_get_error\fR\|(3) should return \fB\s-1SSL_ERROR_WANT_CLIENT_HELLO_CB\s0\fR.
  219. .PP
  220. \&\fBSSL_want_nothing()\fR, \fBSSL_want_read()\fR, \fBSSL_want_write()\fR,
  221. \&\fBSSL_want_x509_lookup()\fR, \fBSSL_want_retry_verify()\fR,
  222. \&\fBSSL_want_async()\fR, \fBSSL_want_async_job()\fR, and \fBSSL_want_client_hello_cb()\fR
  223. return 1 when the corresponding condition is true or 0 otherwise.
  224. .SH "QUIC-SPECIFIC CONSIDERATIONS"
  225. .IX Header "QUIC-SPECIFIC CONSIDERATIONS"
  226. For \s-1QUIC,\s0 these functions relate only to the \s-1TLS\s0 handshake layer.
  227. .SH "SEE ALSO"
  228. .IX Header "SEE ALSO"
  229. \&\fBssl\fR\|(7), \fBSSL_get_error\fR\|(3)
  230. .SH "HISTORY"
  231. .IX Header "HISTORY"
  232. The \fBSSL_want_client_hello_cb()\fR function and the \s-1SSL_CLIENT_HELLO_CB\s0 return value
  233. were added in OpenSSL 1.1.1.
  234. .SH "COPYRIGHT"
  235. .IX Header "COPYRIGHT"
  236. Copyright 2001\-2023 The OpenSSL Project Authors. All Rights Reserved.
  237. .PP
  238. Licensed under the Apache License 2.0 (the \*(L"License\*(R"). You may not use
  239. this file except in compliance with the License. You can obtain a copy
  240. in the file \s-1LICENSE\s0 in the source distribution or at
  241. <https://www.openssl.org/source/license.html>.