blob: 425cb6edce2d4e9004a2fa41c7bde7312c6ef9d1 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>wolfSSL wolfSSL SSL/TLS Cryptography Library &mdash; NuttX latest documentation</title>
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css" />
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/sphinx_highlight.js"></script>
<script src="../../../_static/clipboard.min.js"></script>
<script src="../../../_static/copybutton.js"></script>
<script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="File System Utilities" href="../../fsutils/index.html" />
<link rel="prev" title="tinydtls Eclipse Tinydtls" href="../tinydtls/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../../../latest" selected="selected">latest</option>
<option value="../../../../10.0.0" >10.0.0</option>
<option value="../../../../10.0.1" >10.0.1</option>
<option value="../../../../10.1.0" >10.1.0</option>
<option value="../../../../10.2.0" >10.2.0</option>
<option value="../../../../10.3.0" >10.3.0</option>
<option value="../../../../11.0.0" >11.0.0</option>
<option value="../../../../12.0.0" >12.0.0</option>
<option value="../../../../12.1.0" >12.1.0</option>
<option value="../../../../12.2.0" >12.2.0</option>
<option value="../../../../12.2.1" >12.2.1</option>
<option value="../../../../12.3.0" >12.3.0</option>
<option value="../../../../12.4.0" >12.4.0</option>
<option value="../../../../12.5.0" >12.5.0</option>
<option value="../../../../12.5.1" >12.5.1</option>
<option value="../../../../12.6.0" >12.6.0</option>
<option value="../../../../12.7.0" >12.7.0</option>
<option value="../../../../12.8.0" >12.8.0</option>
<option value="../../../../12.9.0" >12.9.0</option>
<option value="../../../../12.10.0" >12.10.0</option>
<option value="../../../../12.11.0" >12.11.0</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../platforms/index.html">Supported Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../components/index.html">OS Components</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Applications</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../audioutils/index.html">Audio Utility libraries</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../boot/index.html">Bootloader Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../benchmarks/index.html">Benchmark Applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../canutils/index.html">CAN Utilities</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../index.html">Cryptography Library Support</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../controlse/index.html"><code class="docutils literal notranslate"><span class="pre">controlse</span></code> Control Secure Element device</a></li>
<li class="toctree-l3"><a class="reference internal" href="../libsodium/index.html"><code class="docutils literal notranslate"><span class="pre">libsodium</span></code> Libsodium Cryptography Library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../libtomcrypt/index.html"><code class="docutils literal notranslate"><span class="pre">libtomcrypt</span></code> LibTomCrypt CrypographyLibrary</a></li>
<li class="toctree-l3"><a class="reference internal" href="../mbedtls/index.html"><code class="docutils literal notranslate"><span class="pre">mbedtls</span></code> Mbed TLS Cryptography Library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../tinycrypt/index.html"><code class="docutils literal notranslate"><span class="pre">tinycrypt</span></code> TinyCrypt cryptography library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../tinydtls/index.html"><code class="docutils literal notranslate"><span class="pre">tinydtls</span></code> Eclipse Tinydtls</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#"><code class="docutils literal notranslate"><span class="pre">wolfSSL</span></code> wolfSSL SSL/TLS Cryptography Library</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#installation">Installation</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#installing-from-nuttx-apps">Installing from nuttx-apps</a></li>
<li class="toctree-l5"><a class="reference internal" href="#installing-from-wolfssl">Installing from wolfssl</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#notes">Notes</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../fsutils/index.html">File System Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../games/index.html">Games</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../graphics/index.html">Graphics Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../industry/index.html">Industrial Applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../inertial/index.html">Inertial Libraries Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../interpreters/index.html">Interpreters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../logging/index.html">Logging Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../lte/index.html">LTE Libraries and NSH Add-Ons</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../math/index.html">Math Library Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../mlearing/index.html">Machine Learning Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../netutils/index.html">Network Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../nsh/index.html">NuttShell (NSH)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sdr/index.html">Software Define Radio Libraries</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../system/index.html">System Libraries and NSH Add-Ons</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../testing/index.html">Testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../tools/index.html">Host Side Tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../wireless/index.html">Wireless Libraries and NSH Add-Ons</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../examples/index.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../implementation/index.html">Implementation Details</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../logos/index.html">NuttX Logos</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../../index.html">Applications</a></li>
<li class="breadcrumb-item"><a href="../index.html">Cryptography Library Support</a></li>
<li class="breadcrumb-item active"><code class="docutils literal notranslate"><span class="pre">wolfSSL</span></code> wolfSSL SSL/TLS Cryptography Library</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/applications/crypto/wolfssl/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>wolfSSL is GPL</p>
</div>
<section id="wolfssl-wolfssl-ssl-tls-cryptography-library">
<h1><code class="docutils literal notranslate"><span class="pre">wolfSSL</span></code> wolfSSL SSL/TLS Cryptography Library<a class="headerlink" href="#wolfssl-wolfssl-ssl-tls-cryptography-library" title="Permalink to this heading"></a></h1>
<section id="installation">
<h2>Installation<a class="headerlink" href="#installation" title="Permalink to this heading"></a></h2>
<section id="installing-from-nuttx-apps">
<h3>Installing from nuttx-apps<a class="headerlink" href="#installing-from-nuttx-apps" title="Permalink to this heading"></a></h3>
<p>Skip to step 6</p>
</section>
<section id="installing-from-wolfssl">
<h3>Installing from wolfssl<a class="headerlink" href="#installing-from-wolfssl" title="Permalink to this heading"></a></h3>
<ol class="arabic">
<li><p>Create working directory (e.g. ~/nuttxspace):</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ cd ~
$ mkdir nuttxspace
</pre></div>
</div>
</li>
<li><p>Install dependencies:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ cd ~/nuttxspace
$ sudo apt install -y bison flex gettext texinfo libncurses5-dev libncursesw5-dev gperf automake libtool pkg-config build-essential gperf genromfs libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils-dev libelf-dev libexpat-dev gcc-multilib g++-multilib picocom u-boot-tools util-linux
$ sudo apt install -y kconfig-frontends
$ sudo apt install -y gcc-arm-none-eabi binutils-arm-none-eabi
</pre></div>
</div>
</li>
<li><p>Clone nuttx and nuttx-apps into working directory:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ git clone https://github.com/apache/nuttx.git nuttx
$ git clone https://github.com/apache/nuttx-apps apps
</pre></div>
</div>
</li>
<li><p>Copy this directory into the working directory applications:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ cp -R RTOS/nuttx/wolfssl ~/nuttxspace/apps/crypto/wolfssl
</pre></div>
</div>
</li>
<li><p>Setup wolfSSL in preparation for the build, <code class="docutils literal notranslate"><span class="pre">WOLFSSL_DIR</span></code> must be the path to the original wolfssl repo:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ cd ~/nuttxspace/apps/crypto/wolfssl
$ WOLFSSL_DIR=&lt;path-to-wolfssl-repo&gt; ./setup-wolfssl.sh
</pre></div>
</div>
</li>
<li><p>Setup baseline NuttX configuration (board + NuttX Shell):</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span> $ cd ~/nuttxspace/nuttx
$ ./tools/configure.sh -l &lt;board&gt;:nsh
If you are using wolfSSL for TLS you should use the ``netnsh`` target if your board supports it::
$ ./tools/configure.sh -l &lt;board&gt;:netnsh
EXAMPLES:
- For NuttX Simulator: ``$ ./tools/configure.sh sim:nsh``
- For BL602 (RISC-V): ``$ ./tools/configure.sh -l bl602evb:nsh``
- For NUCLEO-L552ZE-Q (Cortex-M33): ``$ ./tools/configure.sh -l nucleo-l552ze:nsh``
- For NUCLEO-H753ZI: ``$ ./tools/configure.sh -l nucleo-h743zi:nsh``
- For NUCLEO-F756ZG: ``./tools/configure.sh -l nucleo-144:f746-nsh``
</pre></div>
</div>
</li>
<li><p>Start custom configuration system:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ make menuconfig
</pre></div>
</div>
</li>
<li><p>Configure NuttX to enable the wolfSSL crypto library test applications:</p>
<blockquote>
<div><ul>
<li><p>From main menu select: <strong>Application Configuration &gt; Cryptography Library Support</strong></p></li>
<li><p>Enable and then select <strong>wolfSSL SSL/TLS Cryptography Library</strong></p></li>
<li><p>Enable and then select <strong>wolfSSL applications</strong></p></li>
<li><p>Enable applications:</p>
<blockquote>
<div><ul class="simple">
<li><p><strong>wolfCrypt Benchmark application</strong></p></li>
<li><p><strong>wolfCrypt Test application</strong></p></li>
<li><p><strong>wolfSSL client and server example</strong></p></li>
</ul>
</div></blockquote>
</li>
<li><p>Select Save from bottom menu, saving to <code class="docutils literal notranslate"><span class="pre">.config</span></code> file</p></li>
<li><p>Exit configuration tool</p></li>
</ul>
<p>If you are using wolfSSL for TLS you should use the <code class="docutils literal notranslate"><span class="pre">netnsh</span></code> target and should enable an NTP or some for of system time keeping so that wolfSSL has the current date to check certificates. You will also need to set the right networking settings for NuttX to connect to the internet.</p>
</div></blockquote>
</li>
<li><p>Build NuttX and wolfSSL:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ make
</pre></div>
</div>
</li>
<li><p>Flash the target:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>### Simulator
./nuttx
### STM32 Targets (address may vary)
STM32_Programmer_CLI -c port=swd -d ./nuttx.bin 0x08000000
</pre></div>
</div>
</li>
<li><p>Connect to the target with a serial monitoring tool, the device on linux is usually <code class="docutils literal notranslate"><span class="pre">/dev/ttyACM0</span></code> but it may vary:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>minicom -D /dev/ttyACM0
</pre></div>
</div>
</li>
<li><p>Run the wolfcrypt benchmark and/or test in the NuttX Shell:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nsh&gt; wolfcrypt_test
nsh&gt; wolfcrypt_benchmark
nsh&gt; wolfssl_client_server
</pre></div>
</div>
</li>
</ol>
</section>
</section>
<section id="notes">
<h2>Notes<a class="headerlink" href="#notes" title="Permalink to this heading"></a></h2>
<p>Developed using the following targets:</p>
<ul class="simple">
<li><p>STM NUCLEO-L552ZE-Q (Cortex-M33)</p></li>
<li><p>STM NUCLEO-H753ZI</p></li>
<li><p>STM NUCLEO-F756ZG</p></li>
<li><p>DT-BL10 / BL602 (RISC-V)</p></li>
<li><p>NuttX simulator</p></li>
</ul>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../tinydtls/index.html" class="btn btn-neutral float-left" title="tinydtls Eclipse Tinydtls" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../../fsutils/index.html" class="btn btn-neutral float-right" title="File System Utilities" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2023, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>