• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;
33    typename Stream&gt;
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&lt;asio:ip::tcp::socket&gt; 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