• Stars
    star
    243
  • Rank 166,489 (Top 4 %)
  • Language
    C
  • Created over 10 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Example applications using the wolfSSL lightweight SSL/TLS library

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.


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.


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.


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 [email protected] with any questions, bug fixes, or suggested feature additions.

More Repositories

1

wolfssl

The wolfSSL library is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!
C
2,154
star
2

wolfMQTT

wolfMQTT is a small, fast, portable MQTT client implementation, including support for TLS 1.3.
C
505
star
3

wolfssh

wolfSSH is a small, fast, portable SSH implementation, including support for SCP and SFTP.
C
341
star
4

wolfBoot

wolfBoot is a portable, OS-agnostic, secure bootloader for microcontrollers, supporting firmware authentication and firmware update mechanisms.
C
309
star
5

wolfTPM

wolfTPM is a highly portable TPM 2.0 library, designed for embedded use.
C
215
star
6

wolfssljni

wolfSSL JSSE provider and JNI wrapper for SSL/TLS, supporting up to TLS 1.3!
Java
57
star
7

wolfssl-py

Python wrapper for wolfSSL embedded SSL/TLS library.
Python
39
star
8

wolfBoot-examples

Examples for the wolfSSL wolfBoot Secure Bootloader using wolfCrypt
C
36
star
9

wolfsentry

wolfSSL Intrusion Detection and Prevention System (IDPS)
C
33
star
10

wolfssl-nginx

Adds wolfSSL support to Nginx.
Shell
33
star
11

wolfcrypt-py

A Python wrapper that encapsulates wolfSSL's wolfCrypt API.
Python
31
star
12

meta-wolfssl

wolfSSL layer for OpenEmbedded and Yocto, containing product recipes, examples, and bbappend files.
BitBake
27
star
13

wolfcrypt-jni

wolfCrypt JCE provider and JNI wrapper
Java
27
star
14

go-wolfssl

golang wrapper for wolfSSL lightweight TLS library and wolfCrypt cryptography library.
Go
25
star
15

oss-fuzz-targets

Fuzz targets for OSS-Fuzz
Makefile
23
star
16

wolfssh-examples

Example applications using the wolfSSH Library.
C
21
star
17

wolfEngine

wolfCrypt and wolfCrypt FIPS engine for OpenSSL
C
21
star
18

osp

wolfSSL Open Source project ports
C
19
star
19

Dockerfile

wolfSSL Dockerfiles for demo usage
Shell
18
star
20

mysql-patch

Patch for putting wolfSSL into MySQL
14
star
21

wolfssl-freertos

Port of FreeRTOS to use wolfSSL
C
14
star
22

wolfProvider

wolfCrypt and wolfCrypt FIPS provider for OpenSSL
C
14
star
23

wolfKeyMgr

Secure key management service for middle-box decryption of TLS traffic
C
13
star
24

documentation

wolfSSL product manuals and documentation.
C
11
star
25

wolfPKCS11

wolfSSL PKCS#11
C
11
star
26

wolfCLU

The wolfSSL Command Line Utility wolfCLU
C
11
star
27

wolfsm

wolfSSL SM cipher implementations
C
11
star
28

wolfAsyncCrypt

wolfSSL Asynchronous Cryptography
C
10
star
29

Renesas

This repository contains commercially licensed wolfSSL products and example code for use on specified Renesas platforms.
C
9
star
30

udp-proxy

Simple UDP proxy for testing only
C
9
star
31

microchip-atecc-demos

wolfSSL Microchip ATECC608A Demo Applications
C
8
star
32

Arduino-wolfSSL

This repository is a restructured copy of https://github.com/wolfSSL/wolfssl/ for the Arduino environment. Any Pull Requests for code changes should be opened there.
C
7
star
33

wolfHSM

HSM library that uses wolfCrypt as it's fallback crypto
C
4
star
34

wolfcrypt_nodejs

wolfCrypt Node.JS support
JavaScript
3
star
35

actions-build-autotools-project

Action that builds an autotools project
2
star