Go to file
Daniele Lacamera f323964e8a Update TIRTOS module
Use SP_MATH by default. Added missing object files.
2022-01-27 16:23:23 +01:00
.github github: Initial templates 2022-01-19 10:36:01 -08:00
IDE Counting properly 2022-01-18 15:41:16 -05:00
IPP Release 3.7.0 2015-10-28 15:07:22 -06:00
certs Merge pull request #4680 from JacobBarthelmeh/certs 2021-12-22 08:48:35 +10:00
cmake Get rid of HC-128 2022-01-17 18:11:54 -05:00
ctaocrypt Get rid of HC-128 2022-01-17 18:11:54 -05:00
cyassl Get rid of HC-128 2022-01-17 18:11:54 -05:00
doc AES: harmonize wc_Aes{Encrypt,Decrypt} and wc_Aes{Encrypt,Decrypt}Direct implementations to return int; add return values to all static void functions in aes.c that can fail; add WARN_UNUSED_RESULT to all static functions in aes.c with return values; implement missing error percolation around AES block cipher implementations; bump FIPS version for v5-ready and v5-dev to 5.3 (v5-RC12 is 5.2). 2022-01-24 11:44:16 -06:00
examples remove a debugging printf, fix whitespace/indentation, and add a comment re gethostbyname_r buffer size. 2022-01-21 13:00:22 -06:00
lib 1.8.8 init 2011-02-05 11:14:47 -08:00
linuxkm linuxkm/module_exports.c.template: include siphash.h. 2022-01-21 01:25:48 -06:00
m4 --enable-linuxkm-pie (FIPS Linux kernel module) (#4276) 2021-08-19 09:15:52 -07:00
mcapi Get rid of HC-128 2022-01-17 18:11:54 -05:00
mplabx Get rid of HC-128 2022-01-17 18:11:54 -05:00
mqx file modes: clear inappropriate executable bits. 2021-11-08 17:28:11 -06:00
rpm Get rid of HC-128 2022-01-17 18:11:54 -05:00
scripts dtls-srtp: don't run openssl_srtp.test on make check 2022-01-25 21:51:56 +01:00
src src/ssl.c: fix argument name in openssl compat layer wrappers of hash final funcs in ssl.c (use "output", not "input"). 2022-01-26 00:27:45 -06:00
sslSniffer typographic cleanup: fix whitespace, remove unneeded UTF-8, convert C++ comment constructs to C. 2021-11-08 17:35:05 -06:00
support typographic cleanup: fix whitespace, remove unneeded UTF-8, convert C++ comment constructs to C. 2021-11-08 17:35:05 -06:00
tests update headers to resolve clang-tidy carping (mostly bugprone-macro-parentheses and readability-named-parameter). also disables MSC C4028 because incompatible with readability-avoid-const-params-in-decls. 2022-01-26 02:06:37 -06:00
testsuite jumbo patch of fixes for clang-tidy gripes (with some bug fixes). 2022-01-21 01:25:48 -06:00
tirtos Update TIRTOS module 2022-01-27 16:23:23 +01:00
wolfcrypt Update TIRTOS module 2022-01-27 16:23:23 +01:00
wolfssl Update TIRTOS module 2022-01-27 16:23:23 +01:00
wrapper file modes: clear inappropriate executable bits. 2021-11-08 17:28:11 -06:00
zephyr Get rid of HC-128 2022-01-17 18:11:54 -05:00
.gitignore linuxkm: relocate WOLFSSL_LINUXKM code in wolfssl/wolfcrypt/wc_port.h and wolfcrypt/src/memory.c to linuxkm/{linuxkm_wc_port.h,linuxkm_memory.c}, and gate SIMD in IRQ handlers on -DLINUXKM_SIMD_IRQ in prep for Linux 5.16; 2022-01-07 22:39:38 -06:00
AUTHORS 1.8.8 init 2011-02-05 11:14:47 -08:00
CMakeLists.txt Merge pull request #4775 from elms/cmake/asm_user_settings 2022-01-25 16:25:16 -08:00
COPYING update FSF address, wolfSSL copyright 2014-04-11 15:58:58 -06:00
ChangeLog.md CVE-2022-23408 2022-01-18 16:06:08 -05:00
INSTALL --with-liboqs now defines HAVE_LIBOQS and HAVE_PQC 2021-12-20 11:48:03 -05:00
LICENSING Add or later verbage to LICENSING and sync header license versions 2020-06-30 12:13:13 -06:00
LPCExpresso.cproject remove swig wrapper, now that we have dedicated Java and Python wrappers 2021-11-22 11:32:37 -07:00
LPCExpresso.project Chacha20 ARM optimization 2019-06-10 19:21:46 +02:00
Makefile.am remove swig wrapper, now that we have dedicated Java and Python wrappers 2021-11-22 11:32:37 -07:00
README bump version for dev and update year in readme 2022-01-03 16:02:10 -07:00
README.md Merge pull request #4767 from anhu/kill_hc128 2022-01-19 12:20:18 -08:00
SCRIPTS-LIST remove swig wrapper, now that we have dedicated Java and Python wrappers 2021-11-22 11:32:37 -07:00
Vagrantfile updates Linux deps on README 2016-05-15 15:08:16 -03:00
async-check.sh Speedups for the `git clone` calls in check scripts to use `--depth 1`. 2018-11-09 09:36:41 -08:00
autogen.sh configure.ac and autogen.sh: fix warnings in configure.ac, and enable WARNINGS=all,error in autogen.sh. also, remove --verbose to avoid obscuring warning output. 2021-10-26 20:24:28 -05:00
commit-tests.sh Get rid of HC-128 2022-01-17 18:11:54 -05:00
configure.ac AES: harmonize wc_Aes{Encrypt,Decrypt} and wc_Aes{Encrypt,Decrypt}Direct implementations to return int; add return values to all static void functions in aes.c that can fail; add WARN_UNUSED_RESULT to all static functions in aes.c with return values; implement missing error percolation around AES block cipher implementations; bump FIPS version for v5-ready and v5-dev to 5.3 (v5-RC12 is 5.2). 2022-01-24 11:44:16 -06:00
fips-check.sh Update configure and fips-check.sh for FIPS RC12. 2021-12-30 15:21:44 -08:00
fips-hash.sh Script Portability 2020-05-18 09:04:41 -07:00
gencertbuf.pl --with-liboqs now defines HAVE_LIBOQS and HAVE_PQC 2021-12-20 11:48:03 -05:00
input check return value of wolfSSL_set_fd 2016-03-25 13:59:04 -06:00
pre-commit.sh Modify pre-commit.sh to only stash and stash pop if there are modified files not 2020-11-13 13:38:58 -06:00
pre-push.sh remove autogen clone of fips repo; pre-push runs fips-check if fips directory exists 2015-07-30 16:33:14 -07:00
pull_to_vagrant.sh Merge branch csr into 'master' 2015-11-02 15:51:01 -03:00
quit Brian Aker commits plus some minor changes like AM_CFLAGS getting AC_SUBST and --enable-xxx #ifdef to new header layout 2011-08-24 15:54:58 -07:00
resource.h typographic cleanup: fix whitespace, remove unneeded UTF-8, convert C++ comment constructs to C. 2021-11-08 17:35:05 -06:00
stamp-h.in Brian Aker commits plus some minor changes like AM_CFLAGS getting AC_SUBST and --enable-xxx #ifdef to new header layout 2011-08-24 15:54:58 -07:00
valgrind-bash.supp Fix valgrind check to ignore bash leak 2020-08-10 14:02:50 +10:00
valgrind-error.sh Fix valgrind check to ignore bash leak 2020-08-10 14:02:50 +10:00
wnr-example.conf add example netRandom config file 2016-05-05 15:34:52 -06:00
wolfssl.rc bump version for dev and update year in readme 2022-01-03 16:02:10 -07:00
wolfssl.sln file modes: clear inappropriate executable bits. 2021-11-08 17:28:11 -06:00
wolfssl.vcproj Get rid of HC-128 2022-01-17 18:11:54 -05:00
wolfssl.vcxproj Get rid of HC-128 2022-01-17 18:11:54 -05:00
wolfssl64.sln 1. Set the base address of the 32-bit DLL builds. 2017-08-25 11:21:11 -07:00

README.md

Packaging status

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.2, 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, and DTLS 1.2), 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 TBD (Date TBD)

