blob: 53a1493cc1005d1c84dc96a4fa54e23e2f00c871 [file] [log] [blame]
<!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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Paho Asynchronous MQTT C Client Library: MQTTAsync_SSLOptions Struct Reference</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="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>
<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="projectlogo"><img alt="Logo" src="pahologo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Paho Asynchronous MQTT C Client Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">MQTTAsync_SSLOptions Struct Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="_m_q_t_t_async_8h_source.html">MQTTAsync.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:aa5326df180cb23c59afbcab711a06479"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#aa5326df180cb23c59afbcab711a06479">struct_id</a> [4]</td></tr>
<tr class="separator:aa5326df180cb23c59afbcab711a06479"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0761a5e5be0383882e42924de8e51f82"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a0761a5e5be0383882e42924de8e51f82">struct_version</a></td></tr>
<tr class="separator:a0761a5e5be0383882e42924de8e51f82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a032835d4c4a1c1e19b53c330a673a6e0"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a032835d4c4a1c1e19b53c330a673a6e0">trustStore</a></td></tr>
<tr class="separator:a032835d4c4a1c1e19b53c330a673a6e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32b476382955289ce427112b59f21c3e"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a32b476382955289ce427112b59f21c3e">keyStore</a></td></tr>
<tr class="separator:a32b476382955289ce427112b59f21c3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dd436cbb916fba200595c3519f09ec4"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a7dd436cbb916fba200595c3519f09ec4">privateKey</a></td></tr>
<tr class="separator:a7dd436cbb916fba200595c3519f09ec4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb427571ba37b51f6985f1a6906ca031"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#abb427571ba37b51f6985f1a6906ca031">privateKeyPassword</a></td></tr>
<tr class="separator:abb427571ba37b51f6985f1a6906ca031"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa683926d52134077f27d6dc67bda13ab"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#aa683926d52134077f27d6dc67bda13ab">enabledCipherSuites</a></td></tr>
<tr class="separator:aa683926d52134077f27d6dc67bda13ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75f6c13b7634e15f96dd9f17db6cf0be"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a75f6c13b7634e15f96dd9f17db6cf0be">enableServerCertAuth</a></td></tr>
<tr class="separator:a75f6c13b7634e15f96dd9f17db6cf0be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3543ea1481b68d73cdde833280bb9c45"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a3543ea1481b68d73cdde833280bb9c45">sslVersion</a></td></tr>
<tr class="separator:a3543ea1481b68d73cdde833280bb9c45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94900629685d5ed08f66fd2931f573ce"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a94900629685d5ed08f66fd2931f573ce">verify</a></td></tr>
<tr class="separator:a94900629685d5ed08f66fd2931f573ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3078b3c824cc9753a57898072445c34d"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a3078b3c824cc9753a57898072445c34d">CApath</a></td></tr>
<tr class="separator:a3078b3c824cc9753a57898072445c34d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21b6ca8a73ba197e65f6a93365d39c04"><td class="memItemLeft" align="right" valign="top">int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a21b6ca8a73ba197e65f6a93365d39c04">ssl_error_cb</a> )(const char *str, size_t len, void *u)</td></tr>
<tr class="separator:a21b6ca8a73ba197e65f6a93365d39c04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a189f11195f4d5a70024adffdb050885f"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_q_t_t_async___s_s_l_options.html#a189f11195f4d5a70024adffdb050885f">ssl_error_context</a></td></tr>
<tr class="separator:a189f11195f4d5a70024adffdb050885f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>MQTTAsync_sslProperties defines the settings to establish an SSL/TLS connection using the OpenSSL library. It covers the following scenarios:</p><ul>
<li>Server authentication: The client needs the digital certificate of the server. It is included in a store containting trusted material (also known as "trust store").</li>
<li>Mutual authentication: Both client and server are authenticated during the SSL handshake. In addition to the digital certificate of the server in a trust store, the client will need its own digital certificate and the private key used to sign its digital certificate stored in a "key store".</li>
<li>Anonymous connection: Both client and server do not get authenticated and no credentials are needed to establish an SSL connection. Note that this scenario is not fully secure since it is subject to man-in-the-middle attacks. </li>
</ul>
</div><h2 class="groupheader">Field Documentation</h2>
<a id="aa5326df180cb23c59afbcab711a06479"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5326df180cb23c59afbcab711a06479">&#9670;&nbsp;</a></span>struct_id</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char struct_id[4]</td>
</tr>
</table>
</div><div class="memdoc">
<p>The eyecatcher for this structure. Must be MQTS </p>
</div>
</div>
<a id="a0761a5e5be0383882e42924de8e51f82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0761a5e5be0383882e42924de8e51f82">&#9670;&nbsp;</a></span>struct_version</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int struct_version</td>
</tr>
</table>
</div><div class="memdoc">
<p>The version number of this structure. Must be 0, or 1 to enable TLS version selection. </p>
</div>
</div>
<a id="a032835d4c4a1c1e19b53c330a673a6e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a032835d4c4a1c1e19b53c330a673a6e0">&#9670;&nbsp;</a></span>trustStore</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* trustStore</td>
</tr>
</table>
</div><div class="memdoc">
<p>The file in PEM format containing the public digital certificates trusted by the client. </p>
</div>
</div>
<a id="a32b476382955289ce427112b59f21c3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32b476382955289ce427112b59f21c3e">&#9670;&nbsp;</a></span>keyStore</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* keyStore</td>
</tr>
</table>
</div><div class="memdoc">
<p>The file in PEM format containing the public certificate chain of the client. It may also include the client's private key. </p>
</div>
</div>
<a id="a7dd436cbb916fba200595c3519f09ec4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dd436cbb916fba200595c3519f09ec4">&#9670;&nbsp;</a></span>privateKey</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* privateKey</td>
</tr>
</table>
</div><div class="memdoc">
<p>If not included in the sslKeyStore, this setting points to the file in PEM format containing the client's private key. </p>
</div>
</div>
<a id="abb427571ba37b51f6985f1a6906ca031"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb427571ba37b51f6985f1a6906ca031">&#9670;&nbsp;</a></span>privateKeyPassword</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* privateKeyPassword</td>
</tr>
</table>
</div><div class="memdoc">
<p>The password to load the client's privateKey if encrypted. </p>
</div>
</div>
<a id="aa683926d52134077f27d6dc67bda13ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa683926d52134077f27d6dc67bda13ab">&#9670;&nbsp;</a></span>enabledCipherSuites</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* enabledCipherSuites</td>
</tr>
</table>
</div><div class="memdoc">
<p>The list of cipher suites that the client will present to the server during the SSL handshake. For a full explanation of the cipher list format, please see the OpenSSL on-line documentation: <a href="http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT">http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT</a> If this setting is ommitted, its default value will be "ALL", that is, all the cipher suites -excluding those offering no encryption- will be considered. This setting can be used to set an SSL anonymous connection ("aNULL" string value, for instance). </p>
</div>
</div>
<a id="a75f6c13b7634e15f96dd9f17db6cf0be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75f6c13b7634e15f96dd9f17db6cf0be">&#9670;&nbsp;</a></span>enableServerCertAuth</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int enableServerCertAuth</td>
</tr>
</table>
</div><div class="memdoc">
<p>True/False option to enable verification of the server certificate </p>
</div>
</div>
<a id="a3543ea1481b68d73cdde833280bb9c45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3543ea1481b68d73cdde833280bb9c45">&#9670;&nbsp;</a></span>sslVersion</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int sslVersion</td>
</tr>
</table>
</div><div class="memdoc">
<p>The SSL/TLS version to use. Specify one of MQTT_SSL_VERSION_DEFAULT (0), MQTT_SSL_VERSION_TLS_1_0 (1), MQTT_SSL_VERSION_TLS_1_1 (2) or MQTT_SSL_VERSION_TLS_1_2 (3). Only used if struct_version is &gt;= 1. </p>
</div>
</div>
<a id="a94900629685d5ed08f66fd2931f573ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94900629685d5ed08f66fd2931f573ce">&#9670;&nbsp;</a></span>verify</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int verify</td>
</tr>
</table>
</div><div class="memdoc">
<p>Whether to carry out post-connect checks, including that a certificate matches the given host name. Exists only if struct_version &gt;= 2 </p>
</div>
</div>
<a id="a3078b3c824cc9753a57898072445c34d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3078b3c824cc9753a57898072445c34d">&#9670;&nbsp;</a></span>CApath</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* CApath</td>
</tr>
</table>
</div><div class="memdoc">
<p>From the OpenSSL documentation: If CApath is not NULL, it points to a directory containing CA certificates in PEM format. Exists only if struct_version &gt;= 2 </p>
</div>
</div>
<a id="a21b6ca8a73ba197e65f6a93365d39c04"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a21b6ca8a73ba197e65f6a93365d39c04">&#9670;&nbsp;</a></span>ssl_error_cb</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int(* ssl_error_cb) (const char *str, size_t len, void *u)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Callback function for OpenSSL error handler ERR_print_errors_cb Exists only if struct_version &gt;= 3 </p>
</div>
</div>
<a id="a189f11195f4d5a70024adffdb050885f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a189f11195f4d5a70024adffdb050885f">&#9670;&nbsp;</a></span>ssl_error_context</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* ssl_error_context</td>
</tr>
</table>
</div><div class="memdoc">
<p>Application-specific contex for OpenSSL error handler ERR_print_errors_cb Exists only if struct_version &gt;= 3 </p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="_m_q_t_t_async_8h_source.html">MQTTAsync.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Sep 13 2018 13:40:20 for Paho Asynchronous MQTT C Client Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>