1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>ssl::stream</title> 5<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../../boost_asio.html" title="Boost.Asio"> 8<link rel="up" href="../reference.html" title="Reference"> 9<link rel="prev" href="ssl__rfc2818_verification/rfc2818_verification.html" title="ssl::rfc2818_verification::rfc2818_verification"> 10<link rel="next" href="ssl__stream/async_handshake.html" title="ssl::stream::async_handshake"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td> 15<td align="center"><a href="../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="ssl__rfc2818_verification/rfc2818_verification.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../boost_asio.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ssl__stream/async_handshake.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h3 class="title"> 27<a name="boost_asio.reference.ssl__stream"></a><a class="link" href="ssl__stream.html" title="ssl::stream">ssl::stream</a> 28</h3></div></div></div> 29<p> 30 Provides stream-oriented functionality using SSL. 31 </p> 32<pre class="programlisting">template< 33 typename Stream> 34class stream : 35 public ssl::stream_base, 36 noncopyable 37</pre> 38<h5> 39<a name="boost_asio.reference.ssl__stream.h0"></a> 40 <span class="phrase"><a name="boost_asio.reference.ssl__stream.types"></a></span><a class="link" href="ssl__stream.html#boost_asio.reference.ssl__stream.types">Types</a> 41 </h5> 42<div class="informaltable"><table class="table"> 43<colgroup> 44<col> 45<col> 46</colgroup> 47<thead><tr> 48<th> 49 <p> 50 Name 51 </p> 52 </th> 53<th> 54 <p> 55 Description 56 </p> 57 </th> 58</tr></thead> 59<tbody> 60<tr> 61<td> 62 <p> 63 <a class="link" href="ssl__stream__impl_struct.html" title="ssl::stream::impl_struct"><span class="bold"><strong>impl_struct</strong></span></a> 64 </p> 65 </td> 66<td> 67 <p> 68 Structure for use with deprecated impl_type. 69 </p> 70 </td> 71</tr> 72<tr> 73<td> 74 <p> 75 <a class="link" href="ssl__stream/executor_type.html" title="ssl::stream::executor_type"><span class="bold"><strong>executor_type</strong></span></a> 76 </p> 77 </td> 78<td> 79 <p> 80 The type of the executor associated with the object. 81 </p> 82 </td> 83</tr> 84<tr> 85<td> 86 <p> 87 <a class="link" href="ssl__stream/handshake_type.html" title="ssl::stream::handshake_type"><span class="bold"><strong>handshake_type</strong></span></a> 88 </p> 89 </td> 90<td> 91 <p> 92 Different handshake types. 93 </p> 94 </td> 95</tr> 96<tr> 97<td> 98 <p> 99 <a class="link" href="ssl__stream/lowest_layer_type.html" title="ssl::stream::lowest_layer_type"><span class="bold"><strong>lowest_layer_type</strong></span></a> 100 </p> 101 </td> 102<td> 103 <p> 104 The type of the lowest layer. 105 </p> 106 </td> 107</tr> 108<tr> 109<td> 110 <p> 111 <a class="link" href="ssl__stream/native_handle_type.html" title="ssl::stream::native_handle_type"><span class="bold"><strong>native_handle_type</strong></span></a> 112 </p> 113 </td> 114<td> 115 <p> 116 The native handle type of the SSL stream. 117 </p> 118 </td> 119</tr> 120<tr> 121<td> 122 <p> 123 <a class="link" href="ssl__stream/next_layer_type.html" title="ssl::stream::next_layer_type"><span class="bold"><strong>next_layer_type</strong></span></a> 124 </p> 125 </td> 126<td> 127 <p> 128 The type of the next layer. 129 </p> 130 </td> 131</tr> 132</tbody> 133</table></div> 134<h5> 135<a name="boost_asio.reference.ssl__stream.h1"></a> 136 <span class="phrase"><a name="boost_asio.reference.ssl__stream.member_functions"></a></span><a class="link" href="ssl__stream.html#boost_asio.reference.ssl__stream.member_functions">Member 137 Functions</a> 138 </h5> 139<div class="informaltable"><table class="table"> 140<colgroup> 141<col> 142<col> 143</colgroup> 144<thead><tr> 145<th> 146 <p> 147 Name 148 </p> 149 </th> 150<th> 151 <p> 152 Description 153 </p> 154 </th> 155</tr></thead> 156<tbody> 157<tr> 158<td> 159 <p> 160 <a class="link" href="ssl__stream/async_handshake.html" title="ssl::stream::async_handshake"><span class="bold"><strong>async_handshake</strong></span></a> 161 </p> 162 </td> 163<td> 164 <p> 165 Start an asynchronous SSL handshake. 166 </p> 167 </td> 168</tr> 169<tr> 170<td> 171 <p> 172 <a class="link" href="ssl__stream/async_read_some.html" title="ssl::stream::async_read_some"><span class="bold"><strong>async_read_some</strong></span></a> 173 </p> 174 </td> 175<td> 176 <p> 177 Start an asynchronous read. 178 </p> 179 </td> 180</tr> 181<tr> 182<td> 183 <p> 184 <a class="link" href="ssl__stream/async_shutdown.html" title="ssl::stream::async_shutdown"><span class="bold"><strong>async_shutdown</strong></span></a> 185 </p> 186 </td> 187<td> 188 <p> 189 Asynchronously shut down SSL on the stream. 190 </p> 191 </td> 192</tr> 193<tr> 194<td> 195 <p> 196 <a class="link" href="ssl__stream/async_write_some.html" title="ssl::stream::async_write_some"><span class="bold"><strong>async_write_some</strong></span></a> 197 </p> 198 </td> 199<td> 200 <p> 201 Start an asynchronous write. 202 </p> 203 </td> 204</tr> 205<tr> 206<td> 207 <p> 208 <a class="link" href="ssl__stream/get_executor.html" title="ssl::stream::get_executor"><span class="bold"><strong>get_executor</strong></span></a> 209 </p> 210 </td> 211<td> 212 <p> 213 Get the executor associated with the object. 214 </p> 215 </td> 216</tr> 217<tr> 218<td> 219 <p> 220 <a class="link" href="ssl__stream/handshake.html" title="ssl::stream::handshake"><span class="bold"><strong>handshake</strong></span></a> 221 </p> 222 </td> 223<td> 224 <p> 225 Perform SSL handshaking. 226 </p> 227 </td> 228</tr> 229<tr> 230<td> 231 <p> 232 <a class="link" href="ssl__stream/lowest_layer.html" title="ssl::stream::lowest_layer"><span class="bold"><strong>lowest_layer</strong></span></a> 233 </p> 234 </td> 235<td> 236 <p> 237 Get a reference to the lowest layer. 238 </p> 239 </td> 240</tr> 241<tr> 242<td> 243 <p> 244 <a class="link" href="ssl__stream/native_handle.html" title="ssl::stream::native_handle"><span class="bold"><strong>native_handle</strong></span></a> 245 </p> 246 </td> 247<td> 248 <p> 249 Get the underlying implementation in the native type. 250 </p> 251 </td> 252</tr> 253<tr> 254<td> 255 <p> 256 <a class="link" href="ssl__stream/next_layer.html" title="ssl::stream::next_layer"><span class="bold"><strong>next_layer</strong></span></a> 257 </p> 258 </td> 259<td> 260 <p> 261 Get a reference to the next layer. 262 </p> 263 </td> 264</tr> 265<tr> 266<td> 267 <p> 268 <a class="link" href="ssl__stream/read_some.html" title="ssl::stream::read_some"><span class="bold"><strong>read_some</strong></span></a> 269 </p> 270 </td> 271<td> 272 <p> 273 Read some data from the stream. 274 </p> 275 </td> 276</tr> 277<tr> 278<td> 279 <p> 280 <a class="link" href="ssl__stream/set_verify_callback.html" title="ssl::stream::set_verify_callback"><span class="bold"><strong>set_verify_callback</strong></span></a> 281 </p> 282 </td> 283<td> 284 <p> 285 Set the callback used to verify peer certificates. 286 </p> 287 </td> 288</tr> 289<tr> 290<td> 291 <p> 292 <a class="link" href="ssl__stream/set_verify_depth.html" title="ssl::stream::set_verify_depth"><span class="bold"><strong>set_verify_depth</strong></span></a> 293 </p> 294 </td> 295<td> 296 <p> 297 Set the peer verification depth. 298 </p> 299 </td> 300</tr> 301<tr> 302<td> 303 <p> 304 <a class="link" href="ssl__stream/set_verify_mode.html" title="ssl::stream::set_verify_mode"><span class="bold"><strong>set_verify_mode</strong></span></a> 305 </p> 306 </td> 307<td> 308 <p> 309 Set the peer verification mode. 310 </p> 311 </td> 312</tr> 313<tr> 314<td> 315 <p> 316 <a class="link" href="ssl__stream/shutdown.html" title="ssl::stream::shutdown"><span class="bold"><strong>shutdown</strong></span></a> 317 </p> 318 </td> 319<td> 320 <p> 321 Shut down SSL on the stream. 322 </p> 323 </td> 324</tr> 325<tr> 326<td> 327 <p> 328 <a class="link" href="ssl__stream/stream.html" title="ssl::stream::stream"><span class="bold"><strong>stream</strong></span></a> <span class="silver">[constructor]</span> 329 </p> 330 </td> 331<td> 332 <p> 333 Construct a stream. <br> <span class="silver"> —</span><br> Move-construct a stream from 334 another. 335 </p> 336 </td> 337</tr> 338<tr> 339<td> 340 <p> 341 <a class="link" href="ssl__stream/write_some.html" title="ssl::stream::write_some"><span class="bold"><strong>write_some</strong></span></a> 342 </p> 343 </td> 344<td> 345 <p> 346 Write some data to the stream. 347 </p> 348 </td> 349</tr> 350<tr> 351<td> 352 <p> 353 <a class="link" href="ssl__stream/_stream.html" title="ssl::stream::~stream"><span class="bold"><strong>~stream</strong></span></a> <span class="silver">[destructor]</span> 354 </p> 355 </td> 356<td> 357 <p> 358 Destructor. 359 </p> 360 </td> 361</tr> 362</tbody> 363</table></div> 364<p> 365 The stream class template provides asynchronous and blocking stream-oriented 366 functionality using SSL. 367 </p> 368<h5> 369<a name="boost_asio.reference.ssl__stream.h2"></a> 370 <span class="phrase"><a name="boost_asio.reference.ssl__stream.thread_safety"></a></span><a class="link" href="ssl__stream.html#boost_asio.reference.ssl__stream.thread_safety">Thread 371 Safety</a> 372 </h5> 373<p> 374 <span class="emphasis"><em>Distinct</em></span> <span class="emphasis"><em>objects:</em></span> Safe. 375 </p> 376<p> 377 <span class="emphasis"><em>Shared</em></span> <span class="emphasis"><em>objects:</em></span> Unsafe. The application 378 must also ensure that all asynchronous operations are performed within the 379 same implicit or explicit strand. 380 </p> 381<h5> 382<a name="boost_asio.reference.ssl__stream.h3"></a> 383 <span class="phrase"><a name="boost_asio.reference.ssl__stream.example"></a></span><a class="link" href="ssl__stream.html#boost_asio.reference.ssl__stream.example">Example</a> 384 </h5> 385<p> 386 To use the SSL stream template with an <code class="computeroutput">ip::tcp::socket</code>, you 387 would write: 388 </p> 389<pre class="programlisting">boost::asio::io_context my_context; 390boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23); 391boost::asio::ssl::stream<asio:ip::tcp::socket> sock(my_context, ctx); 392</pre> 393<h5> 394<a name="boost_asio.reference.ssl__stream.h4"></a> 395 <span class="phrase"><a name="boost_asio.reference.ssl__stream.requirements"></a></span><a class="link" href="ssl__stream.html#boost_asio.reference.ssl__stream.requirements">Requirements</a> 396 </h5> 397<p> 398 <span class="emphasis"><em>Header: </em></span><code class="literal">boost/asio/ssl/stream.hpp</code> 399 </p> 400<p> 401 <span class="emphasis"><em>Convenience header: </em></span><code class="literal">boost/asio/ssl.hpp</code> 402 </p> 403</div> 404<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 405<td align="left"></td> 406<td align="right"><div class="copyright-footer">Copyright © 2003-2020 Christopher M. 407 Kohlhoff<p> 408 Distributed under the Boost Software License, Version 1.0. (See accompanying 409 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 410 </p> 411</div></td> 412</tr></table> 413<hr> 414<div class="spirit-nav"> 415<a accesskey="p" href="ssl__rfc2818_verification/rfc2818_verification.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../boost_asio.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ssl__stream/async_handshake.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> 416</div> 417</body> 418</html> 419