IMPORTANT NOTE
Until March 2021, this repository contained binary distribution of wolfSSL libraries, which could be used royalty-free on all Espressif MCU products. This royalty-free binary distribution is not available anymore.
This repository now uses upstream wolfSSL GitHub pointer as submodule and can still be used as ESP-IDF component. Please follow licensing requirements per wolfssl/LICENSING
git clone --recursive https://github.com/espressif/esp-wolfssl
esp-wolfssl
esp-tls related options can be obtained by choosing SSL library as wolfSSL
in idf.py/make menuconfig -> Component Config -> ESP-TLS -> choose SSL Library
.
It shows following options
Enable SMALL_CERT_VERIFY
esp-wolfssl
.Common Name = Issuer Name
, Such a strict check is not compulsary in most cases hence by default the flag is enabled but the option is provided for the user.Enable Debug Logs for wolfSSL
esp-wolfssl
specific options (see NOTE) are available under idf.py/make menuconfig -> Component Config -> wolfSSL
.
Enable ALPN ( Application Layer Protocol Negotiation ) in wolfSSL
Enable OCSP (Online Certificate Status Protocol) in wolfSSL
esp-tls
only if wolfSSL
is selected as its SSL/TLS Library.The following table shows a typical comparison between wolfSSL and mbedtls when https_request
(which has server authentication) was run with both
SSL/TLS libraries and with all respective configurations set to default.
_(mbedtls IN_CONTENT length and OUTCONTENT length were set to 16384 bytes and 4096 bytes respectively)
Property | wolfSSL | mbedTLS |
---|---|---|
Total Heap Consumed | ~19 Kb | ~37 Kb |
Task Stack Used | ~2.2 Kb | ~3.6 Kb |
Bin size | ~858 Kb | ~736 Kb |
In general, these are links which will be useful for using both wolfSSL, as well as networked and secure applications in general. Furthermore, there is a more comprehensive tutorial that can be found in Chapter 11 of the official wolfSSL manual. The examples in the wolfSSL package and Chapter 11 do appropriate error checking, which is worth taking a look at. For a more comprehensive API, check out chapter 17 of the official manual.