Misc.

  • The following algorithms have been removed: ** HC-128

If this adversely affects you or your customers, please get in cotact with the wolfSSL team. (support@wolfssl.com)

wolfSSL Release 5.1.1 (Jan 3rd, 2022)

Release 5.1.1 of wolfSSL embedded TLS has a high vulnerability fix:

Vulnerabilities

  • High

wolfSSL Release 5.1.0 (Dec 27, 2021)

Release 5.1.0 of wolfSSL embedded TLS has bug fixes and new features including:

Vulnerabilities

  • Low
  • Low

New Feature Additions

Ports
  • Curve25519 support with NXP SE050 added
  • Renesas RA6M4 support with SCE Protected Mode and FSP 3.5.0
  • Renesas TSIP 1.14 support for RX65N/RX72N
Post Quantum
  • Post quantum resistant algorithms used with Apache port
  • NIST round 3 FALCON Signature Scheme support added to TLS 1.3 connections
  • FALCON added to the benchmarking application
  • Testing of cURL with wolfSSL post quantum resistant build
Compatibility Layer Additions
  • Updated NGINX port to NGINX version 1.21.4
  • Updated Apache port to Apache version 2.4.51
  • Add support for SSL_OP_NO_TLSv1_2 flag with wolfSSL_CTX_set_options function
  • Support added for the functions
    • SSL_CTX_get_max_early_data
    • SSL_CTX_set_max_early_data
    • SSL_set_max_early_data
    • SSL_get_max_early_data
    • SSL_CTX_clear_mode
    • SSL_CONF_cmd_value_type
    • SSL_read_early_data
    • SSL_write_early_data
