SSL_set_bio.3ossl 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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_SET_BIO 3ossl"
  136. .TH SSL_SET_BIO 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_set_bio, SSL_set0_rbio, SSL_set0_wbio \- connect the SSL object with a BIO
  143. .SH "SYNOPSIS"
  144. .IX Header "SYNOPSIS"
  145. .Vb 1
  146. \& #include <openssl/ssl.h>
  147. \&
  148. \& void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);
  149. \& void SSL_set0_rbio(SSL *s, BIO *rbio);
  150. \& void SSL_set0_wbio(SSL *s, BIO *wbio);
  151. .Ve
  152. .SH "DESCRIPTION"
  153. .IX Header "DESCRIPTION"
  154. \&\fBSSL_set0_rbio()\fR connects the \s-1BIO\s0 \fBrbio\fR for the read operations of the \fBssl\fR
  155. object. The \s-1SSL\s0 engine inherits the behaviour of \fBrbio\fR. If the \s-1BIO\s0 is
  156. nonblocking then the \fBssl\fR object will also have nonblocking behaviour. This
  157. function transfers ownership of \fBrbio\fR to \fBssl\fR. It will be automatically
  158. freed using \fBBIO_free_all\fR\|(3) when the \fBssl\fR is freed. On calling this
  159. function, any existing \fBrbio\fR that was previously set will also be freed via a
  160. call to \fBBIO_free_all\fR\|(3) (this includes the case where the \fBrbio\fR is set to
  161. the same value as previously).
  162. .PP
  163. \&\fBSSL_set0_wbio()\fR works in the same as \fBSSL_set0_rbio()\fR except that it connects
  164. the \s-1BIO\s0 \fBwbio\fR for the write operations of the \fBssl\fR object. Note that if the
  165. rbio and wbio are the same then \fBSSL_set0_rbio()\fR and \fBSSL_set0_wbio()\fR each take
  166. ownership of one reference. Therefore, it may be necessary to increment the
  167. number of references available using \fBBIO_up_ref\fR\|(3) before calling the set0
  168. functions.
  169. .PP
  170. \&\fBSSL_set_bio()\fR is similar to \fBSSL_set0_rbio()\fR and \fBSSL_set0_wbio()\fR except
  171. that it connects both the \fBrbio\fR and the \fBwbio\fR at the same time, and
  172. transfers the ownership of \fBrbio\fR and \fBwbio\fR to \fBssl\fR according to
  173. the following set of rules:
  174. .IP "\(bu" 2
  175. If neither the \fBrbio\fR or \fBwbio\fR have changed from their previous values
  176. then nothing is done.
  177. .IP "\(bu" 2
  178. If the \fBrbio\fR and \fBwbio\fR parameters are different and both are different
  179. to their
  180. previously set values then one reference is consumed for the rbio and one
  181. reference is consumed for the wbio.
  182. .IP "\(bu" 2
  183. If the \fBrbio\fR and \fBwbio\fR parameters are the same and the \fBrbio\fR is not
  184. the same as the previously set value then one reference is consumed.
  185. .IP "\(bu" 2
  186. If the \fBrbio\fR and \fBwbio\fR parameters are the same and the \fBrbio\fR is the
  187. same as the previously set value, then no additional references are consumed.
  188. .IP "\(bu" 2
  189. If the \fBrbio\fR and \fBwbio\fR parameters are different and the \fBrbio\fR is the
  190. same as the
  191. previously set value then one reference is consumed for the \fBwbio\fR and no
  192. references are consumed for the \fBrbio\fR.
  193. .IP "\(bu" 2
  194. If the \fBrbio\fR and \fBwbio\fR parameters are different and the \fBwbio\fR is the
  195. same as the previously set value and the old \fBrbio\fR and \fBwbio\fR values
  196. were the same as each other then one reference is consumed for the \fBrbio\fR
  197. and no references are consumed for the \fBwbio\fR.
  198. .IP "\(bu" 2
  199. If the \fBrbio\fR and \fBwbio\fR parameters are different and the \fBwbio\fR
  200. is the same as the
  201. previously set value and the old \fBrbio\fR and \fBwbio\fR values were different
  202. to each other, then one reference is consumed for the \fBrbio\fR and one
  203. reference is consumed for the \fBwbio\fR.
  204. .PP
  205. Because of this complexity, this function should be avoided;
  206. use \fBSSL_set0_rbio()\fR and \fBSSL_set0_wbio()\fR instead.
  207. .PP
  208. Where a new \s-1BIO\s0 is set on a \s-1QUIC\s0 connection \s-1SSL\s0 object, blocking mode will be
  209. disabled on that \s-1SSL\s0 object if the \s-1BIO\s0 cannot support blocking mode. If another
  210. \&\s-1BIO\s0 is subsequently set on the \s-1SSL\s0 object which can support blocking mode,
  211. blocking mode will not be automatically re-enabled. For more information, see
  212. \&\fBSSL_set_blocking_mode\fR\|(3).
  213. .SH "RETURN VALUES"
  214. .IX Header "RETURN VALUES"
  215. \&\fBSSL_set_bio()\fR, \fBSSL_set0_rbio()\fR and \fBSSL_set0_wbio()\fR cannot fail.
  216. .SH "SEE ALSO"
  217. .IX Header "SEE ALSO"
  218. \&\fBSSL_get_rbio\fR\|(3),
  219. \&\fBSSL_connect\fR\|(3), \fBSSL_accept\fR\|(3),
  220. \&\fBSSL_shutdown\fR\|(3), \fBssl\fR\|(7), \fBbio\fR\|(7)
  221. .SH "HISTORY"
  222. .IX Header "HISTORY"
  223. \&\fBSSL_set0_rbio()\fR and \fBSSL_set0_wbio()\fR were added in OpenSSL 1.1.0.
  224. .SH "COPYRIGHT"
  225. .IX Header "COPYRIGHT"
  226. Copyright 2000\-2023 The OpenSSL Project Authors. All Rights Reserved.
  227. .PP
  228. Licensed under the Apache License 2.0 (the \*(L"License\*(R"). You may not use
  229. this file except in compliance with the License. You can obtain a copy
  230. in the file \s-1LICENSE\s0 in the source distribution or at
  231. <https://www.openssl.org/source/license.html>.