Example applications using the wolfSSL lightweight SSL/TLS library
 
 
 
 
 
 
Go to file
Sameeh Jubran 7668535e6b cra-kit: fix Art. 14/17 citations; defer compliance commitments
Review fixes for #603. Corrects the citations the previous commit got
wrong, and takes the public compliance commitments back out so they can
land as their own PR with sign-off.

Citations:
- ENISA is a co-addressee by statute, not a copy recipient. Art. 14(1)
  requires notification simultaneously to the coordinator CSIRT and to
  ENISA; Art. 14(7) directs the submission to the CSIRT end-point,
  "simultaneously accessible to ENISA". Drop the "not sent to ENISA
  directly" framing, which overcorrected.
- Art. 14(7) sets a four-step cascade where there is no EU main
  establishment (authorised representative, importer, distributor,
  Member State with the most users), not a single AR rule.
- EUVD publication is Art. 17(5), not Art. 16(2), and carries the "in
  agreement with the manufacturer" qualifier. The EUVD itself is
  established under NIS2 Art. 12(2). Corrected in the process doc, the
  glossary and the references list.
- Severe-incident deadlines are in Art. 14(4), with the one-month final
  report at 14(4)(c). Art. 14(3) is the duty to notify.
- Support period is Art. 13(8); Art. 13(2) is the risk-assessment duty.
- SRP user validation runs in parallel with reporting and is not a
  prerequisite for fulfilling the reporting obligation, so it cannot gate
  a filing. ENISA's "Assigned Representative" is a platform user role,
  not the Art. 18 authorised representative.
- Triage box content line was one column wider than its border.

Commitments deferred:
- Restore the vulnerability-handling status to the pending-approval
  state, in the document and in 00-INDEX.md.
- Restore the on-call section. The published CVD policy carries no 24h
  acknowledgement and no 72h triage target, so the packet cannot cite it
  as the public source for either.

Also corrects the remaining "24h ENISA" wording in the 00-INDEX.md
timeline, which the previous commit missed.