Misc.
  • Crypto callback support for AES-CCM added. A callback function can be registered and used instead of the default AES-CCM implementation in wolfSSL.
  • Added AES-OFB to the FIPS boundary for future FIPS validations.
  • Add support for custom OIDs used with CSR (certificate signing request) generation using the macro WOLFSSL_CUSTOM_OID
  • Added HKDF extract callback function for use with TLS 1.3
  • Add variant from RFC6979 of deterministic ECC signing that can be enabled using the macro WOLFSSL_ECDSA_DETERMINISTIC_K_VARIANT
  • Added the function wc_GetPubKeyDerFromCert to get the public key from a DecodedCert structure
  • Added the functions wc_InitDecodedCert, wc_ParseCert and wc_FreeDecodedCert for access to decoding a certificate into a DecodedCert structure
  • Added the macro WOLFSSL_ECC_NO_SMALL_STACK for hybrid builds where the numerous malloc/free with ECC is undesired but small stack use is desired throughout the rest of the library
  • Added the function wc_d2i_PKCS12_fp for reading a PKCS12 file and parsing it

Fixes

PORT Fixes
  • Building with Android wpa_supplicant and KeyStore
  • Setting initial value of CA certificate with TSIP enabled
  • Cryptocell ECC build fix and fix with RSA disabled
  • IoT-SAFE improvement for Key/File slot ID size, fix for C++ compile, and fixes for retrieving the public key after key generation
Math Library Fixes
  • Check return values on TFM library montgomery function in case the system runs out of memory. This resolves an edge case of invalid ECC signatures being created.
  • SP math library sanity check on size of values passed to sp_gcd.
  • SP math library sanity check on exponentiation by 0 with mod_exp
  • Update base ECC mp_sqrtmod_prime function to handle an edge case of zero
  • TFM math library with Intel MULX multiply fix for carry in assembly code
Misc.
  • Fix for potential heap buffer overflow with compatibility layer PEM parsing
  • Fix for edge memory leak case with an error encountered during TLS resumption
  • Fix for length on inner sequence created with wc_DhKeyToDer when handling small DH keys
  • Fix for sanity check on input argument to DSA sign and verify
  • Fix for setting of the return value with ASN1 integer get on an i386 device
  • Fix for BER to DER size checks with PKCS7 decryption
  • Fix for memory leak with PrintPubKeyEC function in compatibility layer
  • Edge case with deterministic ECC key generation when the private key has leading 0s
  • Fix for build with OPENSSL_EXTRA and NO_WOLFSSL_STUB both defined
  • Use page aligned memory with ECDSA signing and KCAPI
  • Skip expired sessions for TLS 1.3 rather than turning off the resume behavior
  • Fix for DTLS handling dropped or retransmitted messages

Improvements/Optimizations

Build Options and Warnings
  • Bugfix: could not build with liboqs and without DH enabled
  • Build with macro NO_ECC_KEY_EXPORT fixed
  • Fix for building with the macro HAVE_ENCRYPT_THEN_MAC when session export is enabled
  • Building with wolfSentry and HAVE_EX_DATA macro set
Math Libraries
  • Improvement for performance with SP C implementation of montgomery reduction for ECC (P256 and P384) and SP ARM64 implementation for ECC (P384)
  • With SP math handle case of dividing by length of dividend
  • SP math improvement for lo/hi register names to be used with older GCC compilers
Misc.
  • ASN name constraints checking code refactor for better efficiency and readability
  • Refactor of compatibility layer stack freeing calls to simplify and reduce code
  • Scrubbed code for trailing spaces, hard tabs, and any control characters
  • Explicit check that leaf certificate's public key type match cipher suite signature algorithm
  • Additional NULL sanity checks on WOLFSSL struct internally and improve switch statement fallthrough
  • Retain OCSP error value when CRL is enabled with certificate parsing
  • Update to NATIVE LwIP support for TCP use
  • Sanity check on PEM size when parsing a PEM with OpenSSL compatibility layer API.
  • SWIG wrapper was removed from the codebase in favor of dedicated Java and Python wrappers.
  • Updates to bundled example client for when to load the CA, handling print out of IP alt names, and printing out the peers certificate in PEM format
  • Handling BER encoded inner content type with PKCS7 verify
  • Checking for SOCKET_EPIPE errors from low level socket
  • Improvements to cleanup in the case that wolfSSL_Init fails
  • Update test and example certificates expiration dates

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

wolfSSL Website

wolfSSL Wiki

FIPS 140-2/140-3 FAQ

wolfSSL Documentation

wolfSSL Manual

wolfSSL API Reference

wolfCrypt API Reference

TLS 1.3

wolfSSL Vulnerabilities

Additional wolfSSL Examples