README 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. *** Description ***
  2. The wolfSSL embedded SSL library (formerly CyaSSL) is a lightweight SSL/TLS
  3. library written in ANSI C and targeted for embedded, RTOS, and
  4. resource-constrained environments - primarily because of its small size, speed,
  5. and feature set. It is commonly used in standard operating environments as well
  6. because of its royalty-free pricing and excellent cross platform support.
  7. wolfSSL supports industry standards up to the current TLS 1.3 and DTLS 1.2
  8. levels, is up to 20 times smaller than OpenSSL, and offers progressive ciphers
  9. such as ChaCha20, Curve25519, and Blake2b. User benchmarking and feedback
  10. reports dramatically better performance when using wolfSSL over OpenSSL.
  11. wolfSSL is powered by the wolfCrypt library. Two versions of the wolfCrypt
  12. cryptography library have been FIPS 140-2 validated (Certificate #2425 and
  13. certificate #3389). For additional information, visit the wolfCrypt FIPS FAQ
  14. (https://www.wolfssl.com/license/fips/) or contact fips@wolfssl.com
  15. *** Why choose wolfSSL? ***
  16. There are many reasons to choose wolfSSL as your embedded SSL solution. Some of
  17. the top reasons include size (typical footprint sizes range from 20-100 kB),
  18. support for the newest standards (SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3,
  19. DTLS 1.0, and DTLS 1.2), current and progressive cipher support (including
  20. stream ciphers), multi-platform, royalty free, and an OpenSSL compatibility API
  21. to ease porting into existing applications which have previously used the
  22. OpenSSL package. For a complete feature list, see chapter 4 of the wolfSSL
  23. manual. (https://www.wolfssl.com/docs/wolfssl-manual/ch4/)
  24. *** Notes, Please read ***
  25. Note 1)
  26. wolfSSL as of 3.6.6 no longer enables SSLv3 by default. wolfSSL also no longer
  27. supports static key cipher suites with PSK, RSA, or ECDH. This means if you
  28. plan to use TLS cipher suites you must enable DH (DH is on by default), or
  29. enable ECC (ECC is on by default), or you must enable static key cipher suites
  30. with
  31. WOLFSSL_STATIC_DH
  32. WOLFSSL_STATIC_RSA
  33. or
  34. WOLFSSL_STATIC_PSK
  35. though static key cipher suites are deprecated and will be removed from future
  36. versions of TLS. They also lower your security by removing PFS.
  37. When compiling ssl.c, wolfSSL will now issue a compiler error if no cipher
  38. suites are available. You can remove this error by defining
  39. WOLFSSL_ALLOW_NO_SUITES in the event that you desire that, i.e., you're not
  40. using TLS cipher suites.
  41. Note 2)
  42. wolfSSL takes a different approach to certificate verification than OpenSSL
  43. does. The default policy for the client is to verify the server, this means
  44. that if you don't load CAs to verify the server you'll get a connect error,
  45. no signer error to confirm failure (-188).
  46. If you want to mimic OpenSSL behavior of having SSL_connect succeed even if
  47. verifying the server fails and reducing security you can do this by calling:
  48. wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
  49. before calling wolfSSL_new();. Though it's not recommended.
  50. Note 3)
  51. The enum values SHA, SHA256, SHA384, SHA512 are no longer available when
  52. wolfSSL is built with --enable-opensslextra (OPENSSL_EXTRA) or with the macro
  53. NO_OLD_SHA_NAMES. These names get mapped to the OpenSSL API for a single call
  54. hash function. Instead the name WC_SHA, WC_SHA256, WC_SHA384 and WC_SHA512
  55. should be used for the enum name.
  56. *** end Notes ***
  57. # wolfSSL Release 5.5.1 (Sep 28, 2022)
  58. Release 5.5.1 of wolfSSL embedded TLS has bug fixes and new features including:
  59. ## Vulnerabilities
  60. * [Med] Denial of service attack and buffer overflow against TLS 1.3 servers using session ticket resumption. When built with --enable-session-ticket and making use of TLS 1.3 server code in wolfSSL, there is the possibility of a malicious client to craft a malformed second ClientHello packet that causes the server to crash. This issue is limited to when using both --enable-session-ticket and TLS 1.3 on the server side. Users with TLS 1.3 servers, and having --enable-session-ticket, should update to the latest version of wolfSSL. Thanks to Max at Trail of Bits for the report and "LORIA, INRIA, France" for research on tlspuffin.
  61. ## New Feature Additions
  62. * Add support for non-blocking ECC key gen and shared secret gen for P-256/384/521
  63. * Add support for non-blocking ECDHE/ECDSA in TLS/DTLS layer.
  64. * Port to NXP RT685 with FreeRTOS
  65. * Add option to build post quantum Kyber API (--enable-kyber)
  66. * Add post quantum algorithm sphincs to wolfCrypt
  67. * Config. option to force no asm with SP build (--enable-sp=noasm)
  68. * Allow post quantum keyshare for DTLS 1.3
  69. ## Enhancements
  70. * DTLSv1.3: Do HRR Cookie exchange by default
  71. * Add wolfSSL_EVP_PKEY_new_CMAC_key to OpenSSL compatible API
  72. * Update ide win10 build files to add missing sp source files
  73. * Improve Workbench docs
  74. * Improve EVP support for CHACHA20_POLY1305
  75. * Improve `wc_SetCustomExtension` documentation
  76. * RSA-PSS with OCSP and add simple OCSP response DER verify test case
  77. * Clean up some FIPS versioning logic in configure.ac and WIN10 user_settings.h
  78. * Don't over-allocate memory for DTLS fragments
  79. * Add WOLFSSL_ATECC_TFLXTLS for Atmel port
  80. * SHA-3 performance improvements with x86_64 assembly
  81. * Add code to fallback to S/W if TSIP cannot handle
  82. * Improves entropy with VxWorks
  83. * Make time in milliseconds 64-bits for longer session ticket lives
  84. * Support for setting cipher list with bytes
  85. * wolfSSL_set1_curves_list(), wolfSSL_CTX_set1_curves_list() improvements
  86. * Add to RSAES-OAEP key parsing for pkcs7
  87. * Add missing DN nid to work with PrintName()
  88. * SP int: default to 16 bit word size when NO_64BIT defined
  89. * Limit the amount of fragments we store per a DTLS connection and error out when max limit is reached
  90. * Detect when certificate's RSA public key size is too big and fail on loading of certificate
  91. ## Fixes
  92. * Fix for async with OCSP non-blocking in `ProcessPeerCerts`
  93. * Fixes for building with 32-bit and socket size sign/unsigned mismatch
  94. * Fix Windows CMakeList compiler options
  95. * TLS 1.3 Middle-Box compat: fix missing brace
  96. * Configuration consistency fixes for RSA keys and way to force disable of private keys
  97. * Fix for Aarch64 Mac M1 SP use
  98. * Fix build errors and warnings for MSVC with DTLS 1.3
  99. * Fix HMAC compat layer function for SHA-1
  100. * Fix DTLS 1.3 do not negotiate ConnectionID in HelloRetryRequest
  101. * Check return from call to wc_Time
  102. * SP math: fix build configuration with opensslall
  103. * Fix for async session tickets
  104. * SP int mp_init_size fixes when SP_WORD_SIZE == 8
  105. * Ed. function to make public key now checks for if the private key flag is set
  106. * Fix HashRaw WC_SHA256_DIGEST_SIZE for wc_Sha256GetHash
  107. * Fix for building with PSK only
  108. * Set correct types in wolfSSL_sk_*_new functions
  109. * Sanity check that size passed to mp_init_size() is no more than SP_INT_DIGITS
  110. For additional vulnerability information visit the vulnerability page at:
  111. https://www.wolfssl.com/docs/security-vulnerabilities/
  112. See INSTALL file for build instructions.
  113. More info can be found on-line at: https://wolfssl.com/wolfSSL/Docs.html
  114. *** Resources ***
  115. [wolfSSL Website](https://www.wolfssl.com/)
  116. [wolfSSL Wiki](https://github.com/wolfSSL/wolfssl/wiki)
  117. [FIPS FAQ](https://wolfssl.com/license/fips)
  118. [wolfSSL Documents](https://wolfssl.com/wolfSSL/Docs.html)
  119. [wolfSSL Manual](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-toc.html)
  120. [wolfSSL API Reference]
  121. (https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-17-wolfssl-api-reference.html)
  122. [wolfCrypt API Reference]
  123. (https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-wolfcrypt-api-reference.html)
  124. [TLS 1.3](https://www.wolfssl.com/docs/tls13/)
  125. [wolfSSL Vulnerabilities]
  126. (https://www.wolfssl.com/docs/security-vulnerabilities/)
  127. Additional wolfSSL Examples](https://github.com/wolfssl/wolfssl-examples)