Signed-off-by: Sameeh Jubran <sameeh@wolfssl.com>
2026-08-24 11:36:36 +03:00
.github cra-kit: fix commercial-license SBOM generation and refresh samples 2026-06-22 13:40:11 +03:00
Arduino
CSharp
ESP32 F-5610: fix ENC28J60 TLS server continuing past a NULL WOLFSSL session, and harden ESP32 socket/string handling 2026-07-13 16:39:01 -06:00
RPi-Pico F-1305 F-1306 F-1714 F-2111 F-2905 F-2906 F-2909 F-3897 F-4125 F-4608 F-6288: fix NULL-deref, fd-leak, unaligned-access, and buffer-overflow bugs across CAN, PKCS7, embedded, and PEM-printing examples 2026-07-14 13:33:25 -06:00
RT1060
Renesas/cs+/RH850 F-1723 F-1724 F-1725 F-2908 F-2910 F-2911 F-3461 F-3683 F-3684 F-3891 F-4605 F-4606 F-4607: fix CAAM, Renesas, SGX, and UEFI examples issues 2026-07-13 17:29:28 -06:00
SE050
SGX_Linux F-1723 F-1724 F-1725 F-2908 F-2910 F-2911 F-3461 F-3683 F-3684 F-3891 F-4605 F-4606 F-4607: fix CAAM, Renesas, SGX, and UEFI examples issues 2026-07-13 17:29:28 -06:00
SGX_Windows
STM32
TOPPERS F-1296 F-2112 F-2893 F-2900 F-3899 F-4121 F-4127: Fix error handling in TLS, DTLS, and protocol examples 2026-07-14 15:06:41 -06:00
X9.146 F-1300 F-2099 F-2100 F-2101 F-2113 F-2116 F-3474 F-3475 F-3476 F-3692 F-3694 F-3695 F-3892 F-3893 F-3894 F-4126: fix key/RNG leaks and zeroize private key buffers in certgen, ecc, and PQ examples 2026-07-14 14:32:22 -06:00
android
btle F-1296 F-2112 F-2893 F-2900 F-3899 F-4121 F-4127: Fix error handling in TLS, DTLS, and protocol examples 2026-07-14 15:06:41 -06:00
caam/seco F-6720: use a full 16-byte IV in CAAM/SECO AES-CBC examples 2026-07-15 10:04:02 -06:00
can-bus F-1293 F-1700 F-1709 F-1710 F-2095 F-2096 F-2098 F-2102 F-2103 F-2896 F-3226 F-4128 F-4129 F-4602: fix socket, buffer, and object leaks in BLE, custom-io, can-bus, certfields, and TLS examples 2026-07-14 12:59:50 -06:00
ccb_vaultic F-1715 F-2114 F-3224 F-3690 F-4120 F-4123 F-4124 F-5614 F-5615: replace hardcoded/UAF-prone secrets and keys with RNG-generated values, zeroize key material before free, and flag non-constant-time secret comparisons 2026-07-14 13:33:25 -06:00
certfields F-1302 F-1303 F-1304 F-1308 F-3471 F-3691 F-4601: fix buffer overflows, malloc/realloc NULL checks, and padding validation in crypto file-encryption examples 2026-07-14 13:33:25 -06:00
certgen F-1298 F-1302 F-1307 F-1712 F-1713 F-1719 F-1720 F-1721 F-1722 F-2093 F-3466 F-3472 F-3477 F-4131 F-4132 F-4600 F-5612 F-6286 F-6289 F-6536: Fix error handling in crypto and signature examples 2026-07-14 15:06:41 -06:00
certmanager Show OCSP checking via CertManager 2026-02-03 16:26:25 -05:00
certs fixing up ech examples + GREASE ECH example 2026-02-24 14:14:17 -07:00
certstore
certvfy
cmake
cra-kit cra-kit: fix Art. 14/17 citations; defer compliance commitments 2026-08-24 11:36:36 +03:00
crypto F-6721: capture wc_RsaKeyToDer() result in a signed int before checking for errors in createKey 2026-07-15 10:09:54 -06:00
custom-io-callbacks F-1293 F-1700 F-1709 F-1710 F-2095 F-2096 F-2098 F-2102 F-2103 F-2896 F-3226 F-4128 F-4129 F-4602: fix socket, buffer, and object leaks in BLE, custom-io, can-bus, certfields, and TLS examples 2026-07-14 12:59:50 -06:00
dtls F-1296 F-2112 F-2893 F-2900 F-3899 F-4121 F-4127: Fix error handling in TLS, DTLS, and protocol examples 2026-07-14 15:06:41 -06:00
dtls-mcast F-1715 F-2114 F-3224 F-3690 F-4120 F-4123 F-4124 F-5614 F-5615: replace hardcoded/UAF-prone secrets and keys with RNG-generated values, zeroize key material before free, and flag non-constant-time secret comparisons 2026-07-14 13:33:25 -06:00
ebpf Add eBPF examples 2025-12-24 12:10:15 +02:00
ecc F-1300 F-2099 F-2100 F-2101 F-2113 F-2116 F-3474 F-3475 F-3476 F-3692 F-3694 F-3695 F-3892 F-3893 F-3894 F-4126: fix key/RNG leaks and zeroize private key buffers in certgen, ecc, and PQ examples 2026-07-14 14:32:22 -06:00
embedded F-1305 F-1306 F-1714 F-2111 F-2905 F-2906 F-2909 F-3897 F-4125 F-4608 F-6288: fix NULL-deref, fd-leak, unaligned-access, and buffer-overflow bugs across CAN, PKCS7, embedded, and PEM-printing examples 2026-07-14 13:33:25 -06:00
freertos
fullstack/freertos-wolfip-wolfssl-https F-2115 F-3693 F-3890 F-3895 F-5608 F-5609 F-5613 F-6290 F-6537 F-6538: fix RPi-Pico, TOPPERS, PSK, lwIP, Mynewt, uTasker, wolfIP, and STSafe examples issues 2026-07-13 17:29:28 -06:00
hash F-1298 F-1302 F-1307 F-1712 F-1713 F-1719 F-1720 F-1721 F-1722 F-2093 F-3466 F-3472 F-3477 F-4131 F-4132 F-4600 F-5612 F-6286 F-6289 F-6536: Fix error handling in crypto and signature examples 2026-07-14 15:06:41 -06:00
http-message-signatures http-message-signatures: address Skoll review feedback 2026-04-23 12:37:58 +03:00
java
kernel/bsdkm
lwip F-2115 F-3693 F-3890 F-3895 F-5608 F-5609 F-5613 F-6290 F-6537 F-6538: fix RPi-Pico, TOPPERS, PSK, lwIP, Mynewt, uTasker, wolfIP, and STSafe examples issues 2026-07-13 17:29:28 -06:00
maxq10xx
meta-wolfssl-linux-fips Example project for using a FIPs Ready linux image on qemu and on RPI 5 with an initramfs kernel module loading, and ported projects to utilize wolfCrypt throughout the image example 2026-04-20 14:29:03 -06:00
mynewt F-2115 F-3693 F-3890 F-3895 F-5608 F-5609 F-5613 F-6290 F-6537 F-6538: fix RPi-Pico, TOPPERS, PSK, lwIP, Mynewt, uTasker, wolfIP, and STSafe examples issues 2026-07-13 17:29:28 -06:00
ocsp F-3220 F-3221 F-3696 F-4603 F-4604 F-4609: zeroize DTLS session and OCSP CA key buffers, fix exit codes and ocsp_resp leak 2026-07-14 09:50:18 -06:00
picotcp
pk F-1298 F-1302 F-1307 F-1712 F-1713 F-1719 F-1720 F-1721 F-1722 F-2093 F-3466 F-3472 F-3477 F-4131 F-4132 F-4600 F-5612 F-6286 F-6289 F-6536: Fix error handling in crypto and signature examples 2026-07-14 15:06:41 -06:00
pkcs7 F-2907 F-2912 F-3466 F-3467 F-3468 F-3469 F-3470: fix file handle, PKCS7 object, and key-decode buffer leaks across pkcs7 examples 2026-07-15 09:39:17 -06:00
pkcs11 F-1298 F-1302 F-1307 F-1712 F-1713 F-1719 F-1720 F-1721 F-1722 F-2093 F-3466 F-3472 F-3477 F-4131 F-4132 F-4600 F-5612 F-6286 F-6289 F-6536: Fix error handling in crypto and signature examples 2026-07-14 15:06:41 -06:00
pq Update LMS and XMSS example to latest 2026-07-16 11:54:51 -07:00
psa
psk F-1296 F-2112 F-2893 F-2900 F-3899 F-4121 F-4127: Fix error handling in TLS, DTLS, and protocol examples 2026-07-14 15:06:41 -06:00
puf F-3896 F-6291: fix linked-list head overwrite leak in memory-bucket-optimizer and zeroize PUF key material on exit 2026-07-14 13:05:13 -06:00
riot-os-posix-lwip
rtl8735b rtl8735b: GCM-wrap the HUK ECDSA scalar (authenticated unwrap) 2026-07-02 16:43:55 -07:00
signature F-1298 F-1302 F-1307 F-1712 F-1713 F-1719 F-1720 F-1721 F-1722 F-2093 F-3466 F-3472 F-3477 F-4131 F-4132 F-4600 F-5612 F-6286 F-6289 F-6536: Fix error handling in crypto and signature examples 2026-07-14 15:06:41 -06:00
staticmemory F-3896 F-6291: fix linked-list head overwrite leak in memory-bucket-optimizer and zeroize PUF key material on exit 2026-07-14 13:05:13 -06:00
stsafe F-2115 F-3693 F-3890 F-3895 F-5608 F-5609 F-5613 F-6290 F-6537 F-6538: fix RPi-Pico, TOPPERS, PSK, lwIP, Mynewt, uTasker, wolfIP, and STSafe examples issues 2026-07-13 17:29:28 -06:00
tirtos_ccs_examples F-1305 F-1306 F-1714 F-2111 F-2905 F-2906 F-2909 F-3897 F-4125 F-4608 F-6288: fix NULL-deref, fd-leak, unaligned-access, and buffer-overflow bugs across CAN, PKCS7, embedded, and PEM-printing examples 2026-07-14 13:33:25 -06:00
tls F-1296 F-2112 F-2893 F-2900 F-3899 F-4121 F-4127: Fix error handling in TLS, DTLS, and protocol examples 2026-07-14 15:06:41 -06:00
tls-options F-1296 F-2112 F-2893 F-2900 F-3899 F-4121 F-4127: Fix error handling in TLS, DTLS, and protocol examples 2026-07-14 15:06:41 -06:00
tpm
uefi-library F-1723 F-1724 F-1725 F-2908 F-2910 F-2911 F-3461 F-3683 F-3684 F-3891 F-4605 F-4606 F-4607: fix CAAM, Renesas, SGX, and UEFI examples issues 2026-07-13 17:29:28 -06:00
uefi-static F-1723 F-1724 F-1725 F-2908 F-2910 F-2911 F-3461 F-3683 F-3684 F-3891 F-4605 F-4606 F-4607: fix CAAM, Renesas, SGX, and UEFI examples issues 2026-07-13 17:29:28 -06:00
utasker F-2115 F-3693 F-3890 F-3895 F-5608 F-5609 F-5613 F-6290 F-6537 F-6538: fix RPi-Pico, TOPPERS, PSK, lwIP, Mynewt, uTasker, wolfIP, and STSafe examples issues 2026-07-13 17:29:28 -06:00
x509_acert
.gitignore PQC proxy 2026-06-25 20:48:22 +10:00
.gitmodules
README.md Add CRA Kit for customer SBOM integration 2026-06-04 04:54:45 +03:00

README.md

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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


certgen (wolfSSL Certificate Generation)

This directory contains examples that demonstrate using wolfSSL to generate and sign certificates.

Please see the certgen/README.md for further usage and details.


certmanager (wolfSSL CertManager)

This directory contains examples that demonstrate using CertManager (Certificate Manager) functionality.

Please see the certmanager/README.md for further usage and details.


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 for further usage and details.


CSharp (C# Wrapper Examples)

This directory contains examples that demonstrate using the C# wrapper.

Please see the CSharp/README.md for further usage and details.


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 for further usage and details.


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 for further usage and details.


ecc (Elliptic Curve Cryptography)

This directory contains examples that demonstrate the various use-cases of wolfcrypt ECC.

Please see the ecc/README.md for further usage and details.


ESP32 (Espressif)

This directory contains examples for the Espressif ESP32 chips.

Please see the ESP32/README.md for further usage and details.


embedded (Embedded Systems)

This directory contains examples that demonstrate TLS client/servers communicating through buffers and using sockets.

Please see the embedded/README.md for further usage and details.


hash (wolfCrypt Hash Examples)

This directory contains examples that demonstrate how to hash an input file using wolfCrypt.

Please see the hash/README.md for further usage and details.


java (wolfJSSE Examples)

This directory contains examples that demonstrate HTTPS URL use with wolfJSSE and example keystores.

Please see the java/README.md for further usage and details.


mynewt (Apache Mynewt Examples)

This directory contains examples that demonstrate using wolfSSL with Apache Mynewt OS.

Please see the mynewt/README.md for further usage and details.


picotcp (picoTCP Examples)

This directory contains a TLS server created by using picoTCP via wolfSSL custom callbacks.

Please see the picotcp/README.md for further usage and details.


picotcp (picoTCP Examples)

This directory contains a TLS server created by using picoTCP via wolfSSL custom callbacks.

Please see the picotcp/README.md for further usage and details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


RT1060 (i.MX RT1060-EVK)

This directory contains a wolfCrypt benchmark test application for i.MX RT1060-EVK.

Please see the RT1060/README.md for further usage and details.


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 for further details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


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 for further usage and details.


uefi-static (wolfCrypt UEFI application Example)

This directory contains an example UEFI application that runs wolfcrypt test.

Please see the uefi-static/README.md for further usage and details.


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 for further usage and details.


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, a who provides what cheat sheet, full glossary, AI playbook, sample customer-side auditor packet (fictional Acme Connect Gateway), manufacturer-side filings (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.

Please see the cra-kit/README.md for further usage and details.


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 for further usage and details.


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.


Support

Please contact wolfSSL at support@wolfssl.com with any questions, bug fixes, or suggested feature additions.