161 lines
52 KiB
HTML
161 lines
52 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.11"/>
|
|
<title>SSLClient: src/SSLClient.h Source File</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
$(window).load(resizeHeight);
|
|
</script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { init_search(); });
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">SSLClient
|
|
 <span id="projectnumber">v1.6.9</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.11 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div id="navrow2" class="tabs2">
|
|
<ul class="tablist">
|
|
<li><a href="files.html"><span>File List</span></a></li>
|
|
<li><a href="globals.html"><span>File Members</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){initNavTree('_s_s_l_client_8h_source.html','');});
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">SSLClient.h</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="_s_s_l_client_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2019 OSU OPEnS Lab</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> *</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy of this</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * software and associated documentation files (the "Software"), to deal in the Software</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * without restriction, including without limitation the rights to use, copy, modify,</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * permit persons to whom the Software is furnished to do so, subject to the following</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * conditions:</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * copies or substantial portions of the Software.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> */</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Client.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_s_s_l_session_8h.html">SSLSession.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_s_s_l_client_parameters_8h.html">SSLClientParameters.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#ifndef SSLClient_H_</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#define SSLClient_H_</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html"> 34</a></span> <span class="keyword">class </span><a class="code" href="class_s_s_l_client.html">SSLClient</a> : <span class="keyword">public</span> Client {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6cea"> 44</a></span>  <span class="keyword">enum</span> <a class="code" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6cea">Error</a> {</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa18dbddc0a3d4a94ee0f298fe55a06a94"> 45</a></span>  <a class="code" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa18dbddc0a3d4a94ee0f298fe55a06a94">SSL_OK</a> = 0,</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa7510402478ffbecd6e1aa3811b175cfd"> 47</a></span>  <a class="code" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa7510402478ffbecd6e1aa3811b175cfd">SSL_CLIENT_CONNECT_FAIL</a> = 2,</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa6a9cc2412a53b5981e937a41523eece5"> 49</a></span>  <a class="code" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa6a9cc2412a53b5981e937a41523eece5">SSL_BR_CONNECT_FAIL</a> = 3,</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaab8581e1172fbf15067d435706d3a03a8"> 51</a></span>  <a class="code" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaab8581e1172fbf15067d435706d3a03a8">SSL_CLIENT_WRTIE_ERROR</a> = 4,</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa37bef298be71b84a57e59fadbfbd9016"> 53</a></span>  <a class="code" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa37bef298be71b84a57e59fadbfbd9016">SSL_BR_WRITE_ERROR</a> = 5,</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaaf66f8d5f6601f9e7607b78bf7a07fc84"> 55</a></span>  <a class="code" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaaf66f8d5f6601f9e7607b78bf7a07fc84">SSL_INTERNAL_ERROR</a> = 6,</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa0a4f8af0226cf29ede8f6fe4a9047b08"> 57</a></span>  <a class="code" href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa0a4f8af0226cf29ede8f6fe4a9047b08">SSL_OUT_OF_MEMORY</a> = 7</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1"> 66</a></span>  <span class="keyword">enum</span> <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">DebugLevel</a> {</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a24122d1e1bb724237f305a0b4a21ff75"> 68</a></span>  <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a24122d1e1bb724237f305a0b4a21ff75">SSL_NONE</a> = 0,</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a199742ec5c99c72d9cede1fda0f125c5"> 70</a></span>  <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a199742ec5c99c72d9cede1fda0f125c5">SSL_ERROR</a> = 1,</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a26f3e5f1481f3ea22ea4ab5370b0fa97"> 72</a></span>  <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a26f3e5f1481f3ea22ea4ab5370b0fa97">SSL_WARN</a> = 2,</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a8d5f7561f9cc0a2f3e5f362b02f4a5b2"> 74</a></span>  <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a8d5f7561f9cc0a2f3e5f362b02f4a5b2">SSL_INFO</a> = 3,</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1ad1cf0d4d876daa655edb8331bfe2ce39"> 76</a></span>  <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1ad1cf0d4d876daa655edb8331bfe2ce39">SSL_DUMP</a> = 4,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">explicit</span> <a class="code" href="class_s_s_l_client.html#a68f026a625ca1ccd1aba87bb6e670376">SSLClient</a>( Client& client, </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">const</span> br_x509_trust_anchor *trust_anchors, </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> trust_anchors_num, </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> analog_pin, </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> max_sessions = 1,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">DebugLevel</a> debug = <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a26f3e5f1481f3ea22ea4ab5370b0fa97">SSL_WARN</a>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">//========================================</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">//= Functions implemented in SSLClient.cpp</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">//========================================</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">int</span> <a class="code" href="class_s_s_l_client.html#ab97c0745f65a6c6009ac938b3b9912c3">connect</a>(IPAddress ip, uint16_t port) <span class="keyword">override</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordtype">int</span> <a class="code" href="class_s_s_l_client.html#ab97c0745f65a6c6009ac938b3b9912c3">connect</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *host, uint16_t port) <span class="keyword">override</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">size_t</span> <a class="code" href="class_s_s_l_client.html#a03c7926938acd57cfc3b982edf725a86">write</a>(<span class="keyword">const</span> uint8_t *buf, <span class="keywordtype">size_t</span> size) <span class="keyword">override</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a7343a58457b4659f83b61cac1f442c3d"> 211</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="class_s_s_l_client.html#a7343a58457b4659f83b61cac1f442c3d">write</a>(uint8_t b)<span class="keyword"> override </span>{ <span class="keywordflow">return</span> <a class="code" href="class_s_s_l_client.html#a7343a58457b4659f83b61cac1f442c3d">write</a>(&b, 1); }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordtype">int</span> <a class="code" href="class_s_s_l_client.html#a0e775669b4a040fbd3f281dcbcd2de78">available</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">int</span> <a class="code" href="class_s_s_l_client.html#aef1b52f4ad9633126cb68739175920eb">read</a>(uint8_t *buf, <span class="keywordtype">size_t</span> size) <span class="keyword">override</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#aef1b52f4ad9633126cb68739175920eb"> 259</a></span>  <span class="keywordtype">int</span> <a class="code" href="class_s_s_l_client.html#aef1b52f4ad9633126cb68739175920eb">read</a>()<span class="keyword"> override </span>{ uint8_t read_val; <span class="keywordflow">return</span> <a class="code" href="class_s_s_l_client.html#aef1b52f4ad9633126cb68739175920eb">read</a>(&read_val, 1) > 0 ? read_val : -1; };</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordtype">int</span> <a class="code" href="class_s_s_l_client.html#a0c0b6f2ad25701d1e45adb613d072d86">peek</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">void</span> <a class="code" href="class_s_s_l_client.html#aaf2192a6621fdf2f89cc26a9a1584f8c">flush</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordtype">void</span> <a class="code" href="class_s_s_l_client.html#ad8ed697371748e31e01c3f697bc36cbe">stop</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  uint8_t <a class="code" href="class_s_s_l_client.html#a5488f01ccfddfd9e41f54dfbda48bcae">connected</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">//========================================</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="comment">//= Functions Not in the Client Interface</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">//========================================</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordtype">void</span> <a class="code" href="class_s_s_l_client.html#aeee217b5558dfb0724f2319888a77256">setMutualAuthParams</a>(<span class="keyword">const</span> <a class="code" href="class_s_s_l_client_parameters.html">SSLClientParameters</a>& params);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="class_s_s_l_session.html">SSLSession</a>* <a class="code" href="class_s_s_l_client.html#a2bd012ef6f01df9694ba9fd0a3c227c3">getSession</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* host);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordtype">void</span> <a class="code" href="class_s_s_l_client.html#ad5d9d8a4187a3f8918bf66af83e733c4">removeSession</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* host);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a51dd3097cf5a3a8bf7644517026954b5"> 350</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="class_s_s_l_client.html#a51dd3097cf5a3a8bf7644517026954b5">getSessionCount</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_sessions.size(); }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a4192ee3562c4806d4a6829356ca2636b"> 357</a></span>  <span class="keyword">operator</span> bool() { <span class="keywordflow">return</span> <a class="code" href="class_s_s_l_client.html#a5488f01ccfddfd9e41f54dfbda48bcae">connected</a>() > 0; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a9a4e9c9877ab73cf7e82d6942cc7db21"> 360</a></span>  Client& <a class="code" href="class_s_s_l_client.html#a9a4e9c9877ab73cf7e82d6942cc7db21">getClient</a>() { <span class="keywordflow">return</span> m_client; }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a8da354f30537c1064d554921937a73ae"> 366</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_s_s_l_client.html#a8da354f30537c1064d554921937a73ae">setTimeout</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> t) { m_timeout = t; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="class_s_s_l_client.html#a08f05da0fca82c3470be4c1da8cf80a3"> 372</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_s_s_l_client.html#a08f05da0fca82c3470be4c1da8cf80a3">getTimeout</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_timeout; }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordtype">void</span> <a class="code" href="class_s_s_l_client.html#ab285c2f5a03124558ef7f74b9f3d12ad">setVerificationTime</a>(uint32_t days, uint32_t seconds);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  Client& get_arduino_client() { <span class="keywordflow">return</span> m_client; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">const</span> Client& get_arduino_client()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_client; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">bool</span> m_soft_connected(<span class="keyword">const</span> <span class="keywordtype">char</span>* func_name);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordtype">int</span> m_start_ssl(<span class="keyword">const</span> <span class="keywordtype">char</span>* host = <span class="keyword">nullptr</span>, <a class="code" href="class_s_s_l_session.html">SSLSession</a>* ssl_ses = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordtype">int</span> m_run_until(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> target);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordtype">unsigned</span> m_update_engine();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordtype">int</span> m_get_session_index(<span class="keyword">const</span> <span class="keywordtype">char</span>* host) <span class="keyword">const</span>; </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordtype">void</span> m_print_prefix(<span class="keyword">const</span> <span class="keywordtype">char</span>* func_name, <span class="keyword">const</span> <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">DebugLevel</a> level) <span class="keyword">const</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordtype">void</span> m_print_ssl_error(<span class="keyword">const</span> <span class="keywordtype">int</span> ssl_error, <span class="keyword">const</span> <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">DebugLevel</a> level) <span class="keyword">const</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordtype">void</span> m_print_br_error(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> br_error_code, <span class="keyword">const</span> <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">DebugLevel</a> level) <span class="keyword">const</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordtype">void</span> m_print_br_state(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> br_state, <span class="keyword">const</span> <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">DebugLevel</a> level) <span class="keyword">const</span>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordtype">void</span> m_print(<span class="keyword">const</span> T str, <span class="keyword">const</span> <span class="keywordtype">char</span>* func_name, <span class="keyword">const</span> <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">DebugLevel</a> level)<span class="keyword"> const </span>{ </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="comment">// check the current debug level and serial status</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">if</span> (level > m_debug || !Serial) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// print prefix</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  m_print_prefix(func_name, level);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// print the message</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  Serial.println(str);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordtype">void</span> m_info(<span class="keyword">const</span> T str, <span class="keyword">const</span> <span class="keywordtype">char</span>* func_name)<span class="keyword"> const </span>{ m_print(str, func_name, <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a8d5f7561f9cc0a2f3e5f362b02f4a5b2">SSL_INFO</a>); }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordtype">void</span> m_warn(<span class="keyword">const</span> T str, <span class="keyword">const</span> <span class="keywordtype">char</span>* func_name)<span class="keyword"> const </span>{ m_print(str, func_name, <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a26f3e5f1481f3ea22ea4ab5370b0fa97">SSL_WARN</a>); }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> </div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordtype">void</span> m_error(<span class="keyword">const</span> T str, <span class="keyword">const</span> <span class="keywordtype">char</span>* func_name)<span class="keyword"> const </span>{ m_print(str, func_name, <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a199742ec5c99c72d9cede1fda0f125c5">SSL_ERROR</a>); }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">//============================================</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">//= Data Members</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">//============================================</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// create a reference the client</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  Client& m_client;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="comment">// also store an array of SSLSessions, so we can resume communication with multiple websites</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  std::vector<SSLSession> m_sessions;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="comment">// as well as the maximmum number of sessions we can store</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> m_max_sessions;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// store the pin to fetch an RNG see from</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> m_analog_pin;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// store whether to enable debug logging</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keyword">const</span> <a class="code" href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">DebugLevel</a> m_debug;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// store if we are connected in bearssl or not</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordtype">bool</span> m_is_connected;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// store the timeout for SSL internals</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_timeout;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// store the context values required for SSL</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  br_ssl_client_context m_sslctx;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  br_x509_minimal_context m_x509ctx;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// use a mono-directional buffer by default to cut memory in half</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="comment">// can expand to a bi-directional buffer with maximum of BR_SSL_BUFSIZE_BIDI</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// or shrink to below BR_SSL_BUFSIZE_MONO, and bearSSL will adapt automatically</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="comment">// simply edit this value to change the buffer size to the desired value</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="comment">// additionally, we need to correct buffer size based off of how many sessions we decide to cache</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">// since SSL takes so much memory if we don't it will cause the stack and heap to collide </span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> m_iobuf[2048];</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="comment">// store the index of where we are writing in the buffer</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// so we can send our records all at once to prevent</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">// weird timing issues</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordtype">size_t</span> m_write_idx;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// store the last BearSSL state so we can print changes to the console</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordtype">unsigned</span> m_br_last_state;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> };</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor">#endif </span></div><div class="ttc" id="class_s_s_l_client_html_a5488f01ccfddfd9e41f54dfbda48bcae"><div class="ttname"><a href="class_s_s_l_client.html#a5488f01ccfddfd9e41f54dfbda48bcae">SSLClient::connected</a></div><div class="ttdeci">uint8_t connected() override</div><div class="ttdoc">Check if the device is connected. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:223</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_af632625f8d247f3885c81e1f05043ad1ad1cf0d4d876daa655edb8331bfe2ce39"><div class="ttname"><a href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1ad1cf0d4d876daa655edb8331bfe2ce39">SSLClient::SSL_DUMP</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:76</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a48239f60f1b4318cc112706fc40c6ceaa0a4f8af0226cf29ede8f6fe4a9047b08"><div class="ttname"><a href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa0a4f8af0226cf29ede8f6fe4a9047b08">SSLClient::SSL_OUT_OF_MEMORY</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:57</div></div>
|
|
<div class="ttc" id="class_s_s_l_session_html"><div class="ttname"><a href="class_s_s_l_session.html">SSLSession</a></div><div class="ttdoc">This class stores values which allow SSLClient to save and resume SSL sessions. </div><div class="ttdef"><b>Definition:</b> SSLSession.h:51</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a8da354f30537c1064d554921937a73ae"><div class="ttname"><a href="class_s_s_l_client.html#a8da354f30537c1064d554921937a73ae">SSLClient::setTimeout</a></div><div class="ttdeci">void setTimeout(unsigned int t)</div><div class="ttdoc">Set the timeout when waiting for an SSL response. </div><div class="ttdef"><b>Definition:</b> SSLClient.h:366</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a48239f60f1b4318cc112706fc40c6ceaa7510402478ffbecd6e1aa3811b175cfd"><div class="ttname"><a href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa7510402478ffbecd6e1aa3811b175cfd">SSLClient::SSL_CLIENT_CONNECT_FAIL</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:47</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_af632625f8d247f3885c81e1f05043ad1a8d5f7561f9cc0a2f3e5f362b02f4a5b2"><div class="ttname"><a href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a8d5f7561f9cc0a2f3e5f362b02f4a5b2">SSLClient::SSL_INFO</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:74</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a48239f60f1b4318cc112706fc40c6ceaa37bef298be71b84a57e59fadbfbd9016"><div class="ttname"><a href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa37bef298be71b84a57e59fadbfbd9016">SSLClient::SSL_BR_WRITE_ERROR</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:53</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a68f026a625ca1ccd1aba87bb6e670376"><div class="ttname"><a href="class_s_s_l_client.html#a68f026a625ca1ccd1aba87bb6e670376">SSLClient::SSLClient</a></div><div class="ttdeci">SSLClient(Client &client, const br_x509_trust_anchor *trust_anchors, const size_t trust_anchors_num, const int analog_pin, const size_t max_sessions=1, const DebugLevel debug=SSL_WARN)</div><div class="ttdoc">Initialize SSLClient with all of the prerequisites needed. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:24</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_aaf2192a6621fdf2f89cc26a9a1584f8c"><div class="ttname"><a href="class_s_s_l_client.html#aaf2192a6621fdf2f89cc26a9a1584f8c">SSLClient::flush</a></div><div class="ttdeci">void flush() override</div><div class="ttdoc">Force writing the buffered bytes from SSLClient::write to the network. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:182</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a2bd012ef6f01df9694ba9fd0a3c227c3"><div class="ttname"><a href="class_s_s_l_client.html#a2bd012ef6f01df9694ba9fd0a3c227c3">SSLClient::getSession</a></div><div class="ttdeci">SSLSession * getSession(const char *host)</div><div class="ttdoc">Gets a session reference corresponding to a host and IP, or a reference to a empty session if none ex...</div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:254</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a0e775669b4a040fbd3f281dcbcd2de78"><div class="ttname"><a href="class_s_s_l_client.html#a0e775669b4a040fbd3f281dcbcd2de78">SSLClient::available</a></div><div class="ttdeci">int available() override</div><div class="ttdoc">Returns the number of bytes available to read from the data that has been received and decrypted...</div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:134</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html"><div class="ttname"><a href="class_s_s_l_client.html">SSLClient</a></div><div class="ttdoc">The main SSLClient class. Check out README.md for more info. </div><div class="ttdef"><b>Definition:</b> SSLClient.h:34</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_af632625f8d247f3885c81e1f05043ad1a26f3e5f1481f3ea22ea4ab5370b0fa97"><div class="ttname"><a href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a26f3e5f1481f3ea22ea4ab5370b0fa97">SSLClient::SSL_WARN</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:72</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_ad8ed697371748e31e01c3f697bc36cbe"><div class="ttname"><a href="class_s_s_l_client.html#ad8ed697371748e31e01c3f697bc36cbe">SSLClient::stop</a></div><div class="ttdeci">void stop() override</div><div class="ttdoc">Close the connection. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:196</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_af632625f8d247f3885c81e1f05043ad1a199742ec5c99c72d9cede1fda0f125c5"><div class="ttname"><a href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a199742ec5c99c72d9cede1fda0f125c5">SSLClient::SSL_ERROR</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:70</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_ab97c0745f65a6c6009ac938b3b9912c3"><div class="ttname"><a href="class_s_s_l_client.html#ab97c0745f65a6c6009ac938b3b9912c3">SSLClient::connect</a></div><div class="ttdeci">int connect(IPAddress ip, uint16_t port) override</div><div class="ttdoc">Connect over SSL to a host specified by an IP address. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:52</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a03c7926938acd57cfc3b982edf725a86"><div class="ttname"><a href="class_s_s_l_client.html#a03c7926938acd57cfc3b982edf725a86">SSLClient::write</a></div><div class="ttdeci">size_t write(const uint8_t *buf, size_t size) override</div><div class="ttdoc">Write some bytes to the SSL connection. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:93</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_aef1b52f4ad9633126cb68739175920eb"><div class="ttname"><a href="class_s_s_l_client.html#aef1b52f4ad9633126cb68739175920eb">SSLClient::read</a></div><div class="ttdeci">int read() override</div><div class="ttdoc">Read a single byte, or -1 if none is available. </div><div class="ttdef"><b>Definition:</b> SSLClient.h:259</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_aeee217b5558dfb0724f2319888a77256"><div class="ttname"><a href="class_s_s_l_client.html#aeee217b5558dfb0724f2319888a77256">SSLClient::setMutualAuthParams</a></div><div class="ttdeci">void setMutualAuthParams(const SSLClientParameters &params)</div><div class="ttdoc">Add a client certificate and enable support for mutual auth. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:278</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a48239f60f1b4318cc112706fc40c6cea"><div class="ttname"><a href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6cea">SSLClient::Error</a></div><div class="ttdeci">Error</div><div class="ttdoc">Static constants defining the possible errors encountered. </div><div class="ttdef"><b>Definition:</b> SSLClient.h:44</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a48239f60f1b4318cc112706fc40c6ceaab8581e1172fbf15067d435706d3a03a8"><div class="ttname"><a href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaab8581e1172fbf15067d435706d3a03a8">SSLClient::SSL_CLIENT_WRTIE_ERROR</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:51</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a08f05da0fca82c3470be4c1da8cf80a3"><div class="ttname"><a href="class_s_s_l_client.html#a08f05da0fca82c3470be4c1da8cf80a3">SSLClient::getTimeout</a></div><div class="ttdeci">unsigned int getTimeout() const </div><div class="ttdoc">Get the timeout when waiting for an SSL response. </div><div class="ttdef"><b>Definition:</b> SSLClient.h:372</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_af632625f8d247f3885c81e1f05043ad1"><div class="ttname"><a href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1">SSLClient::DebugLevel</a></div><div class="ttdeci">DebugLevel</div><div class="ttdoc">Level of verbosity used in logging for SSLClient. </div><div class="ttdef"><b>Definition:</b> SSLClient.h:66</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a0c0b6f2ad25701d1e45adb613d072d86"><div class="ttname"><a href="class_s_s_l_client.html#a0c0b6f2ad25701d1e45adb613d072d86">SSLClient::peek</a></div><div class="ttdeci">int peek() override</div><div class="ttdoc">View the first byte of the buffer, without removing it from the SSLClient Buffer. ...</div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:170</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_ab285c2f5a03124558ef7f74b9f3d12ad"><div class="ttname"><a href="class_s_s_l_client.html#ab285c2f5a03124558ef7f74b9f3d12ad">SSLClient::setVerificationTime</a></div><div class="ttdeci">void setVerificationTime(uint32_t days, uint32_t seconds)</div><div class="ttdoc">Change the time used during x509 verification to a different value. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:300</div></div>
|
|
<div class="ttc" id="_s_s_l_client_parameters_8h_html"><div class="ttname"><a href="_s_s_l_client_parameters_8h.html">SSLClientParameters.h</a></div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a48239f60f1b4318cc112706fc40c6ceaa6a9cc2412a53b5981e937a41523eece5"><div class="ttname"><a href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa6a9cc2412a53b5981e937a41523eece5">SSLClient::SSL_BR_CONNECT_FAIL</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:49</div></div>
|
|
<div class="ttc" id="_s_s_l_session_8h_html"><div class="ttname"><a href="_s_s_l_session_8h.html">SSLSession.h</a></div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a7343a58457b4659f83b61cac1f442c3d"><div class="ttname"><a href="class_s_s_l_client.html#a7343a58457b4659f83b61cac1f442c3d">SSLClient::write</a></div><div class="ttdeci">size_t write(uint8_t b) override</div><div class="ttdef"><b>Definition:</b> SSLClient.h:211</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a9a4e9c9877ab73cf7e82d6942cc7db21"><div class="ttname"><a href="class_s_s_l_client.html#a9a4e9c9877ab73cf7e82d6942cc7db21">SSLClient::getClient</a></div><div class="ttdeci">Client & getClient()</div><div class="ttdoc">Returns a reference to the client object stored in this class. Take care not to break it...</div><div class="ttdef"><b>Definition:</b> SSLClient.h:360</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_ad5d9d8a4187a3f8918bf66af83e733c4"><div class="ttname"><a href="class_s_s_l_client.html#ad5d9d8a4187a3f8918bf66af83e733c4">SSLClient::removeSession</a></div><div class="ttdeci">void removeSession(const char *host)</div><div class="ttdoc">Clear the session corresponding to a host and IP. </div><div class="ttdef"><b>Definition:</b> SSLClient.cpp:267</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_parameters_html"><div class="ttname"><a href="class_s_s_l_client_parameters.html">SSLClientParameters</a></div><div class="ttdoc">This class stores data required for SSLClient to use mutual authentication. </div><div class="ttdef"><b>Definition:</b> SSLClientParameters.h:52</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_af632625f8d247f3885c81e1f05043ad1a24122d1e1bb724237f305a0b4a21ff75"><div class="ttname"><a href="class_s_s_l_client.html#af632625f8d247f3885c81e1f05043ad1a24122d1e1bb724237f305a0b4a21ff75">SSLClient::SSL_NONE</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:68</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a51dd3097cf5a3a8bf7644517026954b5"><div class="ttname"><a href="class_s_s_l_client.html#a51dd3097cf5a3a8bf7644517026954b5">SSLClient::getSessionCount</a></div><div class="ttdeci">size_t getSessionCount() const </div><div class="ttdoc">Get the maximum number of SSL sessions that can be stored at once. </div><div class="ttdef"><b>Definition:</b> SSLClient.h:350</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a48239f60f1b4318cc112706fc40c6ceaa18dbddc0a3d4a94ee0f298fe55a06a94"><div class="ttname"><a href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaa18dbddc0a3d4a94ee0f298fe55a06a94">SSLClient::SSL_OK</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:45</div></div>
|
|
<div class="ttc" id="class_s_s_l_client_html_a48239f60f1b4318cc112706fc40c6ceaaf66f8d5f6601f9e7607b78bf7a07fc84"><div class="ttname"><a href="class_s_s_l_client.html#a48239f60f1b4318cc112706fc40c6ceaaf66f8d5f6601f9e7607b78bf7a07fc84">SSLClient::SSL_INTERNAL_ERROR</a></div><div class="ttdef"><b>Definition:</b> SSLClient.h:55</div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="_s_s_l_client_8h.html">SSLClient.h</a></li>
|
|
<li class="footer">Generated by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|