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 and DTLS 1.3!
Top Related Projects
TLS/SSL and crypto library
An open source, portable, easy to use, readable and flexible TLS library, and reference implementation of the PSA Cryptography API. Releases are on a varying cadence, typically around 3 - 6 months between releases.
LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code. Pull requests or patches sent to tech@openbsd.org are welcome.
Mirror of BoringSSL
An implementation of the TLS/SSL protocols
Fast Elliptic Curve Cryptography in plain javascript
Quick Overview
wolfSSL is a lightweight, portable, C-language-based SSL/TLS library targeted for embedded, RTOS, and resource-constrained environments. It's a popular choice for IoT, automotive, and enterprise security applications due to its small footprint, speed, and extensive feature set.
Pros
- Small footprint (20-100 kB) ideal for embedded systems
- Fast performance, optimized for speed and efficiency
- Extensive platform support, including various RTOS and embedded systems
- Strong security features, including support for the latest TLS 1.3 protocol
Cons
- Less extensive documentation compared to some larger SSL/TLS libraries
- Smaller community compared to OpenSSL
- Some advanced features may require a commercial license
- Learning curve for developers new to embedded SSL/TLS implementations
Code Examples
- Initializing wolfSSL:
#include <wolfssl/ssl.h>
int ret = wolfSSL_Init();
if (ret != WOLFSSL_SUCCESS) {
// Error handling
}
- Creating a wolfSSL context:
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method());
if (ctx == NULL) {
// Error handling
}
- Establishing a secure connection:
WOLFSSL* ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
// Error handling
}
wolfSSL_set_fd(ssl, sockfd);
int ret = wolfSSL_connect(ssl);
if (ret != WOLFSSL_SUCCESS) {
// Error handling
}
Getting Started
To get started with wolfSSL:
-
Download the wolfSSL source from GitHub:
git clone https://github.com/wolfSSL/wolfssl.git
-
Configure and build the library:
cd wolfssl ./autogen.sh ./configure make sudo make install
-
Include wolfSSL in your project:
#include <wolfssl/ssl.h>
-
Link against the wolfSSL library when compiling:
gcc -o your_program your_program.c -lwolfssl
Remember to initialize wolfSSL with wolfSSL_Init()
at the beginning of your program and clean up with wolfSSL_Cleanup()
at the end.
Competitor Comparisons
TLS/SSL and crypto library
Pros of OpenSSL
- Extensive feature set and wide protocol support
- Large community and extensive documentation
- Broad platform compatibility and hardware acceleration support
Cons of OpenSSL
- Larger codebase and memory footprint
- More complex API and steeper learning curve
- Slower release cycle for updates and patches
Code Comparison
OpenSSL example (TLS client):
SSL_CTX *ctx = SSL_CTX_new(TLS_client_method());
SSL *ssl = SSL_new(ctx);
SSL_set_fd(ssl, socket);
SSL_connect(ssl);
wolfSSL example (TLS client):
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method());
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_set_fd(ssl, socket);
wolfSSL_connect(ssl);
Both libraries offer similar APIs, but wolfSSL tends to have a more streamlined interface. OpenSSL provides more configuration options, while wolfSSL focuses on a smaller, more efficient codebase. OpenSSL is more widely adopted and has broader protocol support, whereas wolfSSL is designed for embedded systems and resource-constrained environments, offering a smaller footprint and faster performance in many cases.
An open source, portable, easy to use, readable and flexible TLS library, and reference implementation of the PSA Cryptography API. Releases are on a varying cadence, typically around 3 - 6 months between releases.
Pros of Mbed TLS
- More extensive documentation and examples
- Broader platform support, including bare-metal environments
- Easier integration with ARM-based systems and IoT devices
Cons of Mbed TLS
- Generally slower performance compared to wolfSSL
- Larger code size and memory footprint
- Less frequent updates and slower adoption of new standards
Code Comparison
Mbed TLS initialization:
#include "mbedtls/ssl.h"
mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_ssl_init(&ssl);
mbedtls_ssl_config_init(&conf);
wolfSSL initialization:
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method());
ssl = wolfSSL_new(ctx);
Both libraries offer similar APIs for SSL/TLS functionality, but wolfSSL tends to have a more streamlined approach with fewer function calls required for basic setup. Mbed TLS provides more granular control over configuration options, which can be beneficial for complex scenarios but may require more code for simple use cases.
LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code. Pull requests or patches sent to tech@openbsd.org are welcome.
Pros of LibreSSL
- More comprehensive and feature-rich, offering a wider range of cryptographic functions
- Better compatibility with OpenSSL, making it easier to integrate into existing systems
- More active development and frequent updates
Cons of LibreSSL
- Larger codebase and memory footprint, which may not be ideal for embedded systems
- Potentially slower performance due to its more extensive feature set
- Less focus on small-scale or resource-constrained environments
Code Comparison
LibreSSL:
SSL_CTX *ctx = SSL_CTX_new(TLS_method());
SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION);
SSL_CTX_set_max_proto_version(ctx, TLS1_3_VERSION);
wolfSSL:
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method());
wolfSSL_CTX_SetMinVersion(ctx, WOLFSSL_TLSV1_2);
wolfSSL_CTX_SetMaxVersion(ctx, WOLFSSL_TLSV1_3);
Both libraries provide similar functionality for creating SSL contexts and setting protocol versions. However, LibreSSL's API more closely resembles OpenSSL, while wolfSSL uses its own naming conventions.
Mirror of BoringSSL
Pros of BoringSSL
- Developed and maintained by Google, benefiting from their extensive resources and expertise
- Designed for performance and efficiency in modern systems
- Regularly updated with the latest security patches and improvements
Cons of BoringSSL
- Less flexible and customizable compared to wolfSSL
- Not as widely supported across different platforms and architectures
- May have a steeper learning curve for developers unfamiliar with Google's coding practices
Code Comparison
wolfSSL:
int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX* ctx, const char* file,
int format)
{
WOLFSSL_ENTER("wolfSSL_CTX_use_certificate_file");
return ProcessFile(ctx, file, format, CERT_TYPE, NULL, 0, NULL);
}
BoringSSL:
int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type) {
BIO *in;
int ret = 0;
X509 *x = NULL;
in = BIO_new(BIO_s_file());
if (in == NULL) {
OPENSSL_PUT_ERROR(SSL, ERR_R_BUF_LIB);
goto end;
}
Both libraries provide similar functionality for loading certificates, but BoringSSL's implementation is more verbose and includes additional error handling.
An implementation of the TLS/SSL protocols
Pros of s2n-tls
- Designed specifically for AWS services, offering seamless integration with AWS infrastructure
- Focused on simplicity and minimal code base, potentially reducing the attack surface
- Regularly audited and maintained by AWS, ensuring high security standards
Cons of s2n-tls
- Limited to TLS 1.2 and 1.3, lacking support for older protocols
- Fewer cryptographic algorithms and features compared to wolfSSL
- Less flexibility for customization and integration with non-AWS systems
Code Comparison
s2n-tls:
s2n_config *config = s2n_config_new();
s2n_connection *conn = s2n_connection_new(S2N_CLIENT);
s2n_connection_set_config(conn, config);
s2n_negotiate(conn, &blocked);
wolfSSL:
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method());
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_connect(ssl);
wolfSSL_write(ssl, message, strlen(message));
Both libraries offer straightforward APIs for establishing TLS connections, but s2n-tls focuses on AWS-specific use cases, while wolfSSL provides a more general-purpose solution with broader protocol support and customization options.
Fast Elliptic Curve Cryptography in plain javascript
Pros of elliptic
- Lightweight and focused specifically on elliptic curve cryptography
- Easier to integrate into JavaScript/Node.js projects
- More active community contributions and frequent updates
Cons of elliptic
- Limited to elliptic curve operations, not a full cryptographic suite
- Less comprehensive documentation compared to wolfSSL
- May have lower performance for certain operations on some platforms
Code Comparison
elliptic:
const EC = require('elliptic').ec;
const ec = new EC('secp256k1');
const key = ec.genKeyPair();
const signature = key.sign(msgHash);
console.log(signature.toDER('hex'));
wolfSSL:
#include <wolfssl/options.h>
#include <wolfssl/wolfcrypt/ecc.h>
ecc_key key;
wc_ecc_init(&key);
wc_ecc_make_key(&rng, 32, &key);
wc_ecc_sign_hash(hash, hashLen, signature, &sigLen, &rng, &key);
wolfSSL offers a more comprehensive cryptographic library with support for various algorithms and protocols, while elliptic focuses specifically on elliptic curve operations. elliptic is more suitable for JavaScript-based projects, whereas wolfSSL is better for C/C++ applications requiring a full-featured cryptographic suite.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
wolfSSL Embedded SSL/TLS Library
The wolfSSL embedded SSL library (formerly CyaSSL) is a lightweight SSL/TLS library written in ANSI C and targeted for embedded, RTOS, and resource-constrained environments - primarily because of its small size, speed, and feature set. It is commonly used in standard operating environments as well because of its royalty-free pricing and excellent cross platform support. wolfSSL supports industry standards up to the current TLS 1.3 and DTLS 1.3, is up to 20 times smaller than OpenSSL, and offers progressive ciphers such as ChaCha20, Curve25519, Blake2b and Post-Quantum TLS 1.3 groups. User benchmarking and feedback reports dramatically better performance when using wolfSSL over OpenSSL.
wolfSSL is powered by the wolfCrypt cryptography library. Two versions of wolfCrypt have been FIPS 140-2 validated (Certificate #2425 and certificate #3389). FIPS 140-3 validation is in progress. For additional information, visit the wolfCrypt FIPS FAQ or contact fips@wolfssl.com.
Why Choose wolfSSL?
There are many reasons to choose wolfSSL as your embedded, desktop, mobile, or enterprise SSL/TLS solution. Some of the top reasons include size (typical footprint sizes range from 20-100 kB), support for the newest standards (SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3, DTLS 1.0, DTLS 1.2, and DTLS 1.3), current and progressive cipher support (including stream ciphers), multi-platform, royalty free, and an OpenSSL compatibility API to ease porting into existing applications which have previously used the OpenSSL package. For a complete feature list, see Chapter 4 of the wolfSSL manual.
Notes, Please Read
Note 1
wolfSSL as of 3.6.6 no longer enables SSLv3 by default. wolfSSL also no longer supports static key cipher suites with PSK, RSA, or ECDH. This means if you plan to use TLS cipher suites you must enable DH (DH is on by default), or enable ECC (ECC is on by default), or you must enable static key cipher suites with one or more of the following defines:
WOLFSSL_STATIC_DH
WOLFSSL_STATIC_RSA
WOLFSSL_STATIC_PSK
Though static key cipher suites are deprecated and will be removed from future versions of TLS. They also lower your security by removing PFS.
When compiling ssl.c
, wolfSSL will now issue a compiler error if no cipher
suites are available. You can remove this error by defining
WOLFSSL_ALLOW_NO_SUITES
in the event that you desire that, i.e., you're
not using TLS cipher suites.
Note 2
wolfSSL takes a different approach to certificate verification than OpenSSL does. The default policy for the client is to verify the server, this means that if you don't load CAs to verify the server you'll get a connect error, no signer error to confirm failure (-188).
If you want to mimic OpenSSL behavior of having SSL_connect
succeed even if
verifying the server fails and reducing security you can do this by calling:
wolfSSL_CTX_set_verify(ctx, WOLFSSL_VERIFY_NONE, NULL);
before calling wolfSSL_new();
. Though it's not recommended.
Note 3
The enum values SHA, SHA256, SHA384, SHA512 are no longer available when
wolfSSL is built with --enable-opensslextra
(OPENSSL_EXTRA
) or with the
macro NO_OLD_SHA_NAMES
. These names get mapped to the OpenSSL API for a
single call hash function. Instead the name WC_SHA
, WC_SHA256
, WC_SHA384
and
WC_SHA512
should be used for the enum name.
wolfSSL Release 5.7.4 (Oct 24, 2024)
Release 5.7.4 has been developed according to wolfSSL's development and QA process (see link below) and successfully passed the quality criteria. https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance
NOTE: * --enable-heapmath is being deprecated and will be removed by end of 2024
PR stands for Pull Request, and PR
Vulnerabilities
- [Low] When the OpenSSL compatibility layer is enabled, certificate verification behaved differently in wolfSSL than OpenSSL, in the X509_STORE_add_cert() and X509_STORE_load_locations() implementations. Previously, in cases where an application explicitly loaded an intermediate certificate, wolfSSL was verifying only up to that intermediate certificate, rather than verifying up to the root CA. This only affects use cases where the API is called directly, and does not affect TLS connections. Users that call the API X509_STORE_add_cert() or X509_STORE_load_locations() directly in their applications are recommended to update the version of wolfSSL used or to have additional sanity checks on certificates loaded into the X509_STORE when verifying a certificate. (https://github.com/wolfSSL/wolfssl/pull/8087)
PQC TLS Experimental Build Fix
- When using TLS with post quantum algorithms enabled, the connection uses a smaller EC curve than agreed on. Users building with --enable-experimental and enabling PQC cipher suites with TLS connections are recommended to update the version of wolfSSL used. Thanks to Daniel Correa for the report. (https://github.com/wolfSSL/wolfssl/pull/8084)
New Feature Additions
- RISC-V 64 new assembly optimizations added for SHA-256, SHA-512, ChaCha20, Poly1305, and SHA-3 (PR 7758,7833,7818,7873,7916)
- Implement support for Connection ID (CID) with DTLS 1.2 (PR 7995)
- Add support for (DevkitPro)libnds (PR 7990)
- Add port for Mosquitto OSP (Open Source Project) (PR 6460)
- Add port for init sssd (PR 7781)
- Add port for eXosip2 (PR 7648)
- Add support for STM32G4 (PR 7997)
- Add support for MAX32665 and MAX32666 TPU HW and ARM ASM Crypto Callback Support (PR 7777)
- Add support for building wolfSSL to be used in libspdm (PR 7869)
- Add port for use with Nucleus Plus 2.3 (PR 7732)
- Initial support for RFC5755 x509 attribute certificates (acerts). Enabled with --enable-acert (PR 7926)
- PKCS#11 RSA Padding offload allows tokens to perform CKM_RSA_PKCS (sign/encrypt), CKM_RSA_PKCS_PSS (sign), and CKM_RSA_PKCS_OAEP (encrypt). (PR 7750)
- Added ânewâ and âdeleteâ style functions for heap/pool allocation and freeing of low level crypto structures (PR 3166 and 8089)
Enhancements and Optimizations
- Increase default max alt. names from 128 to 1024 (PR 7762)
- Added new constant time DH agree function wc_DhAgree_ct (PR 7802)
- Expanded compatibility layer with the API EVP_PKEY_is_a (PR 7804)
- Add option to disable cryptocb test software test using --disable-cryptocb-sw-test (PR 7862)
- Add a call to certificate verify callback before checking certificate dates (PR 7895)
- Expanded algorithms supported with the wolfCrypt CSharp wrapper. Adding support for RNG, ECC(ECIES and ECDHE), RSA, ED25519/Curve25519, AES-GCM, and Hashing (PR 3166)
- Expand MMCAU support for use with DES ECB (PR 7960)
- Update AES SIV to handle multiple associated data inputs (PR 7911)
- Remove HAVE_NULL_CIPHER from --enable-openssh (PR 7811)
- Removed duplicate if(NULL) checks when calling XFREE (macro does) (PR 7839)
- Set RSA_MIN_SIZE default to 2048 bits (PR 7923)
- Added support for wolfSSL to be used as the default TLS in the zephyr kernel (PR 7731)
- Add enable provider build using --enable-wolfprovider with autotools (PR 7550)
- Renesas RX TSIP ECDSA support (PR 7685)
- Support DTLS1.3 downgrade when the server supports CID (PR 7841)
- Server-side checks OCSP even if it uses v2 multi (PR 7828)
- Add handling of absent hash params in PKCS7 bundle parsing and creation (PR 7845)
- Add the use of w64wrapper for Poly1305, enabling Poly1305 to be used in environments that do not have a word64 type (PR 7759)
- Update to the maxq10xx support (PR 7824)
- Add support for parsing over optional PKCS8 attributes (PR 7944)
- Add support for either side method with DTLS 1.3 (PR 8012)
- Added PKCS7 PEM support for parsing PEM data with BEGIN/END PKCS7 (PR 7704)
- Add CMake support for WOLFSSL_CUSTOM_CURVES (PR 7962)
- Add left-most wildcard matching support to X509_check_host() (PR 7966)
- Add option to set custom SKID with PKCS7 bundle creation (PR 7954)
- Building wolfSSL as a library with Ada and corrections to Alire manifest (PR 7303,7940)
- Renesas RX72N support updated (PR 7849)
- New option WOLFSSL_COPY_KEY added to always copy the key to the SSL object (PR 8005)
- Add the new option WOLFSSL_COPY_CERT to always copy the cert buffer for each SSL object (PR 7867)
- Add an option to use AES-CBC with HMAC for default session ticket enc/dec. Defaults to AES-128-CBC with HMAC-SHA256 (PR 7703)
- Memory usage improvements in wc_PRF, sha256 (for small code when many registers are available) and sp_int objects (PR 7901)
- Change in the configure script to work around ">>" with no command. In older /bin/sh it can be ambiguous, as used in OSâs such as FreeBSD 9.2 (PR 7876)
- Don't attempt to include system headers when not required (PR 7813)
- Certificates: DER encoding of ECC signature algorithm parameter is now allowed to be NULL with a define (PR 7903)
- SP x86_64 asm: check for AVX2 support for VMs (PR 7979)
- Update rx64n support on gr-rose (PR 7889)
- Update FSP version to v5.4.0 for RA6M4 (PR 7994)
- Update TSIP driver version to v1.21 for RX65N RSK (PR 7993)
- Add a new crypto callback for RSA with padding (PR 7907)
- Replaced the use of pqm4 with wolfSSL implementations of Kyber/MLDSA (PR 7924)
- Modernized memory fence support for C11 and clang (PR 7938)
- Add a CRL error override callback (PR 7986)
- Extend the X509 unknown extension callback for use with a user context (PR 7730)
- Additional debug error tracing added with TLS (PR 7917)
- Added runtime support for library call stack traces with âenable-debug-trace-errcodes=backtrace, using libbacktrace (PR 7846)
- Expanded C89 conformance (PR 8077)
- Expanded support for WOLFSSL_NO_MALLOC (PR 8065)
- Added support for cross-compilation of Linux kernel module (PR 7746)
- Updated Linux kernel module with support for kernel 6.11 and 6.12 (PR 7826)
- Introduce WOLFSSL_ASN_ALLOW_0_SERIAL to allow parsing of certificates with a serial number of 0 (PR 7893)
- Add conditional repository_owner to all wolfSSL GitHub workflows (PR 7871)
Espressif / Arduino Updates
- Update wolfcrypt settings.h for Espressif ESP-IDF, template update (PR 7953)
- Update Espressif sha, util, mem, time helpers (PR 7955)
- Espressif _thread_local_start and _thread_local_end fix (PR 8030)
- Improve benchmark for Espressif devices (PR 8037)
- Introduce Espressif common CONFIG_WOLFSSL_EXAMPLE_NAME, Kconfig (PR 7866)
- Add wolfSSL esp-tls and Certificate Bundle Support for Espressif ESP-IDF (PR 7936)
- Update wolfssl Release for Arduino (PR 7775)
Post Quantum Crypto Updates
- Dilithium: support fixed size arrays in dilithium_key (PR 7727)
- Dilithium: add option to use precalc with small sign (PR 7744)
- Allow Kyber to be built with FIPS (PR 7788)
- Allow Kyber asm to be used in the Linux kernel module (PR 7872)
- Dilithium, Kyber: Update to final specification (PR 7877)
- Dilithium: Support FIPS 204 Draft and Final Draft (PR 7909,8016)
ARM Assembly Optimizations
- ARM32 assembly optimizations added for ChaCha20 and Poly1305 (PR 8020)
- Poly1305 assembly optimizations improvements for Aarch64 (PR 7859)
- Poly1305 assembly optimizations added for Thumb-2 (PR 7939)
- Adding ARM ASM build option to STM32CubePack (PR 7747)
- Add ARM64 to Visual Studio Project (PR 8010)
- Kyber assembly optimizations for ARM32 and Aarch64 (PR 8040,7998)
- Kyber assembly optimizations for ARMv7E-M/ARMv7-M (PR 7706)
Fixes
- ECC key load: fixes for certificates with parameters that are not default for size (PR 7751)
- Fixes for building x86 in Visual Studio for non-windows OS (PR 7884)
- Fix for TLS v1.2 secret callback, incorrectly detecting bad master secret (PR 7812)
- Fixes for PowerPC assembly use with Darwin and SP math all (PR 7931)
- Fix for detecting older versions of Mac OS when trying to link with libdispatch (PR 7932)
- Fix for DTLS1.3 downgrade to DTLS1.2 when the server sends multiple handshake packets combined into a single transmission. (PR 7840)
- Fix for OCSP to save the request if it was stored in ssl->ctx->certOcspRequest (PR 7779)
- Fix to OCSP for searching for CA by key hash instead of ext. key id (PR 7934)
- Fix for staticmemory and singlethreaded build (PR 7737)
- Fix to not allow Shake128/256 with Xilinx AFALG (PR 7708)
- Fix to support PKCS11 without RSA key generation (PR 7738)
- Fix not calling the signing callback when using PK callbacks + TLS 1.3 (PR 7761)
- Cortex-M/Thumb2 ASM fix label for IAR compiler (PR 7753)
- Fix with PKCS11 to iterate correctly over slotId (PR 7736)
- Stop stripping out the sequence header on the AltSigAlg extension (PR 7710)
- Fix ParseCRL_AuthKeyIdExt with ASN template to set extAuthKeyIdSet value (PR 7742)
- Use max key length for PSK encrypt buffer size (PR 7707)
- DTLS 1.3 fix for size check to include headers and CID fixes (PR 7912,7951)
- Fix STM32 Hash FIFO and add support for STM32U5A9xx (PR 7787)
- Fix CMake build error for curl builds (PR 8021)
- SP Maths: PowerPC ASM fix to use XOR instead of LI (PR 8038)
- SSL loading of keys/certs: testing and fixes (PR 7789)
- Misc. fixes for Dilithium and Kyber (PR 7721,7765,7803,8027,7904)
- Fixes for building wolfBoot sources for PQ LMS/XMSS (PR 7868)
- Fixes for building with Kyber enabled using CMake and zephyr port (PR 7773)
- Fix for edge cases with session resumption with TLS 1.2 (PR 8097)
- Fix issue with ARM ASM with AES CFB/OFB not initializing the "left" member (PR 8099)
For additional vulnerability information visit the vulnerability page at: https://www.wolfssl.com/docs/security-vulnerabilities/
See INSTALL file for build instructions. More info can be found on-line at: https://wolfssl.com/wolfSSL/Docs.html
Resources
Directory structure
<wolfssl_root>
âââ certs [Certificates used in tests and examples]
âââ cmake [Cmake build utilities]
âââ debian [Debian packaging files]
âââ doc [Documentation for wolfSSL (Doxygen)]
âââ Docker [Prebuilt Docker environments]
âââ examples [wolfSSL examples]
â  âââ asn1 [ASN.1 printing example]
â  âââ async [Asynchronous Cryptography example]
â  âââ benchmark [TLS benchmark example]
â  âââ client [Client example]
â  âââ configs [Example build configurations]
â  âââ echoclient [Echoclient example]
â  âââ echoserver [Echoserver example]
â  âââ pem [Example for convert between PEM and DER]
â  âââ sctp [Servers and clients that demonstrate wolfSSL's DTLS-SCTP support]
â  âââ server [Server example]
âââ IDE [Contains example projects for various development environments]
âââ linuxkm [Linux Kernel Module implementation]
âââ m4 [Autotools utilities]
âââ mcapi [wolfSSL MPLAB X Project Files]
âââ mplabx [wolfSSL MPLAB X Project Files]
âââ mqx [wolfSSL Freescale CodeWarrior Project Files]
âââ rpm [RPM packaging metadata]
âââ RTOS
â  âââ nuttx [Port of wolfSSL for NuttX]
âââ scripts [Testing scripts]
âââ src [wolfSSL source code]
âââ sslSniffer [wolfSSL sniffer can be used to passively sniff SSL traffic]
âââ support [Contains the pkg-config file]
âââ tests [Unit and configuration testing]
âââ testsuite [Test application that orchestrates tests]
âââ tirtos [Port of wolfSSL for TI RTOS]
âââ wolfcrypt [The wolfCrypt component]
â  âââ benchmark [Cryptography benchmarking application]
â  âââ src [wolfCrypt source code]
â  â  âââ port [Supported hardware acceleration ports]
â  âââ test [Cryptography testing application]
âââ wolfssl [Header files]
â  âââ openssl [Compatibility layer headers]
â  âââ wolfcrypt [Header files]
âââ wrapper [wolfSSL language wrappers]
âââ zephyr [Port of wolfSSL for Zephyr RTOS]
Top Related Projects
TLS/SSL and crypto library
An open source, portable, easy to use, readable and flexible TLS library, and reference implementation of the PSA Cryptography API. Releases are on a varying cadence, typically around 3 - 6 months between releases.
LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code. Pull requests or patches sent to tech@openbsd.org are welcome.
Mirror of BoringSSL
An implementation of the TLS/SSL protocols
Fast Elliptic Curve Cryptography in plain javascript
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot