5 wolfSSL now needs all examples and tests to be run from the wolfSSL home
6 directory. This is because it finds certs and keys from ./certs/. Trying to
7 maintain the ability to run each program from its own directory, the testsuite
8 directory, the main directory (for make check/test), and for the various
9 different project layouts (with or without config) was becoming harder and
10 harder. Now to run testsuite just do:
16 make check (when using autoconf)
18 On *nix or Windows the examples and testsuite will check to see if the current
19 directory is the source directory and if so, attempt to change to the wolfSSL
20 home directory. This should work in most setup cases, if not, just follow the
21 beginning of the note and specify the full path.
26 wolfSSL takes a different approach to certificate verification than OpenSSL
27 does. The default policy for the client is to verify the server, this means
28 that if you don't load CAs to verify the server you'll get a connect error,
29 no signer error to confirm failure (-188). If you want to mimic OpenSSL
30 behavior of having SSL_connect succeed even if verifying the server fails and
31 reducing security you can do this by calling:
33 wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
35 before calling wolfSSL_new(); Though it's not recommended.
38 - GNU Binutils 2.24 ld has problems with some debug builds, to fix an ld error
39 add -fdebug-types-section to C_EXTRA_FLAGS
41 #wolfSSL (Formerly CyaSSL) Release 3.4.8 (04/06/2015)
43 ##Release 3.4.8 of wolfSSL has bug fixes and new features including:
45 - FIPS version submitted for iOS.
46 - Max Strength build that only allows TLSv1.2, AEAD ciphers, and PFS.
47 - Improvements to usage of time code.
48 - Improvements to VS solution files.
50 See INSTALL file for build instructions.
51 More info can be found on-line at //http://wolfssl.com/yaSSL/Docs.html
54 #wolfSSL (Formerly CyaSSL) Release 3.4.6 (03/30/2015)
56 ##Release 3.4.6 of wolfSSL has bug fixes and new features including:
58 - Intel Assembly Speedups using instructions rdrand, rdseed, aesni, avx1/2,
59 rorx, mulx, adox, adcx . They can be enabled with --enable-intelasm.
60 These speedup the use of RNG, SHA2, and public key algorithms.
61 - Ed25519 support at the crypto level. Turn on with --enable-ed25519. Examples
62 in wolcrypt/test/test.c ed25519_test().
63 - Post Handshake Memory reductions. wolfSSL can now hold less than 1,000 bytes
64 of memory per secure connection including cipher state.
65 - wolfSSL API and wolfCrypt API fixes, you can still include the cyassl and
66 ctaocrypt headers which will enable the compatibility APIs for the
68 - INSTALL file to help direct users to build instructions for their environment
69 - For ECC users with the normal math library a fix that prevents a crash when
70 verify signature fails. Users of 3.4.0 with ECC and the normal math library
72 - RC4 is now disabled by default in autoconf mode
73 - AES-GCM and ChaCha20/Poly1305 are now enabled by default to make AEAD ciphers
74 available without a switch
75 - External ChaCha-Poly AEAD API, thanks to Andrew Burks for the contribution
76 - DHE-PSK cipher suites can now be built without ASN or Cert support
77 - Fix some NO MD5 build issues with optional features
78 - Freescale CodeWarrior project updates
79 - ECC curves can be individually turned on/off at build time.
80 - Sniffer handles Cert Status message and other minor fixes
81 - SetMinVersion() at the wolfSSL Context level instead of just SSL session level
82 to allow minimum protocol version allowed at runtime
83 - RNG failure resource cleanup fix
85 - No high level security fixes that requires an update though we always
86 recommend updating to the latest (except note 6 use case of ecc/normal math)
88 See INSTALL file for build instructions.
89 More info can be found on-line at //http://wolfssl.com/yaSSL/Docs.html
92 #wolfSSL (Formerly CyaSSL) Release 3.4.0 (02/23/2015)
94 ## Release 3.4.0 wolfSSL has bug fixes and new features including:
96 - wolfSSL API and wolfCrypt API, you can still include the cyassl and ctaocrypt
97 headers which will enable the compatibility APIs for the foreseeable future
98 - Example use of the wolfCrypt API can be found in wolfcrypt/test/test.c
99 - Example use of the wolfSSL API can be found in examples/client/client.c
100 - Curve25519 now supported at the wolfCrypt level, wolfSSL layer coming soon
101 - Improvements in the build configuration under AIX
102 - Microchip Pic32 MZ updates
105 - Xcode project update
106 - Bidirectional shutdown examples in client/server with -w (wait for full
108 - Cycle counts on benchmarks for x86_64, more coming soon
109 - ALT_ECC_SIZE for reducing ecc heap use with fastmath when also using large RSA
111 - Various compile warnings
112 - Scan-build warning fixes
113 - Changed a memcpy to memmove in the sniffer (if using sniffer please update)
114 - No high level security fixes that requires an update though we always
115 recommend updating to the latest
118 # CyaSSL Release 3.3.0 (12/05/2014)
120 - Countermeasuers for Handshake message duplicates, CHANGE CIPHER without
121 FINISHED, and fast forward attempts. Thanks to Karthikeyan Bhargavan from
122 the Prosecco team at INRIA Paris-Rocquencourt for the report.
123 - FIPS version submitted
124 - Removes SSLv2 Client Hello processing, can be enabled with OLD_HELLO_ALLOWED
125 - User can set mimimum downgrade version with CyaSSL_SetMinVersion()
126 - Small stack improvements at TLS/SSL layer
127 - TLS Master Secret generation and Key Expansion are now exposed
128 - Adds client side Secure Renegotiation, * not recommended *
129 - Client side session ticket support, not fully tested with Secure Renegotiation
130 - Allows up to 4096bit DHE at TLS Key Exchange layer
131 - Handles non standard SessionID sizes in Hello Messages
133 - Sniffer now supports SNI Virtual Hosts
134 - Sniffer now handles non HTTPS protocols using STARTTLS
135 - Sniffer can now parse records with multiple messages
137 - Fix for ColdFire optimized fp_digit read only in explicit 32bit case
138 - ADH Cipher Suite ADH-AES128-SHA for EAP-FAST
140 The CyaSSL manual is available at:
141 http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
142 and comments about the new features please check the manual.
145 # CyaSSL Release 3.2.0 (09/10/2014)
147 #### Release 3.2.0 CyaSSL has bug fixes and new features including:
149 - ChaCha20 and Poly1305 crypto and suites
150 - Small stack improvements for OCSP, CRL, TLS, DTLS
151 - NTRU Encrypt and Decrypt benchmarks
152 - Updated Visual Studio project files
153 - Updated Keil MDK5 project files
154 - Fix for DTLS sequence numbers with GCM/CCM
155 - Updated HashDRBG with more secure struct declaration
156 - TI-RTOS support and example Code Composer Studio project files
157 - Ability to get enabled cipher suites, CyaSSL_get_ciphers()
158 - AES-GCM/CCM/Direct support for Freescale mmCAU and CAU
159 - Sniffer improvement checking for decrypt key setup
160 - Support for raw ECC key import
161 - Ability to convert ecc_key to DER, EccKeyToDer()
162 - Security fix for RSA Padding check vulnerability reported by Intel Security
163 Advanced Threat Research team
165 The CyaSSL manual is available at:
166 http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
167 and comments about the new features please check the manual.
170 # CyaSSL Release 3.1.0 (07/14/2014)
172 #### Release 3.1.0 CyaSSL has bug fixes and new features including:
174 - Fix for older versions of icc without 128-bit type
175 - Intel ASM syntax for AES-NI
176 - Updated NTRU support, keygen benchmark
177 - FIPS check for minimum required HMAC key length
178 - Small stack (--enable-smallstack) improvements for PKCS#7, ASN
179 - TLS extension support for DTLS
180 - Default I/O callbacks external to user
181 - Updated example client with bad clock test
182 - Ability to set optional ECC context info
183 - Ability to enable/disable DH separate from opensslextra
184 - Additional test key/cert buffers for CA and server
185 - Updated example certificates
187 The CyaSSL manual is available at:
188 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
189 and comments about the new features please check the manual.
192 # CyaSSL Release 3.0.2 (05/30/2014)
194 #### Release 3.0.2 CyaSSL has bug fixes and new features including:
196 - Added the following cipher suites:
197 * TLS_PSK_WITH_AES_128_GCM_SHA256
198 * TLS_PSK_WITH_AES_256_GCM_SHA384
199 * TLS_PSK_WITH_AES_256_CBC_SHA384
200 * TLS_PSK_WITH_NULL_SHA384
201 * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
202 * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
203 * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
204 * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
205 * TLS_DHE_PSK_WITH_NULL_SHA256
206 * TLS_DHE_PSK_WITH_NULL_SHA384
207 * TLS_DHE_PSK_WITH_AES_128_CCM
208 * TLS_DHE_PSK_WITH_AES_256_CCM
209 - Added AES-NI support for Microsoft Visual Studio builds.
210 - Changed small stack build to be disabled by default.
211 - Updated the Hash DRBG and provided a configure option to enable.
213 The CyaSSL manual is available at:
214 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
215 and comments about the new features please check the manual.
218 # CyaSSL Release 3.0.0 (04/29/2014)
220 #### Release 3.0.0 CyaSSL has bug fixes and new features including:
222 - FIPS release candidate
223 - X.509 improvements that address items reported by Suman Jana with security
224 researchers at UT Austin and UC Davis
225 - Small stack size improvements, --enable-smallstack. Offloads large local
226 variables to the heap. (Note this is not complete.)
227 - Updated AES-CCM-8 cipher suites to use approved suite numbers.
229 The CyaSSL manual is available at:
230 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
231 and comments about the new features please check the manual.
234 # CyaSSL Release 2.9.4 (04/09/2014)
236 #### Release 2.9.4 CyaSSL has bug fixes and new features including:
238 - Security fixes that address items reported by Ivan Fratric of the Google
240 - X.509 Unknown critical extensions treated as errors, report by Suman Jana with
241 security researchers at UT Austin and UC Davis
242 - Sniffer fixes for corrupted packet length and Jumbo frames
243 - ARM thumb mode assembly fixes
244 - Xcode 5.1 support including new clang
245 - PIC32 MZ hardware support
246 - CyaSSL Object has enough room to read the Record Header now w/o allocs
247 - FIPS wrappers for AES, 3DES, SHA1, SHA256, SHA384, HMAC, and RSA.
248 - A sample I/O pool is demonstrated with --enable-iopool to overtake memory
249 handling and reduce memory fragmentation on I/O large sizes
251 The CyaSSL manual is available at:
252 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
253 and comments about the new features please check the manual.
256 # CyaSSL Release 2.9.0 (02/07/2014)
258 #### Release 2.9.0 CyaSSL has bug fixes and new features including:
259 - Freescale Kinetis RNGB support
260 - Freescale Kinetis mmCAU support
261 - TLS Hello extensions
263 - Secure Renegotiation (null)
266 - PKCS #7 Enveloped data and signed data
267 - PKCS #10 Certificate Signing Request generation
268 - DTLS sliding window
270 - API change to integrate into Certificate Manager
272 - example client/server support for OCSP
273 - OCSP nonces are optional
275 - Windows build additions
276 - Windows CYGWIN build fixes
277 - Updated test certificates
278 - Microchip MPLAB Harmony support
279 - Update autoconf scripts
280 - Additional X.509 inspection functions
281 - ECC encrypt/decrypt primitives
282 - ECC Certificate generation
284 The Freescale Kinetis K53 RNGB documentation can be found in Chapter 33 of the
285 K53 Sub-Family Reference Manual:
286 http://cache.freescale.com/files/32bit/doc/ref_manual/K53P144M100SF2RM.pdf
288 Freescale Kinetis K60 mmCAU (AES, DES, 3DES, MD5, SHA, SHA256) documentation
289 can be found in the "ColdFire/ColdFire+ CAU and Kinetis mmCAU Software Library
291 http://cache.freescale.com/files/32bit/doc/user_guide/CAUAPIUG.pdf
294 # CyaSSL Release 2.8.0 (8/30/2013)
296 #### Release 2.8.0 CyaSSL has bug fixes and new features including:
297 - AES-GCM and AES-CCM use AES-NI
298 - NetX default IO callback handlers
299 - IPv6 fixes for DTLS Hello Cookies
300 - The ability to unload Certs/Keys after the handshake, CyaSSL_UnloadCertsKeys()
301 - SEP certificate extensions
302 - Callback getters for easier resource freeing
303 - External CYASSL_MAX_ERROR_SZ for correct error buffer sizing
304 - MacEncrypt and DecryptVerify Callbacks for User Atomic Record Layer Processing
305 - Public Key Callbacks for ECC and RSA
306 - Client now sends blank cert upon request if doesn't have one with TLS <= 1.2
309 The CyaSSL manual is available at:
310 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
311 and comments about the new features please check the manual.
314 # CyaSSL Release 2.7.0 (6/17/2013)
316 #### Release 2.7.0 CyaSSL has bug fixes and new features including:
317 - SNI support for client and server
318 - KEIL MDK-ARM projects
319 - Wildcard check to domain name match, and Subject altnames are checked too
320 - Better error messages for certificate verification errors
321 - Ability to discard session during handshake verify
322 - More consistent error returns across all APIs
323 - Ability to unload CAs at the CTX or CertManager level
324 - Authority subject id support for Certificate matching
325 - Persistent session cache functionality
326 - Persistent CA cache functionality
327 - Client session table lookups to push serverID table to library level
328 - Camellia support to sniffer
329 - User controllable settings for DTLS timeout values
330 - Sniffer fixes for caching long lived sessions
331 - DTLS reliability enhancements for the handshake
332 - Better ThreadX support
334 When compiling with Mingw, libtool may give the following warning due to
335 path conversion errors:
338 libtool: link: Could not determine host file name corresponding to **
339 libtool: link: Continuing, but uninstalled executables may not work.
342 If so, examples and testsuite will have problems when run, showing an
343 error while loading shared libraries. To resolve, please run "make install".
345 The CyaSSL manual is available at:
346 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
347 and comments about the new features please check the manual.
350 # CyaSSL Release 2.6.0 (04/15/2013)
352 #### Release 2.6.0 CyaSSL has bug fixes and new features including:
353 - DTLS 1.2 support including AEAD ciphers
354 - SHA-3 finalist Blake2 support, it's fast and uses little resources
355 - SHA-384 cipher suites including ECC ones
356 - HMAC now supports SHA-512
357 - Track memory use for example client/server with -t option
358 - Better IPv6 examples with --enable-ipv6, before if ipv6 examples/tests were
359 turned on, localhost only was used. Now link-local (with scope ids) and ipv6
360 hosts can be used as well.
361 - Xcode v4.6 project for iOS v6.1 update
362 - settings.h is now checked in all *.c files for true one file setting detection
363 - Better alignment at SSL layer for hardware crypto alignment needs
364 * Note, SSL itself isn't friendly to alignment with 5 byte TLS headers and
365 13 bytes DTLS headers, but every effort is now made to align with the
366 CYASSL_GENERAL_ALIGNMENT flag which sets desired alignment requirement
367 - NO_64BIT flag to turn off 64bit data type accumulators in public key code
368 * Note, some systems are faster with 32bit accumulators
369 - --enable-stacksize for example client/server stack use
370 * Note, modern desktop Operating Systems may add bytes to each stack frame
371 - Updated compression/decompression with direct crypto access
372 - All ./configure options are now lowercase only for consistency
373 - ./configure builds default to fastmath option
374 * Note, if on ia32 and building in shared mode this may produce a problem
375 with a missing register being available because of PIC, there are at least
377 1) --disable-fastmath , don't use fastmath
378 2) --disable-shared, don't build a shared library
379 3) C_EXTRA_FLAGS=-DTFM_NO_ASM , turn off assembly use
380 4) use clang, it just seems to work
381 5) play around with no PIC options to force all registers being open
382 - Many new ./configure switches for option enable/disable for example
389 * null (allow NULL ciphers)
390 * oldtls (only use TLS 1.2)
391 * asn (no certs or public keys allowed)
392 - ./configure generates cyassl/options.h which allows a header the user can
393 include in their app to make sure the same options are set at the app and
395 - autoconf no longer needs serial-tests which lowers version requirements of
396 automake to 1.11 and autoconf to 2.63
398 The CyaSSL manual is available at:
399 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
400 and comments about the new features please check the manual.
404 # CyaSSL Release 2.5.0 (02/04/2013)
406 #### Release 2.5.0 CyaSSL has bug fixes and new features including:
407 - Fix for TLS CBC padding timing attack identified by Nadhem Alfardan and
408 Kenny Paterson: http://www.isg.rhul.ac.uk/tls/
409 - Microchip PIC32 (MIPS16, MIPS32) support
410 - Microchip MPLAB X example projects for PIC32 Ethernet Starter Kit
411 - Updated CTaoCrypt benchmark app for embedded systems
412 - 1024-bit test certs/keys and cert/key buffers
413 - AES-CCM-8 crypto and cipher suites
414 - Camellia crypto and cipher suites
415 - Bumped minimum autoconf version to 2.65, automake version to 1.12
416 - Addition of OCSP callbacks
417 - STM32F2 support with hardware crypto and RNG
418 - Cavium NITROX support
420 CTaoCrypt now has support for the Microchip PIC32 and has been tested with
421 the Microchip PIC32 Ethernet Starter Kit, the XC32 compiler and
422 MPLAB X IDE in both MIPS16 and MIPS32 instruction set modes. See the README
423 located under the <cyassl_root>/mplabx directory for more details.
425 To add Cavium NITROX support do:
427 ./configure --with-cavium=/home/user/cavium/software
429 pointing to your licensed cavium/software directory. Since Cavium doesn't
430 build a library we pull in the cavium_common.o file which gives a libtool
431 warning about the portability of this. Also, if you're using the github source
432 tree you'll need to remove the -Wredundant-decls warning from the generated
433 Makefile because the cavium headers don't conform to this warning. Currently
434 CyaSSL supports Cavium RNG, AES, 3DES, RC4, HMAC, and RSA directly at the crypto
435 layer. Support at the SSL level is partial and currently just does AES, 3DES,
436 and RC4. RSA and HMAC are slower until the Cavium calls can be utilized in non
437 blocking mode. The example client turns on cavium support as does the crypto
438 test and benchmark. Please see the HAVE_CAVIUM define.
440 CyaSSL is able to use the STM32F2 hardware-based cryptography and random number
441 generator through the STM32F2 Standard Peripheral Library. For necessary
442 defines, see the CYASSL_STM32F2 define in settings.h. Documentation for the
443 STM32F2 Standard Peripheral Library can be found in the following document:
444 http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/DM00023896.pdf
446 The CyaSSL manual is available at:
447 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
448 and comments about the new features please check the manual.
452 # CyaSSL Release 2.4.6 (12/20/2012)
454 #### Release 2.4.6 CyaSSL has bug fixes and a few new features including:
455 - ECC into main version
456 - Lean PSK build (reduced code size, RAM usage, and stack usage)
457 - FreeBSD CRL monitor support
459 - CyaSSL_send() and CyaSSL_recv() for I/O flag setting
460 - CodeWarrior Support
462 - Freescale Kinetis support including Hardware RNG
463 - autoconf builds use jobserver
465 - Sniffer memory reductions
467 Thanks to Brian Aker for the improved autoconf system, make rpm, cyassl-config,
468 warning system, and general good ideas for improving CyaSSL!
470 The Freescale Kinetis K70 RNGA documentation can be found in Chapter 37 of the
471 K70 Sub-Family Reference Manual:
472 http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K70P256M150SF3RM.pdf
474 The CyaSSL manual is available at:
475 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
476 and comments about the new features please check the manual.
479 # CyaSSL Release 2.4.0 (10/10/2012)
481 #### Release 2.4.0 CyaSSL has bug fixes and a few new features including:
483 - Reduced memory usage after handshake
484 - Updated build process
486 The CyaSSL manual is available at:
487 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
488 and comments about the new features please check the manual.
492 # CyaSSL Release 2.3.0 (8/10/2012)
494 #### Release 2.3.0 CyaSSL has bug fixes and a few new features including:
495 - AES-GCM crypto and cipher suites
496 - make test cipher suite checks
497 - Subject AltName processing
498 - Command line support for client/server examples
499 - Sniffer SessionTicket support
500 - SHA-384 cipher suites
501 - Verify cipher suite validity when user overrides
503 - DTLS Cookie support, reliability coming soon
505 The CyaSSL manual is available at:
506 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
507 and comments about the new features please check the manual.
511 # CyaSSL Release 2.2.0 (5/18/2012)
513 #### Release 2.2.0 CyaSSL has bug fixes and a few new features including:
514 - Initial CRL support (--enable-crl)
515 - Initial OCSP support (--enable-ocsp)
516 - Add static ECDH suites
518 - ECC client certificate support
519 - Add medium session cache size (1055 sessions)
521 - Protection against mutex reinitialization
524 The CyaSSL manual is available at:
525 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
526 and comments about the new features please check the manual.
530 # CyaSSL Release 2.0.8 (2/24/2012)
532 #### Release 2.0.8 CyaSSL has bug fixes and a few new features including:
533 - A fix for malicious certificates pointed out by Remi Gacogne (thanks)
534 resulting in NULL pointer use.
535 - Respond to renegotiation attempt with no_renegoatation alert
536 - Add basic path support for load_verify_locations()
537 - Add set Temp EC-DHE key size
538 - Extra checks on rsa test when porting into
541 The CyaSSL manual is available at:
542 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
543 and comments about the new features please check the manual.
547 # CyaSSL Release 2.0.6 (1/27/2012)
549 #### Release 2.0.6 CyaSSL has bug fixes and a few new features including:
550 - Fixes for CA basis constraint check
551 - CTX reference counting
552 - Initial unit test additions
553 - Lean and Mean Windows fix
555 - SSMTP build support
556 - Ability to group handshake messages with set_group_messages(ctx/ssl)
557 - CA cache addition callback
558 - Export Base64_Encode for general use
560 The CyaSSL manual is available at:
561 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
562 and comments about the new features please check the manual.
566 # CyaSSL Release 2.0.2 (12/05/2011)
568 #### Release 2.0.2 CyaSSL has bug fixes and a few new features including:
569 - CTaoCrypt Runtime library detection settings when directly using the crypto
571 - Default certificate generation now uses SHAwRSA and adds SHA256wRSA generation
572 - All test certificates now use 2048bit and SHA-1 for better modern browser
574 - Direct AES block access and AES-CTR (counter) mode
575 - Microchip pic32 support
577 The CyaSSL manual is available at:
578 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
579 and comments about the new features please check the manual.
583 # CyaSSL Release 2.0.0rc3 (9/28/2011)
585 #### Release 2.0.0rc3 for CyaSSL has bug fixes and a few new features including:
586 - updated autoconf support
587 - better make install and uninstall (uses system directories)
588 - make test / make check
589 - CyaSSL headers now in <cyassl/*.h>
590 - CTaocrypt headers now in <cyassl/ctaocrypt/*.h>
591 - OpenSSL compatibility headers now in <cyassl/openssl/*.h>
592 - examples and tests all run from home directory so can use certs in ./certs
595 So previous applications that used the OpenSSL compatibility header
596 <openssl/ssl.h> now need to include <cyassl/openssl/ssl.h> instead, no other
597 changes are required.
599 Special Thanks to Brian Aker for his autoconf, install, and header patches.
601 The CyaSSL manual is available at:
602 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
603 and comments about the new features please check the manual.
605 # CyaSSL Release 2.0.0rc2 (6/6/2011)
607 #### Release 2.0.0rc2 for CyaSSL has bug fixes and a few new features including:
608 - bug fixes (Alerts, DTLS with DHE)
611 - Wshadow warnings removed
613 - CTaoCrypt public headers now all have ctc_ prefix (the manual is still being
614 updated to reflect this change)
617 This is the 2nd and perhaps final release candidate for version 2.
618 Please send any comments or questions to support@yassl.com.
620 The CyaSSL manual is available at:
621 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
622 and comments about the new features please check the manual.
624 # CyaSSL Release 2.0.0rc1 (5/2/2011)
626 #### Release 2.0.0rc1 for CyaSSL has many new features including:
628 - SHA-256 cipher suites
629 - Root Certificate Verification (instead of needing all certs in the chain)
630 - PKCS #8 private key encryption (supports PKCS #5 v1-v2 and PKCS #12)
631 - Serial number retrieval for x509
632 - PBKDF2 and PKCS #12 PBKDF
633 - UID parsing for x509
634 - SHA-256 certificate signatures
635 - Client and server can send chains (SSL_CTX_use_certificate_chain_file)
636 - CA loading can now parse multiple certificates per file
637 - Dynamic memory runtime hooks
638 - Runtime hooks for logging
640 - More informative error codes
641 - More informative logging messages
642 - Version downgrade more robust (use SSL_v23*)
643 - Shared build only by default through ./configure
644 - Compiler visibility is now used, internal functions not polluting namespace
645 - Single Makefile, no recursion, for faster and simpler building
646 - Turn on all warnings possible build option, warning fixes
649 Because of all the new features and the multiple OS, compiler, feature-set
650 options that CyaSSL allows, there may be some configuration fixes needed.
651 Please send any comments or questions to support@yassl.com.
653 The CyaSSL manual is available at:
654 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
655 and comments about the new features please check the manual.
657 # CyaSSL Release 1.9.0 (3/2/2011)
659 Release 1.9.0 for CyaSSL adds bug fixes, improved TLSv1.2 through testing and
660 better hash/sig algo ids, --enable-webServer for the yaSSL embedded web server,
661 improper AES key setup detection, user cert verify callback improvements, and
664 The CyaSSL manual offering is included in the doc/ directory. For build
665 instructions and comments about the new features please check the manual.
667 Please send any comments or questions to support@yassl.com.
669 # CyaSSL Release 1.8.0 (12/23/2010)
671 Release 1.8.0 for CyaSSL adds bug fixes, x509 v3 CA signed certificate
672 generation, a C standard library abstraction layer, lower memory use, increased
673 portability through the os_settings.h file, and the ability to use NTRU cipher
674 suites when used in conjunction with an NTRU license and library.
676 The initial CyaSSL manual offering is included in the doc/ directory. For
677 build instructions and comments about the new features please check the manual.
679 Please send any comments or questions to support@yassl.com.
684 # CyaSSL Release 1.6.5 (9/9/2010)
686 Release 1.6.5 for CyaSSL adds bug fixes and x509 v3 self signed certificate
689 For general build instructions see doc/Building_CyaSSL.pdf.
691 To enable certificate generation support add this option to ./configure
692 ./configure --enable-certgen
694 An example is included in ctaocrypt/test/test.c and documentation is provided
695 in doc/CyaSSL_Extensions_Reference.pdf item 11.
697 # CyaSSL Release 1.6.0 (8/27/2010)
699 Release 1.6.0 for CyaSSL adds bug fixes, RIPEMD-160, SHA-512, and RSA key
702 For general build instructions see doc/Building_CyaSSL.pdf.
704 To add RIPEMD-160 support add this option to ./configure
705 ./configure --enable-ripemd
707 To add SHA-512 support add this option to ./configure
708 ./configure --enable-sha512
710 To add RSA key generation support add this option to ./configure
711 ./configure --enable-keygen
713 Please see ctaocrypt/test/test.c for examples and usage.
715 For Windows, RIPEMD-160 and SHA-512 are enabled by default but key generation is
716 off by default. To turn key generation on add the define CYASSL_KEY_GEN to
720 # CyaSSL Release 1.5.6 (7/28/2010)
722 Release 1.5.6 for CyaSSL adds bug fixes, compatibility for our JSSE provider,
723 and a fix for GCC builds on some systems.
725 For general build instructions see doc/Building_CyaSSL.pdf.
727 To add AES-NI support add this option to ./configure
728 ./configure --enable-aesni
730 You'll need GCC 4.4.3 or later to make use of the assembly.
732 # CyaSSL Release 1.5.4 (7/7/2010)
734 Release 1.5.4 for CyaSSL adds bug fixes, support for AES-NI, SHA1 speed
735 improvements from loop unrolling, and support for the Mongoose Web Server.
737 For general build instructions see doc/Building_CyaSSL.pdf.
739 To add AES-NI support add this option to ./configure
740 ./configure --enable-aesni
742 You'll need GCC 4.4.3 or later to make use of the assembly.
744 # CyaSSL Release 1.5.0 (5/11/2010)
746 Release 1.5.0 for CyaSSL adds bug fixes, GoAhead WebServer support, sniffer
747 support, and initial swig interface support.
749 For general build instructions see doc/Building_CyaSSL.pdf.
751 To add support for GoAhead WebServer either --enable-opensslExtra or if you
752 don't want all the features of opensslExtra you can just define GOAHEAD_WS
753 instead. GOAHEAD_WS can be added to ./configure with CFLAGS=-DGOAHEAD_WS or
754 you can define it yourself.
756 To look at the sniffer support please see the sniffertest app in
757 sslSniffer/sslSnifferTest. Build with --enable-sniffer on *nix or use the
758 vcproj files on windows. You'll need to have pcap installed on *nix and
761 A swig interface file is now located in the swig directory for using Python,
762 Java, Perl, and others with CyaSSL. This is initial support and experimental,
763 please send questions or comments to support@yassl.com.
765 When doing load testing with CyaSSL, on the echoserver example say, the client
766 machine may run out of tcp ephemeral ports, they will end up in the TIME_WAIT
767 queue, and can't be reused by default. There are generally two ways to fix
770 1. Reduce the length sockets remain on the TIME_WAIT queue OR
771 2. Allow items on the TIME_WAIT queue to be reused.
774 To reduce the TIME_WAIT length in OS X to 3 seconds (3000 milliseconds)
776 `sudo sysctl -w net.inet.tcp.msl=3000`
780 `sudo sysctl -w net.ipv4.tcp_tw_reuse=1`
782 allows reuse of sockets in TIME_WAIT
784 `sudo sysctl -w net.ipv4.tcp_tw_recycle=1`
786 works but seems to remove sockets from TIME_WAIT entirely?
788 `sudo sysctl -w net.ipv4.tcp_fin_timeout=1`
790 doen't control TIME_WAIT, it controls FIN_WAIT(2) contrary to some posts
793 # CyaSSL Release 1.4.0 (2/18/2010)
795 Release 1.3.0 for CyaSSL adds bug fixes, better multi TLS/SSL version support
796 through SSLv23_server_method(), and improved documentation in the doc/ folder.
798 For general build instructions doc/Building_CyaSSL.pdf.
800 # CyaSSL Release 1.3.0 (1/21/2010)
802 Release 1.3.0 for CyaSSL adds bug fixes, a potential security problem fix,
803 better porting support, removal of assert()s, and a complete THREADX port.
805 For general build instructions see rc1 below.
807 # CyaSSL Release 1.2.0 (11/2/2009)
809 Release 1.2.0 for CyaSSL adds bug fixes and session negotiation if first use is
812 For general build instructions see rc1 below.
814 # CyaSSL Release 1.1.0 (9/2/2009)
816 Release 1.1.0 for CyaSSL adds bug fixes, a check against malicious session
817 cache use, support for lighttpd, and TLS 1.2.
819 To get TLS 1.2 support please use the client and server functions:
822 SSL_METHOD *TLSv1_2_server_method(void);
823 SSL_METHOD *TLSv1_2_client_method(void);
826 CyaSSL was tested against lighttpd 1.4.23. To build CyaSSL for use with
827 lighttpd use the following commands from the CyaSSL install dir <CyaSSLDir>:
830 ./configure --disable-shared --enable-opensslExtra --enable-fastmath --without-zlib
836 Then to build lighttpd with CyaSSL use the following commands from the
837 lighttpd install dir:
840 ./configure --with-openssl --with-openssl-includes=<CyaSSLDir>/include --with-openssl-libs=<CyaSSLDir>/lib LDFLAGS=-lm
845 On some systems you may get a linker error about a duplicate symbol for
846 MD5_Init or other MD5 calls. This seems to be caused by the lighttpd src file
847 md5.c, which defines MD5_Init(), and is included in liblightcomp_la-md5.o.
848 When liblightcomp is linked with the SSL_LIBs the linker may complain about
849 the duplicate symbol. This can be fixed by editing the lighttpd src file md5.c
850 and adding this line to the beginning of the file:
854 and this line to the end of the file
858 Then from the lighttpd src dir do a:
865 If you get link errors about undefined symbols more than likely the actual
866 OpenSSL libraries are found by the linker before the CyaSSL openssl-links that
867 point to the CyaSSL library, causing the linker confusion. This can be fixed
868 by editing the Makefile in the lighttpd src directory and changing the line:
870 `SSL_LIB = -lssl -lcrypto`
876 Then from the lighttpd src dir do a:
883 This should remove any confusion the linker may be having with missing symbols.
885 For any questions or concerns please contact support@yassl.com .
887 For general build instructions see rc1 below.
889 # CyaSSL Release 1.0.6 (8/03/2009)
891 Release 1.0.6 for CyaSSL adds bug fixes, an improved session cache, and faster
892 math with a huge code option.
894 The session cache now defaults to a client mode, also good for embedded servers.
895 For servers not under heavy load (less than 200 new sessions per minute), define
896 BIG_SESSION_CACHE. If the server will be under heavy load, define
899 There is now a fasthugemath option for configure. This enables fastmath plus
900 even faster math by greatly increasing the code size of the math library. Use
901 the benchmark utility to compare public key operations.
904 For general build instructions see rc1 below.
906 # CyaSSL Release 1.0.3 (5/10/2009)
908 Release 1.0.3 for CyaSSL adds bug fixes and add increased support for OpenSSL
909 compatibility when building other applications.
911 Release 1.0.3 includes an alpha release of DTLS for both client and servers.
912 This is only for testing purposes at this time. Rebroadcast and reordering
913 aren't fully implemented at this time but will be for the next release.
915 For general build instructions see rc1 below.
917 # CyaSSL Release 1.0.2 (4/3/2009)
919 Release 1.0.2 for CyaSSL adds bug fixes for a couple I/O issues. Some systems
920 will send a SIGPIPE on socket recv() at any time and this should be handled by
921 the application by turning off SIGPIPE through setsockopt() or returning from
924 Release 1.0.2 includes an alpha release of DTLS for both client and servers.
925 This is only for testing purposes at this time. Rebroadcast and reordering
926 aren't fully implemented at this time but will be for the next release.
928 For general build instructions see rc1 below.
930 ## CyaSSL Release Candidiate 3 rc3-1.0.0 (2/25/2009)
933 Release Candidate 3 for CyaSSL 1.0.0 adds bug fixes and adds a project file for
934 iPhone development with Xcode. cyassl-iphone.xcodeproj is located in the root
935 directory. This release also includes a fix for supporting other
936 implementations that bundle multiple messages at the record layer, this was
937 lost when cyassl i/o was re-implemented but is now fixed.
939 For general build instructions see rc1 below.
941 ## CyaSSL Release Candidiate 2 rc2-1.0.0 (1/21/2009)
944 Release Candidate 2 for CyaSSL 1.0.0 adds bug fixes and adds two new stream
945 ciphers along with their respective cipher suites. CyaSSL adds support for
946 HC-128 and RABBIT stream ciphers. The new suites are:
949 TLS_RSA_WITH_HC_128_SHA
950 TLS_RSA_WITH_RABBIT_SHA
953 And the corresponding cipher names are
960 CyaSSL also adds support for building with devkitPro for PPC by changing the
961 library proper to use libogc. The examples haven't been changed yet but if
962 there's interest they can be. Here's an example ./configure to build CyaSSL
966 ./configure --disable-shared CC=/pathTo/devkitpro/devkitPPC/bin/powerpc-gekko-gcc --host=ppc --without-zlib --enable-singleThreaded RANLIB=/pathTo/devkitpro/devkitPPC/bin/powerpc-gekko-ranlib CFLAGS="-DDEVKITPRO -DGEKKO"
969 For linking purposes you'll need
971 `LDFLAGS="-g -mrvl -mcpu=750 -meabi -mhard-float -Wl,-Map,$(notdir $@).map"`
973 For general build instructions see rc1 below.
976 ## CyaSSL Release Candidiate 1 rc1-1.0.0 (12/17/2008)
979 Release Candidate 1 for CyaSSL 1.0.0 contains major internal changes. Several
980 areas have optimization improvements, less dynamic memory use, and the I/O
981 strategy has been refactored to allow alternate I/O handling or Library use.
982 Many thanks to Thierry Fournier for providing these ideas and most of the work.
984 Because of these changes, this release is only a candidate since some problems
985 are probably inevitable on some platform with some I/O use. Please report any
986 problems and we'll try to resolve them as soon as possible. You can contact us
987 at support@yassl.com or todd@yassl.com.
989 Using TomsFastMath by passing --enable-fastmath to ./configure now uses assembly
990 on some platforms. This is new so please report any problems as every compiler,
991 mode, OS combination hasn't been tested. On ia32 all of the registers need to
992 be available so be sure to pass these options to CFLAGS:
994 `CFLAGS="-O3 -fomit-frame-pointer"`
996 OS X will also need -mdynamic-no-pic added to CFLAGS
998 Also if you're building in shared mode for ia32 you'll need to pass options to
999 LDFLAGS as well on OS X:
1001 `LDFLAGS=-Wl,-read_only_relocs,warning`
1003 This gives warnings for some symbols but seems to work.
1006 #### To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
1011 from the ./testsuite/ directory run ./testsuite
1013 #### To make a debug build:
1015 ./configure --enable-debug --disable-shared
1020 #### To build on Win32
1022 Choose (Re)Build All from the project workspace
1024 Run the testsuite program
1030 # CyaSSL version 0.9.9 (7/25/2008)
1032 This release of CyaSSL adds bug fixes, Pre-Shared Keys, over-rideable memory
1033 handling, and optionally TomsFastMath. Thanks to Moisés Guimarães for the
1034 work on TomsFastMath.
1036 To optionally use TomsFastMath pass --enable-fastmath to ./configure
1037 Or define USE_FAST_MATH in each project from CyaSSL for MSVC.
1039 Please use the benchmark routine before and after to see the performance
1040 difference, on some platforms the gains will be little but RSA encryption
1041 always seems to be faster. On x86-64 machines with GCC the normal math library
1042 may outperform the fast one when using CFLAGS=-m64 because TomsFastMath can't
1043 yet use -m64 because of GCCs inability to do 128bit division.
1045 *** UPDATE GCC 4.2.1 can now do 128bit division ***
1047 See notes below (0.2.0) for complete build instructions.
1050 # CyaSSL version 0.9.8 (5/7/2008)
1052 This release of CyaSSL adds bug fixes, client side Diffie-Hellman, and better
1055 See notes below (0.2.0) for complete build instructions.
1058 # CyaSSL version 0.9.6 (1/31/2008)
1060 This release of CyaSSL adds bug fixes, increased session management, and a fix
1063 See notes below (0.2.0) for complete build instructions.
1066 # CyaSSL version 0.9.0 (10/15/2007)
1068 This release of CyaSSL adds bug fixes, MSVC 2005 support, GCC 4.2 support,
1069 IPV6 support and test, and new test certificates.
1071 See notes below (0.2.0) for complete build instructions.
1074 # CyaSSL version 0.8.0 (1/10/2007)
1076 This release of CyaSSL adds increased socket support, for non-blocking writes,
1077 connects, and interrupted system calls.
1079 See notes below (0.2.0) for complete build instructions.
1082 # CyaSSL version 0.6.3 (10/30/2006)
1084 This release of CyaSSL adds debug logging to stderr to aid in the debugging of
1085 CyaSSL on systems that may not provide the best support.
1087 If CyaSSL is built with debugging support then you need to call
1088 CyaSSL_Debugging_ON() to turn logging on.
1090 On Unix use ./configure --enable-debug
1092 On Windows define DEBUG_CYASSL when building CyaSSL
1095 To turn logging back off call CyaSSL_Debugging_OFF()
1097 See notes below (0.2.0) for complete build instructions.
1100 # CyaSSL version 0.6.2 (10/29/2006)
1102 This release of CyaSSL adds TLS 1.1.
1104 Note that CyaSSL has certificate verification on by default, unlike OpenSSL.
1105 To emulate OpenSSL behavior, you must call SSL_CTX_set_verify() with
1106 SSL_VERIFY_NONE. In order to have full security you should never do this,
1107 provide CyaSSL with the proper certificates to eliminate impostors and call
1108 CyaSSL_check_domain_name() to prevent man in the middle attacks.
1110 See notes below (0.2.0) for build instructions.
1112 # CyaSSL version 0.6.0 (10/25/2006)
1114 This release of CyaSSL adds more SSL functions, better autoconf, nonblocking
1115 I/O for accept, connect, and read. There is now an --enable-small configure
1116 option that turns off TLS, AES, DES3, HMAC, and ERROR_STRINGS, see configure.in
1117 for the defines. Note that TLS requires HMAC and AES requires TLS.
1119 See notes below (0.2.0) for build instructions.
1122 # CyaSSL version 0.5.5 (09/27/2006)
1124 This mini release of CyaSSL adds better input processing through buffered input
1125 and big message support. Added SSL_pending() and some sanity checks on user
1128 See notes below (0.2.0) for build instructions.
1131 # CyaSSL version 0.5.0 (03/27/2006)
1133 This release of CyaSSL adds AES support and minor bug fixes.
1135 See notes below (0.2.0) for build instructions.
1138 # CyaSSL version 0.4.0 (03/15/2006)
1140 This release of CyaSSL adds TLSv1 client/server support and libtool.
1142 See notes below for build instructions.
1145 # CyaSSL version 0.3.0 (02/26/2006)
1147 This release of CyaSSL adds SSLv3 server support and session resumption.
1149 See notes below for build instructions.
1152 # CyaSSL version 0.2.0 (02/19/2006)
1155 This is the first release of CyaSSL and its crypt brother, CTaoCrypt. CyaSSL
1156 is written in ANSI C with the idea of a small code size, footprint, and memory
1157 usage in mind. CTaoCrypt can be as small as 32K, and the current client
1158 version of CyaSSL can be as small as 12K.
1161 The first release of CTaoCrypt supports MD5, SHA-1, 3DES, ARC4, Big Integer
1162 Support, RSA, ASN parsing, and basic x509 (en/de)coding.
1164 The first release of CyaSSL supports normal client RSA mode SSLv3 connections
1165 with support for SHA-1 and MD5 digests. Ciphers include 3DES and RC4.
1168 #### To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
1173 from the ./testsuite/ directory run ./testsuite
1175 #### to make a debug build:
1177 ./configure --enable-debug --disable-shared
1182 #### To build on Win32
1184 Choose (Re)Build All from the project workspace
1186 Run the testsuite program
1190 *** The next release of CyaSSL will support a server and more OpenSSL
1191 compatibility functions.
1194 Please send questions or comments to todd@yassl.com