478 lines
12 KiB
Markdown
478 lines
12 KiB
Markdown
wolfSSL Example Applications
|
|
============================
|
|
|
|
This repository contains example applications, written in C, which
|
|
demonstrate how to use the wolfSSL lightweight SSL/TLS library for secure
|
|
communication.
|
|
|
|
Each directory represents a unique topic (SSL/TLS, DTLS, PSK, etc.) and
|
|
contains a Makefile as well as a simple tutorial on the given topic.
|
|
|
|
## Current Examples
|
|
|
|
|
|
#### android (Android Studio and NDK Examples)
|
|
|
|
This directory contains examples that demonstrate using wolfSSL,
|
|
wolfSSL JNI/JSSE, and wolfCrypt JNI/JCE on the Android platform. Examples
|
|
use either Android Studio with Gradle or the Android NDK standalone toolchain.
|
|
|
|
Please see the [android/README.md](android/README.md) for further usage and
|
|
details.
|
|
|
|
<br />
|
|
|
|
#### BTLE
|
|
|
|
This directory contains examples for securing a Bluetooth Low Energy Link (BTLE).
|
|
BTLE packets are small and throughput is low, so these examples demonstrate a
|
|
way to exchange data securely without BTLE pairing.
|
|
|
|
Please see the [btle/README.md](btle/README.md) for further usage and details.
|
|
|
|
<br />
|
|
|
|
#### can-bus
|
|
|
|
This directory contains an example echo server/client using wolfSSL over
|
|
CAN bus with an ISO-TP transport layer. It can be used with a virtual CAN bus
|
|
in Linux.
|
|
|
|
Please see the [can-bus/README.md](can-bus/README.md) for further usage and details.
|
|
|
|
<br />
|
|
|
|
#### certfields (X509 field extraction)
|
|
|
|
This directory contains an example that demonstrate using wolfSSL
|
|
to read a DER encoded certificate and extract the public key and
|
|
subject name information.
|
|
|
|
Please see the [certfields/README.md](certfields/README.md) for further usage
|
|
and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### certgen (wolfSSL Certificate Generation)
|
|
|
|
This directory contains examples that demonstrate using wolfSSL to
|
|
generate and sign certificates.
|
|
|
|
Please see the [certgen/README.md](certgen/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### certmanager (wolfSSL CertManager)
|
|
|
|
This directory contains examples that demonstrate using
|
|
CertManager (Certificate Manager) functionality.
|
|
|
|
Please see the [certmanager/README.md](certmanager/README.md) for further usage
|
|
and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### crypto (wolfCrypt Examples)
|
|
|
|
This directory contains examples that demonstrate using the wolfCrypt functionality
|
|
to encrypt files with different algorithms (aes, 3des, etc.)
|
|
|
|
Please see the [crypto/README.md](crypto/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### CSharp (C# Wrapper Examples)
|
|
|
|
This directory contains examples that demonstrate using the C# wrapper.
|
|
|
|
Please see the [CSharp/README.md](CSharp/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### custom-io-callbacks (wolfSSL Custom IO Callbacks)
|
|
|
|
This directory contains examples that demonstrate how the custom IO callbacks
|
|
can be used to 4 facilitate a TLS connection using any medium.
|
|
|
|
Please see the [custom-io-callbacks/README.md](custom-io-callbacks/README.md)
|
|
for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### DTLS (Datagram TLS)
|
|
|
|
This directory contains examples of using DTLS, with client and server
|
|
examples demonstrating UDP, DTLS, non-blocking, session resumption,
|
|
and multi-threading.
|
|
|
|
When compiling wolfSSL for use with these examples, wolfSSL will need to be
|
|
compiled with DTLS support:
|
|
|
|
```
|
|
cd wolfssl-[version]
|
|
./configure --enable-dtls
|
|
```
|
|
|
|
Examples in this directory may be compiled using:
|
|
|
|
```
|
|
cd ./dtls
|
|
make
|
|
```
|
|
|
|
Please see the [dtls/README.md](dtls/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### ecc (Elliptic Curve Cryptography)
|
|
|
|
This directory contains examples that demonstrate the various use-cases of
|
|
wolfcrypt ECC.
|
|
|
|
Please see the [ecc/README.md](ecc/README.md) for further usage and details.
|
|
|
|
<br />
|
|
|
|
#### ESP32 (Espressif)
|
|
|
|
This directory contains examples for the Espressif ESP32 chips.
|
|
|
|
Please see the [ESP32/README.md](ecc/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### embedded (Embedded Systems)
|
|
|
|
This directory contains examples that demonstrate TLS client/servers communicating
|
|
through buffers and using sockets.
|
|
|
|
Please see the [embedded/README.md](embedded/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### hash (wolfCrypt Hash Examples)
|
|
|
|
This directory contains examples that demonstrate how to hash an input file using
|
|
wolfCrypt.
|
|
|
|
Please see the [hash/README.md](hash/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### java (wolfJSSE Examples)
|
|
|
|
This directory contains examples that demonstrate HTTPS URL use with wolfJSSE
|
|
and example keystores.
|
|
|
|
Please see the [java/README.md](java/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### mynewt (Apache Mynewt Examples)
|
|
|
|
This directory contains examples that demonstrate using wolfSSL with Apache
|
|
Mynewt OS.
|
|
|
|
Please see the [mynewt/README.md](mynewt/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### picotcp (picoTCP Examples)
|
|
|
|
This directory contains a TLS server created by using picoTCP via wolfSSL
|
|
custom callbacks.
|
|
|
|
Please see the [picotcp/README.md](picotcp/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### picotcp (picoTCP Examples)
|
|
|
|
This directory contains a TLS server created by using picoTCP via wolfSSL
|
|
custom callbacks.
|
|
|
|
Please see the [picotcp/README.md](picotcp/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### pk (Public-Key)
|
|
|
|
This directory contains examples that demonstrate various wolfCrypt public-key
|
|
functionality (storing and loading keys after generation, extracting public key
|
|
from private key, etc.).
|
|
|
|
Please see the [pk/README.md](pk/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### pkcs11 (PKCS #11)
|
|
|
|
This directory contains examples of using wolfSSL's PKCS #11 feature and a TLS
|
|
server example using a PKCS 11 based key.
|
|
|
|
Please see the [pkcs11/README.md](pkcs11/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### pkcs7 (PKCS #7)
|
|
|
|
This directory contains example applications that demonstrate usage of the
|
|
wolfCrypt PKCS#7/CMS API, included in the [wolfSSL embedded SSL/TLS library].
|
|
|
|
It includes examples of several different content types (EncryptedData, SignedData,
|
|
EnvelopedData, CompressedData), and demonstrates both signing/encrypting and
|
|
verifying/decrypting operations.
|
|
|
|
Please see the [pkcs7/README.md](pkcs7/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### PUF (SRAM Physically Unclonable Function)
|
|
|
|
This directory contains a bare-metal example demonstrating wolfCrypt's SRAM PUF
|
|
support. It derives device-unique cryptographic keys from the power-on state of
|
|
SRAM memory using a BCH(127,64,t=10) fuzzy extractor with HKDF key derivation.
|
|
Tested on NUCLEO-H563ZI (Cortex-M33).
|
|
|
|
Please see the [puf/README.md](puf/README.md) for further usage and details.
|
|
|
|
<br />
|
|
|
|
#### PSK (Pre-Shared Keys)
|
|
|
|
This directory contains examples of using PSK, with client and server examples
|
|
demonstrating TCP/IP, PSK, non-blocking, session resumption, and multi-threading.
|
|
|
|
When compiling wolfSSL for use with these examples, wolfSSL will need to be
|
|
compiled with PSK support:
|
|
|
|
```
|
|
cd wolfssl-[version]
|
|
./configure --enable-psk
|
|
```
|
|
|
|
Examples in this directory may be compiled using:
|
|
|
|
```
|
|
cd ./psk
|
|
make
|
|
```
|
|
|
|
Please see the [psk/README.md](psk/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### riot-os-posix-lwip (RIOT-OS)
|
|
|
|
This directory contains examples that demonstrate how to use wolfSSL TLS sockets
|
|
over RIOT-OS POSIX sockets.
|
|
|
|
Please see the [riot-os-posix-lwip/README.md](riot-os-posix-lwip/README.md) for
|
|
further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### RT1060 (i.MX RT1060-EVK)
|
|
|
|
This directory contains a wolfCrypt benchmark test application for i.MX RT1060-EVK.
|
|
|
|
Please see the [RT1060/README.md](RT1060/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### NXP SE050
|
|
|
|
This directory contains example applications for NXP's SE050. The examples
|
|
have been tested on a Raspberry Pi with SE050 EdgeLock.
|
|
|
|
Please see the [SE050/README.md](SE050/README.md) for further details.
|
|
|
|
|
|
<br />
|
|
|
|
#### SGX_Linux (Linux Enclave)
|
|
|
|
This directory contains an example application, written in C, which demonstrates
|
|
how to link the wolfSSL lightweight SSL/TLS library with a simple Enclave using
|
|
Linux. The example has been tested with Ubuntu 16.04.
|
|
|
|
Please see the [SGX_Linux/README.md](SGX_Linux/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### SGX_Windows (Windows Enclave)
|
|
|
|
This directory contains an example application, written in C++, which demonstrates
|
|
how to link the wolfSSL lightweight SSL/TLS library with a simple Enclave using
|
|
Windows.
|
|
|
|
Please see the [SGX_Windows/README.md](SGX_Windows/README.md) for further usage
|
|
and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### signature (Sign and Verify Examples)
|
|
|
|
This directory contains examples that demonstrate using wolfSSL to sign and
|
|
verify binary data (supports RSA and ECC for signing and MD2, MD4, MD5, SHA,
|
|
SHA224, SHA256, SHA384 and SHA512).
|
|
|
|
Please see the [signature/README.md](signature/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### tirtos_ccs_examples (TI-RTOS)
|
|
|
|
This directory contains a client/server examples that demonstrates using wolfSSL
|
|
in a TI-RTOS ecosystem.
|
|
|
|
Please see the [tirtos_ccs_examples/README.md](tirtos_ccs_examples/README.md) for
|
|
further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### TLS
|
|
|
|
This directory contains examples of using SSL/TLS, with client and server
|
|
examples demonstrating TCP/IP, SSL/TLS, non-blocking, session resumption, and
|
|
multi-threading.
|
|
|
|
Examples in this directory may be compiled using:
|
|
|
|
```
|
|
cd ./tls
|
|
make
|
|
```
|
|
|
|
Please see the [tls/README.md](tls/README.md) for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### utasker (uTasker wolfSSL Example Tasks)
|
|
|
|
This directory contains example uTasker client and server tasks that
|
|
demonstrate using wolfSSL with the uTasker stack. These have been tested on
|
|
the uTasker Simulator.
|
|
|
|
Please see the [utasker/README.md](utasker/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### hsm (wolfHSM Examples)
|
|
|
|
This directory contains examples demonstrating wolfSSL integration with wolfHSM,
|
|
a portable Hardware Security Module framework.
|
|
|
|
Please see the [hsm/README.md](hsm/README.md) for further details.
|
|
|
|
|
|
<br />
|
|
|
|
#### uefi-static (wolfCrypt UEFI application Example)
|
|
|
|
This directory contains an example UEFI application that runs wolfcrypt test.
|
|
|
|
Please see the [uefi-static/README.md](uefi-static/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
#### http-message-signatures (RFC 9421 HTTP Message Signatures)
|
|
|
|
This directory contains examples that demonstrate RFC 9421 HTTP Message
|
|
Signatures using wolfCrypt Ed25519, including a signing example,
|
|
client/server demo, and test vectors for RFC 9421 Appendix B.2.6.
|
|
|
|
Please see the
|
|
[http-message-signatures/README.md](http-message-signatures/README.md)
|
|
for further usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### cra-kit (wolfSSL CRA Kit)
|
|
|
|
This directory is **not** a TLS/crypto tutorial. It demonstrates how to
|
|
generate wolfSSL **component SBOMs** (SPDX + CycloneDX), nest them in a
|
|
**fictional product SBOM**, and understand optional **bomsh** build provenance
|
|
(Linux host only) for EU Cyber Resilience Act-style software transparency.
|
|
|
|
Includes a [CRA compliance shortlist](cra-kit/CRA-Compliance-Shortlist.md), a
|
|
[who provides what cheat sheet](cra-kit/CRA-Cheat-Sheet.md), full
|
|
[glossary](cra-kit/CRA-Supply-Chain-Glossary.md), [AI playbook](cra-kit/SKILL.md), sample
|
|
[customer-side auditor packet](cra-kit/auditor-packet/) (fictional Acme Connect
|
|
Gateway), [manufacturer-side filings](cra-kit/wolfssl-inc-auditor-packet/) (what
|
|
wolfSSL Inc. itself ships under CRA — classification, conformity assessment,
|
|
declaration of conformity template, EU AR status, etc.), and helper scripts
|
|
(`validate.sh` runs without building wolfSSL, with optional `cyclonedx-cli` /
|
|
`pyspdxtools` schema validation). Regenerating component SBOMs requires a
|
|
wolfSSL tree with SBOM support — see [cra-kit/README.md](cra-kit/README.md).
|
|
|
|
Please see the [cra-kit/README.md](cra-kit/README.md) for further
|
|
usage and details.
|
|
|
|
|
|
<br />
|
|
|
|
#### uefi-library (wolfCrypt UEFI boot module and test app)
|
|
|
|
This directory contains a UEFI wolfCrypt protocol driver (`libwolfcrypt.efi`)
|
|
and a companion test application (`test.efi`). Examples run on qemu.
|
|
|
|
Please see the [uefi-library/README.md](uefi-library/README.md) for further usage and
|
|
details.
|
|
|
|
|
|
<br />
|
|
|
|
## Notes
|
|
|
|
|
|
When necessary, examples will use the example certificates and keys located
|
|
in the ./certs directory. These certificates and keys have been pulled in from
|
|
the main wolfSSL repository.
|
|
|
|
To generate your own cert text, see the [DER to C script](https://github.com/wolfSSL/wolfssl/blob/master/scripts/dertoc.pl).
|
|
|
|
<br />
|
|
|
|
## Support
|
|
|
|
Please contact wolfSSL at support@wolfssl.com with any questions, bug fixes,
|
|
or suggested feature additions.
|