2021-01-29 09:18:22 -08:00
|
|
|
|
<a href="https://repology.org/project/wolfssl/versions">
|
|
|
|
|
<img src="https://repology.org/badge/vertical-allrepos/wolfssl.svg" alt="Packaging status" align="right">
|
|
|
|
|
</a>
|
|
|
|
|
|
2021-02-02 09:58:35 -07:00
|
|
|
|
# wolfSSL Embedded SSL/TLS Library
|
|
|
|
|
|
|
|
|
|
The [wolfSSL embedded SSL library](https://www.wolfssl.com/products/wolfssl/)
|
|
|
|
|
(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](https://www.wolfssl.com/tls13) and DTLS 1.2, is up to
|
|
|
|
|
20 times smaller than OpenSSL, and offers progressive ciphers such as ChaCha20,
|
2021-12-20 11:26:25 -05:00
|
|
|
|
Curve25519, Blake2b and Post-Quantum TLS 1.3 groups. User benchmarking and
|
|
|
|
|
feedback reports dramatically better performance when using wolfSSL over
|
|
|
|
|
OpenSSL.
|
2021-02-02 09:58:35 -07:00
|
|
|
|
|
|
|
|
|
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](https://www.wolfssl.com/license/fips/)
|
|
|
|
|
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](https://www.wolfssl.com/docs/wolfssl-manual/ch4/)
|
|
|
|
|
of the wolfSSL manual.
|
|
|
|
|
|
|
|
|
|
## Notes, Please Read
|
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
### Note 1
|
2019-03-14 14:45:27 -07:00
|
|
|
|
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
|
2021-02-02 09:58:35 -07:00
|
|
|
|
with one or more of the following defines:
|
2017-11-14 15:51:32 -07:00
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
```
|
|
|
|
|
WOLFSSL_STATIC_DH
|
|
|
|
|
WOLFSSL_STATIC_RSA
|
|
|
|
|
WOLFSSL_STATIC_PSK
|
|
|
|
|
```
|
2021-02-02 09:58:35 -07:00
|
|
|
|
Though static key cipher suites are deprecated and will be removed from future
|
2021-09-23 18:37:53 -04:00
|
|
|
|
versions of TLS. They also lower your security by removing PFS.
|
2015-12-30 12:09:31 -07:00
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
When compiling `ssl.c`, wolfSSL will now issue a compiler error if no cipher
|
2019-03-14 14:45:27 -07:00
|
|
|
|
suites are available. You can remove this error by defining
|
2021-10-13 16:18:21 +01:00
|
|
|
|
`WOLFSSL_ALLOW_NO_SUITES` in the event that you desire that, i.e., you're
|
2021-02-02 09:58:35 -07:00
|
|
|
|
not using TLS cipher suites.
|
2015-08-20 17:11:00 -07:00
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
### Note 2
|
2015-02-26 13:27:54 -08:00
|
|
|
|
wolfSSL takes a different approach to certificate verification than OpenSSL
|
2019-03-14 14:45:27 -07:00
|
|
|
|
does. The default policy for the client is to verify the server, this means
|
2015-02-26 13:27:54 -08:00
|
|
|
|
that if you don't load CAs to verify the server you'll get a connect error,
|
2019-03-14 14:45:27 -07:00
|
|
|
|
no signer error to confirm failure (-188).
|
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
If you want to mimic OpenSSL behavior of having `SSL_connect` succeed even if
|
2019-03-14 14:45:27 -07:00
|
|
|
|
verifying the server fails and reducing security you can do this by calling:
|
2015-01-09 11:18:09 -07:00
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
```c
|
2021-11-05 09:56:40 -07:00
|
|
|
|
wolfSSL_CTX_set_verify(ctx, WOLFSSL_VERIFY_NONE, NULL);
|
2021-10-13 16:18:21 +01:00
|
|
|
|
```
|
2015-01-09 11:18:09 -07:00
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
before calling `wolfSSL_new();`. Though it's not recommended.
|
2016-07-28 15:46:45 -06:00
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
### Note 3
|
2018-05-30 17:11:38 -07:00
|
|
|
|
The enum values SHA, SHA256, SHA384, SHA512 are no longer available when
|
2021-10-13 16:18:21 +01:00
|
|
|
|
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.
|
2019-03-14 14:45:27 -07:00
|
|
|
|
|
2022-01-19 09:48:56 -05:00
|
|
|
|
|
2022-02-20 13:03:58 -08:00
|
|
|
|
# wolfSSL Release 5.2.0 (Feb 21, 2022)
|
|
|
|
|
|
|
|
|
|
## Vulnerabilities
|
|
|
|
|
|
|
|
|
|
* \[High\] A TLS v1.3 server who requires mutual authentication can be
|
|
|
|
|
bypassed. If a malicious client does not send the certificate_verify
|
|
|
|
|
message a client can connect without presenting a certificate even
|
|
|
|
|
if the server requires one. Thank you to Aina Toky Rasoamanana and
|
|
|
|
|
Olivier Levillain of Télécom SudParis.
|
|
|
|
|
* \[High\] A TLS v1.3 client attempting to authenticate a TLS v1.3
|
|
|
|
|
server can have its certificate check bypassed. If the sig_algo in
|
|
|
|
|
the certificate_verify message is different than the certificate
|
|
|
|
|
message checking may be bypassed. Thank you to Aina Toky Rasoamanana and
|
|
|
|
|
Olivier Levillain of Télécom SudParis.
|
|
|
|
|
|
|
|
|
|
## New Feature Additions
|
|
|
|
|
|
|
|
|
|
* Example applications for Renesas RX72N with FreeRTOS+IoT
|
|
|
|
|
* Renesas FSP 3.5.0 support for RA6M3
|
|
|
|
|
* For TLS 1.3, improved checks on order of received messages.
|
|
|
|
|
* Support for use of SHA-3 cryptography instructions available in
|
|
|
|
|
ARMv8.2-A architecture extensions. (For Apple M1)
|
|
|
|
|
* Support for use of SHA-512 cryptography instructions available in
|
|
|
|
|
ARMv8.2-A architecture extensions. (For Apple M1)
|
|
|
|
|
* Fixes for clang -Os on clang >= 12.0.0
|
|
|
|
|
* Expose Sequence Numbers so that Linux TLS (kTLS) can be configured
|
|
|
|
|
* Fix bug in TLSX_ALPN_ParseAndSet when using ALPN select callback.
|
|
|
|
|
* Allow DES3 with FIPS v5-dev.
|
|
|
|
|
* Include HMAC for deterministic ECC sign build
|
|
|
|
|
* Add --enable-chrony configure option. This sets build options needed
|
|
|
|
|
to build the Chrony NTP (Network Time Protocol) service.
|
|
|
|
|
* Add support for STM32U575xx boards.
|
|
|
|
|
* Fixes for NXP’s SE050 Ed25519/Curve25519.
|
|
|
|
|
* TLS: Secure renegotiation info on by default for compatibility.
|
|
|
|
|
* Inline C code version of ARM32 assembly for cryptographic algorithms
|
|
|
|
|
available and compiling for improved performance on ARM platforms
|
|
|
|
|
* Configure HMAC: define NO_HMAC to disable HMAC (default: enabled)
|
|
|
|
|
* ISO-TP transport layer support added to wolfio for TLS over CAN Bus
|
|
|
|
|
* Fix initialization bug in SiLabs AES support
|
|
|
|
|
* Domain and IP check is only performed on leaf certificates
|
|
|
|
|
|
|
|
|
|
## ARM PSA Support (Platform Security Architecture) API
|
|
|
|
|
|
|
|
|
|
* Initial support added for ARM’s Platform Security Architecture (PSA)
|
|
|
|
|
API in wolfCrypt which allows support of ARM PSA enabled devices by
|
|
|
|
|
wolfSSL, wolfSSH, and wolfBoot and wolfCrypt FIPS.
|
|
|
|
|
* Included algorithms: ECDSA, ECDH, HKDF, AES, SHA1, SHA256, SHA224, RNG
|
|
|
|
|
|
|
|
|
|
## ECICE Updates
|
|
|
|
|
|
|
|
|
|
* Support for more encryption algorithms: AES-256-CBC, AES-128-CTR,
|
|
|
|
|
AES-256-CTR
|
|
|
|
|
* Support for compressed public keys in messages.
|
|
|
|
|
|
|
|
|
|
## Math Improvements
|
|
|
|
|
|
|
|
|
|
* Improved performance of X448 and Ed448 through inlining Karatsuba in
|
|
|
|
|
square and multiplication operations for 128-bit implementation
|
|
|
|
|
(64-bit platforms with 128-bit type support).
|
|
|
|
|
* SP Math C implementation: fix for corner case in curve specific
|
|
|
|
|
implementations of Montgomery Reduction (P-256, P-384).
|
|
|
|
|
* SP math all: assembly snippets added for ARM Thumb. Performance
|
|
|
|
|
improvement on platform.
|
|
|
|
|
* SP math all: ARM64/32 sp_div_word assembly snippets added to remove
|
|
|
|
|
dependency on __udiv3.
|
|
|
|
|
* SP C implementation: multiplication of two signed types with overflow
|
|
|
|
|
is undefined in C. Now cast to unsigned type before multiplication is
|
|
|
|
|
performed.
|
|
|
|
|
* SP C implementation correctly builds when using CFLAG: -m32
|
|
|
|
|
|
|
|
|
|
## OpenSSL Compatibility Layer
|
|
|
|
|
|
|
|
|
|
* Added DH_get_2048_256 to compatibility layer.
|
|
|
|
|
* wolfSSLeay_version now returns the version of wolfSSL
|
|
|
|
|
* Added C++ exports for API’s in wolfssl/openssl/crypto.h. This allows
|
|
|
|
|
better compatibility when building with a C++ compiler.
|
|
|
|
|
* Fix for OpenSSL x509_NAME_hash mismatch
|
|
|
|
|
* Implement FIPS_mode and FIPS_mode_set in the compat layer.
|
|
|
|
|
* Fix for certreq and certgen options with openssl compatibility
|
|
|
|
|
* wolfSSL_BIO_dump() and wolfSSL_OBJ_obj2txt() rework
|
|
|
|
|
* Fix IV length bug in EVP AES-GCM code.
|
|
|
|
|
* Add new ASN1_INTEGER compatibility functions.
|
|
|
|
|
* Fix wolfSSL_PEM_X509_INFO_read with NO_FILESYSTEM
|
|
|
|
|
|
|
|
|
|
## CMake Updates
|
|
|
|
|
|
|
|
|
|
* Check for valid override values.
|
|
|
|
|
* Add `KEYGEN` option.
|
|
|
|
|
* Cleanup help messages.
|
|
|
|
|
* Add options to support wolfTPM.
|
|
|
|
|
|
|
|
|
|
## VisualStudio Updates
|
|
|
|
|
|
|
|
|
|
* Remove deprecated VS solution
|
|
|
|
|
* Fix VS unreachable code warning
|
|
|
|
|
|
|
|
|
|
## New Algorithms and Protocols
|
|
|
|
|
|
|
|
|
|
* AES-SIV (RFC 5297)
|
|
|
|
|
* DTLS SRTP (RFC 5764), used with WebRTC to agree on profile for new
|
|
|
|
|
real-time session keys
|
|
|
|
|
* SipHash MAC/PRF for hash tables. Includes inline assembly for
|
|
|
|
|
x86_64 and Aarch64.
|
|
|
|
|
|
|
|
|
|
## Remove Obsolete Algorithms
|
|
|
|
|
|
|
|
|
|
* IDEA
|
|
|
|
|
* Rabbit
|
|
|
|
|
* HC-128
|
2022-01-19 09:48:56 -05:00
|
|
|
|
|
|
|
|
|
If this adversely affects you or your customers, please get in cotact with the wolfSSL team. (support@wolfssl.com)
|
|
|
|
|
|
2021-10-13 16:18:21 +01:00
|
|
|
|
For additional vulnerability information visit the vulnerability page at:
|
2020-04-15 09:58:44 -07:00
|
|
|
|
https://www.wolfssl.com/docs/security-vulnerabilities/
|
2019-10-21 16:32:41 -06:00
|
|
|
|
|
|
|
|
|
See INSTALL file for build instructions.
|
2021-10-13 16:18:21 +01:00
|
|
|
|
More info can be found on-line at: https://wolfssl.com/wolfSSL/Docs.html
|
2019-10-21 16:32:41 -06:00
|
|
|
|
|
2018-06-21 12:22:27 -06:00
|
|
|
|
|
|
|
|
|
|
2021-02-02 09:58:35 -07:00
|
|
|
|
# Resources
|
2018-06-21 12:22:27 -06:00
|
|
|
|
|
|
|
|
|
[wolfSSL Website](https://www.wolfssl.com/)
|
|
|
|
|
|
|
|
|
|
[wolfSSL Wiki](https://github.com/wolfSSL/wolfssl/wiki)
|
|
|
|
|
|
2021-02-02 09:58:35 -07:00
|
|
|
|
[FIPS 140-2/140-3 FAQ](https://wolfssl.com/license/fips)
|
2020-04-15 09:58:44 -07:00
|
|
|
|
|
2021-02-02 09:58:35 -07:00
|
|
|
|
[wolfSSL Documentation](https://wolfssl.com/wolfSSL/Docs.html)
|
2018-06-21 12:22:27 -06:00
|
|
|
|
|
|
|
|
|
[wolfSSL Manual](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-toc.html)
|
|
|
|
|
|
2021-02-02 09:58:35 -07:00
|
|
|
|
[wolfSSL API Reference](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-17-wolfssl-api-reference.html)
|
2018-06-21 12:22:27 -06:00
|
|
|
|
|
2021-02-02 09:58:35 -07:00
|
|
|
|
[wolfCrypt API Reference](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-wolfcrypt-api-reference.html)
|
2018-06-21 12:22:27 -06:00
|
|
|
|
|
|
|
|
|
[TLS 1.3](https://www.wolfssl.com/docs/tls13/)
|
2020-04-15 09:58:44 -07:00
|
|
|
|
|
2021-02-02 09:58:35 -07:00
|
|
|
|
[wolfSSL Vulnerabilities](https://www.wolfssl.com/docs/security-vulnerabilities/)
|
2021-03-31 01:34:14 +07:00
|
|
|
|
|
|
|
|
|
[Additional wolfSSL Examples](https://github.com/wolfssl/wolfssl-examples)
|