1 *** Notes, Please read ***
4 CyaSSL now needs all examples and tests to be run from the CyaSSL home
5 directory. This is because it finds certs and keys from ./certs/. Trying to
6 maintain the ability to run each program from its own directory, the testsuite
7 directory, the main directory (for make check/test), and for the various
8 different project layouts (with or without config) was becoming harder and
9 harder. Now to run testsuite just do:
15 make test (when using autoconf)
17 On *nix or Windows the examples and testsuite will check to see if the current
18 directory is the source directory and if so, attempt to change to the CyaSSL
19 home directory. This should work in most setup cases, if not, just follow the
20 beginning of the note and specify the full path.
24 CyaSSL takes a different approach to certificate verification than OpenSSL does.
25 The default policy for the client is to verify the server, this means that if
26 you don't load CAs to verify the server you'll get a connect error, unable to
27 verify (-155). It you want to mimic OpenSSL behavior of having SSL_connect
28 succeed even if verifying the server fails and reducing security you can do
31 SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
33 before calling SSL_new(); Though it's not recommended.
37 CyaSSL Release 2.3.0 (8/10/2012)
39 Release 2.3.0 CyaSSL has bug fixes and a few new features including:
40 - AES-GCM crypto and cipher suites
41 - make test cipher suite checks
42 - Subject AltName processing
43 - Command line support for client/server examples
44 - Sniffer SessionTicket support
45 - SHA-384 cipher suites
46 - Verify cipher suite validity when user overrides
48 - DTLS Cookie support, reliability coming soon
50 The CyaSSL manual is available at:
51 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
52 and comments about the new features please check the manual.
56 ***************CyaSSL Release 2.2.0 (5/18/2012)
58 Release 2.2.0 CyaSSL has bug fixes and a few new features including:
59 - Initial CRL support (--enable-crl)
60 - Initial OCSP support (--enable-ocsp)
61 - Add static ECDH suites
63 - ECC client certificate support
64 - Add medium session cache size (1055 sessions)
66 - Protection against mutex reinitialization
69 The CyaSSL manual is available at:
70 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
71 and comments about the new features please check the manual.
75 ***************CyaSSL Release 2.0.8 (2/24/2012)
77 Release 2.0.8 CyaSSL has bug fixes and a few new features including:
78 - A fix for malicious certificates pointed out by Remi Gacogne (thanks)
79 resulting in NULL pointer use.
80 - Respond to renegotiation attempt with no_renegoatation alert
81 - Add basic path support for load_verify_locations()
82 - Add set Temp EC-DHE key size
83 - Extra checks on rsa test when porting into
86 The CyaSSL manual is available at:
87 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
88 and comments about the new features please check the manual.
92 ************* CyaSSL Release 2.0.6 (1/27/2012)
94 Release 2.0.6 CyaSSL has bug fixes and a few new features including:
95 - Fixes for CA basis constraint check
96 - CTX reference counting
97 - Initial unit test additions
98 - Lean and Mean Windows fix
100 - SSMTP build support
101 - Ability to group handshake messages with set_group_messages(ctx/ssl)
102 - CA cache addition callback
103 - Export Base64_Encode for general use
105 The CyaSSL manual is available at:
106 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
107 and comments about the new features please check the manual.
111 ************* CyaSSL Release 2.0.2 (12/05/2011)
113 Release 2.0.2 CyaSSL has bug fixes and a few new features including:
114 - CTaoCrypt Runtime library detection settings when directly using the crypto
116 - Default certificate generation now uses SHAwRSA and adds SHA256wRSA generation
117 - All test certificates now use 2048bit and SHA-1 for better modern browser
119 - Direct AES block access and AES-CTR (counter) mode
120 - Microchip pic32 support
122 The CyaSSL manual is available at:
123 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
124 and comments about the new features please check the manual.
128 ************* CyaSSL Release 2.0.0rc3 (9/28/2011)
130 Release 2.0.0rc3 for CyaSSL has bug fixes and a few new features including:
131 - updated autoconf support
132 - better make install and uninstall (uses system directories)
133 - make test / make check
134 - CyaSSL headers now in <cyassl/*.h>
135 - CTaocrypt headers now in <cyassl/ctaocrypt/*.h>
136 - OpenSSL compatibility headers now in <cyassl/openssl/*.h>
137 - examples and tests all run from home diretory so can use certs in ./certs
140 So previous applications that used the OpenSSL compatibility header
141 <openssl/ssl.h> now need to include <cyassl/openssl/ssl.h> instead, no other
142 changes are required.
144 Special Thanks to Brian Aker for his autoconf, install, and header patches.
146 The CyaSSL manual is available at:
147 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
148 and comments about the new features please check the manual.
150 ************CyaSSL Release 2.0.0rc2 (6/6/2011)
152 Release 2.0.0rc2 for CyaSSL has bug fixes and a few new features including:
153 - bug fixes (Alerts, DTLS with DHE)
156 - Wshadow warnings removed
158 - CTaoCrypt public headers now all have ctc_ prefix (the manual is still being
159 updated to relfect this change)
162 This is the 2nd and perhaps final release candidate for version 2.
163 Please send any comments or questions to support@yassl.com.
165 The CyaSSL manual is available at:
166 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
167 and comments about the new features please check the manual.
169 ***********CyaSSL Release 2.0.0rc1 (5/2/2011)
171 Release 2.0.0rc1 for CyaSSL has many new features including:
173 - SHA-256 cipher suites
174 - Root Certificate Verification (instead of needing all certs in the chain)
175 - PKCS #8 private key encryption (supports PKCS #5 v1-v2 and PKCS #12)
176 - Serial number retrieval for x509
177 - PBKDF2 and PKCS #12 PBKDF
178 - UID parsing for x509
179 - SHA-256 certificate signatures
180 - Client and server can send chains (SSL_CTX_use_certificate_chain_file)
181 - CA loading can now parse multiple certificates per file
182 - Dynamic memory runtime hooks
183 - Runtime hooks for logging
185 - More informative error codes
186 - More informative logging messages
187 - Version downgrade more robust (use SSL_v23*)
188 - Shared build only by default through ./configure
189 - Compiler visibility is now used, internal functions not polluting namespace
190 - Single Makefile, no recursion, for faster and simpler building
191 - Turn on all warnings possible build option, warning fixes
194 Because of all the new features and the multiple OS, compiler, feature-set
195 options that CyaSSL allows, there may be some configuration fixes needed.
196 Please send any comments or questions to support@yassl.com.
198 The CyaSSL manual is available at:
199 http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions
200 and comments about the new features please check the manual.
202 ****************** CyaSSL Release 1.9.0 (3/2/2011)
204 Release 1.9.0 for CyaSSL adds bug fixes, improved TLSv1.2 through testing and
205 better hash/sig algo ids, --enable-webServer for the yaSSL embedded web server,
206 improper AES key setup detection, user cert verify callback improvements, and
209 The CyaSSL manual offering is included in the doc/ directory. For build
210 instructions and comments about the new features please check the manual.
212 Please send any comments or questions to support@yassl.com.
214 ****************** CyaSSL Release 1.8.0 (12/23/2010)
216 Release 1.8.0 for CyaSSL adds bug fixes, x509 v3 CA signed certificate
217 generation, a C standard library abstraction layer, lower memory use, increased
218 portability through the os_settings.h file, and the ability to use NTRU cipher
219 suites when used in conjunction with an NTRU license and library.
221 The initial CyaSSL manual offering is included in the doc/ directory. For
222 build instructions and comments about the new features please check the manual.
224 Please send any comments or questions to support@yassl.com.
229 ********************* CyaSSL Release 1.6.5 (9/9/2010)
231 Release 1.6.5 for CyaSSL adds bug fixes and x509 v3 self signed certificate
234 For general build instructions see doc/Building_CyaSSL.pdf.
236 To enable certificate generation support add this option to ./configure
237 ./configure --enable-certgen
239 An example is included in ctaocrypt/test/test.c and documentation is provided
240 in doc/CyaSSL_Extensions_Reference.pdf item 11.
242 ********************** CyaSSL Release 1.6.0 (8/27/2010)
244 Release 1.6.0 for CyaSSL adds bug fixes, RIPEMD-160, SHA-512, and RSA key
247 For general build instructions see doc/Building_CyaSSL.pdf.
249 To add RIPEMD-160 support add this option to ./configure
250 ./configure --enable-ripemd
252 To add SHA-512 support add this option to ./configure
253 ./configure --enable-sha512
255 To add RSA key generation support add this option to ./configure
256 ./configure --enable-keygen
258 Please see ctaocrypt/test/test.c for examples and usage.
260 For Windows, RIPEMD-160 and SHA-512 are enabled by default but key generation is
261 off by default. To turn key generation on add the define CYASSL_KEY_GEN to
265 ************* CyaSSL Release 1.5.6 (7/28/2010)
267 Release 1.5.6 for CyaSSL adds bug fixes, compatibility for our JSSE provider,
268 and a fix for GCC builds on some systems.
270 For general build instructions see doc/Building_CyaSSL.pdf.
272 To add AES-NI support add this option to ./configure
273 ./configure --enable-aesni
275 You'll need GCC 4.4.3 or later to make use of the assembly.
277 ************** CyaSSL Release 1.5.4 (7/7/2010)
279 Release 1.5.4 for CyaSSL adds bug fixes, support for AES-NI, SHA1 speed
280 improvements from loop unrolling, and support for the Mongoose Web Server.
282 For general build instructions see doc/Building_CyaSSL.pdf.
284 To add AES-NI support add this option to ./configure
285 ./configure --enable-aesni
287 You'll need GCC 4.4.3 or later to make use of the assembly.
289 *************** CyaSSL Release 1.5.0 (5/11/2010)
291 Release 1.5.0 for CyaSSL adds bug fixes, GoAhead WebServer support, sniffer
292 support, and initial swig interface support.
294 For general build instructions see doc/Building_CyaSSL.pdf.
296 To add support for GoAhead WebServer either --enable-opensslExtra or if you
297 don't want all the features of opensslExtra you can just define GOAHEAD_WS
298 instead. GOAHEAD_WS can be added to ./configure with CFLAGS=-DGOAHEAD_WS or
299 you can define it yourself.
301 To look at the sniffer support please see the sniffertest app in
302 sslSniffer/sslSnifferTest. Build with --enable-sniffer on *nix or use the
303 vcproj files on windows. You'll need to have pcap installed on *nix and
306 A swig interface file is now located in the swig directory for using Python,
307 Java, Perl, and others with CyaSSL. This is initial support and experimental,
308 please send questions or comments to support@yassl.com.
310 When doing load testing with CyaSSL, on the echoserver example say, the client
311 machine may run out of tcp ephemeral ports, they will end up in the TIME_WAIT
312 queue, and can't be reused by default. There are generally two ways to fix
313 this. 1) Reduce the length sockets remain on the TIME_WAIT queue or 2) Allow
314 items on the TIME_WAIT queue to be reused.
317 To reduce the TIME_WAIT length in OS X to 3 seconds (3000 milliseconds)
319 sudo sysctl -w net.inet.tcp.msl=3000
323 sudo sysctl -w net.ipv4.tcp_tw_reuse=1
325 allows reuse of sockets in TIME_WAIT
327 sudo sysctl -w net.ipv4.tcp_tw_recycle=1
329 works but seems to remove sockets from TIME_WAIT entirely?
331 sudo sysctl -w net.ipv4.tcp_fin_timeout=1
333 doen't control TIME_WAIT, it controls FIN_WAIT(2) contrary to some posts
336 ******************** CyaSSL Release 1.4.0 (2/18/2010)
338 Release 1.3.0 for CyaSSL adds bug fixes, better multi TLS/SSL version support
339 through SSLv23_server_method(), and improved documentation in the doc/ folder.
341 For general build instructions doc/Building_CyaSSL.pdf.
343 ******************** CyaSSL Release 1.3.0 (1/21/2010)
345 Release 1.3.0 for CyaSSL adds bug fixes, a potential security problem fix,
346 better porting support, removal of assert()s, and a complete THREADX port.
348 For general build instructions see rc1 below.
350 ******************** CyaSSL Release 1.2.0 (11/2/2009)
352 Release 1.2.0 for CyaSSL adds bug fixes and session negotiation if first use is
355 For general build instructions see rc1 below.
357 ******************** CyaSSL Release 1.1.0 (9/2/2009)
359 Release 1.1.0 for CyaSSL adds bug fixes, a check against malicious session
360 cache use, support for lighttpd, and TLS 1.2.
362 To get TLS 1.2 support please use the client and server functions:
364 SSL_METHOD *TLSv1_2_server_method(void);
365 SSL_METHOD *TLSv1_2_client_method(void);
367 CyaSSL was tested against lighttpd 1.4.23. To build CyaSSL for use with
368 lighttpd use the following commands from the CyaSSL install dir <CyaSSLDir>:
370 ./configure --disable-shared --enable-opensslExtra --enable-fastmath --without-zlib
375 Then to build lighttpd with CyaSSL use the following commands from the
376 lighttpd install dir:
378 ./configure --with-openssl --with-openssl-includes=<CyaSSLDir>/include --with-openssl-libs=<CyaSSLDir>/lib LDFLAGS=-lm
382 On some systems you may get a linker error about a duplicate symbol for
383 MD5_Init or other MD5 calls. This seems to be caused by the lighttpd src file
384 md5.c, which defines MD5_Init(), and is included in liblightcomp_la-md5.o.
385 When liblightcomp is linked with the SSL_LIBs the linker may complain about
386 the duplicate symbol. This can be fixed by editing the lighttpd src file md5.c
387 and adding this line to the beginning of the file:
391 and this line to the end of the file
395 Then from the lighttpd src dir do a:
401 If you get link errors about undefined symbols more than likely the actual
402 OpenSSL libraries are found by the linker before the CyaSSL openssl-links that
403 point to the CyaSSL library, causing the linker confusion. This can be fixed
404 by editing the Makefile in the lighttpd src directory and changing the line:
406 SSL_LIB = -lssl -lcrypto
412 Then from the lighttpd src dir do a:
417 This should remove any confusion the linker may be having with missing symbols.
419 For any questions or concerns please contact support@yassl.com .
421 For general build instructions see rc1 below.
423 ******************CyaSSL Release 1.0.6 (8/03/2009)
425 Release 1.0.6 for CyaSSL adds bug fixes, an improved session cache, and faster
426 math with a huge code option.
428 The session cache now defaults to a client mode, also good for embedded servers.
429 For servers not under heavy load (less than 200 new sessions per minute), define
430 BIG_SESSION_CACHE. If the server will be under heavy load, define
433 There is now a fasthugemath option for configure. This enables fastmath plus
434 even faster math by greatly increasing the code size of the math library. Use
435 the benchmark utility to compare public key operations.
438 For general build instructions see rc1 below.
440 ******************CyaSSL Release 1.0.3 (5/10/2009)
442 Release 1.0.3 for CyaSSL adds bug fixes and add increased support for OpenSSL
443 compatibility when building other applications.
445 Release 1.0.3 includes an alpha release of DTLS for both client and servers.
446 This is only for testing purposes at this time. Rebroadcast and reordering
447 aren't fully implemented at this time but will be for the next release.
449 For general build instructions see rc1 below.
451 ******************CyaSSL Release 1.0.2 (4/3/2009)
453 Release 1.0.2 for CyaSSL adds bug fixes for a couple I/O issues. Some systems
454 will send a SIGPIPE on socket recv() at any time and this should be handled by
455 the application by turning off SIGPIPE through setsockopt() or returning from
458 Release 1.0.2 includes an alpha release of DTLS for both client and servers.
459 This is only for testing purposes at this time. Rebroadcast and reordering
460 aren't fully implemented at this time but will be for the next release.
462 For general build instructions see rc1 below.
464 *****************CyaSSL Release Candidiate 3 rc3-1.0.0 (2/25/2009)
467 Release Candidate 3 for CyaSSL 1.0.0 adds bug fixes and adds a project file for
468 iPhone development with Xcode. cyassl-iphone.xcodeproj is located in the root
469 directory. This release also includes a fix for supporting other
470 implementations that bundle multiple messages at the record layer, this was
471 lost when cyassl i/o was re-implemented but is now fixed.
473 For general build instructions see rc1 below.
475 *****************CyaSSL Release Candidiate 2 rc2-1.0.0 (1/21/2009)
478 Release Candidate 2 for CyaSSL 1.0.0 adds bug fixes and adds two new stream
479 ciphers along with their respective cipher suites. CyaSSL adds support for
480 HC-128 and RABBIT stream ciphers. The new suites are:
482 TLS_RSA_WITH_HC_128_CBC_SHA
483 TLS_RSA_WITH_RABBIT_CBC_SHA
485 And the corresponding cipher names are
490 CyaSSL also adds support for building with devkitPro for PPC by changing the
491 library proper to use libogc. The examples haven't been changed yet but if
492 there's interest they can be. Here's an example ./configure to build CyaSSL
495 ./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"
497 For linking purposes you'll need
499 LDFLAGS="-g -mrvl -mcpu=750 -meabi -mhard-float -Wl,-Map,$(notdir $@).map"
501 For general build instructions see rc1 below.
504 ********************CyaSSL Release Candidiate 1 rc1-1.0.0 (12/17/2008)
507 Release Candidate 1 for CyaSSL 1.0.0 contains major internal changes. Several
508 areas have optimization improvements, less dynamic memory use, and the I/O
509 strategy has been refactored to allow alternate I/O handling or Library use.
510 Many thanks to Thierry Fournier for providing these ideas and most of the work.
512 Because of these changes, this release is only a candidate since some problems
513 are probably inevitable on some platform with some I/O use. Please report any
514 problems and we'll try to resolve them as soon as possible. You can contact us
515 at support@yassl.com or todd@yassl.com.
517 Using TomsFastMath by passing --enable-fastmath to ./configure now uses assembly
518 on some platforms. This is new so please report any problems as every compiler,
519 mode, OS combination hasn't been tested. On ia32 all of the registers need to
520 be available so be sure to pass these options to CFLAGS:
522 CFLAGS="-O3 -fomit-frame-pointer"
524 OS X will also need -mdynamic-no-pic added to CFLAGS
526 Also if you're building in shared mode for ia32 you'll need to pass options to
527 LDFLAGS as well on OS X:
529 LDFLAGS=-Wl,-read_only_relocs,warning
531 This gives warnings for some symbols but seems to work.
534 --To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
539 from the ./testsuite/ directory run ./testsuite
541 to make a debug build:
543 ./configure --enable-debug --disable-shared
550 Choose (Re)Build All from the project workspace
552 Run the testsuite program
558 *************************CyaSSL version 0.9.9 (7/25/2008)
560 This release of CyaSSL adds bug fixes, Pre-Shared Keys, over-rideable memory
561 handling, and optionally TomsFastMath. Thanks to Moisés Guimarães for the
562 work on TomsFastMath.
564 To optionally use TomsFastMath pass --enable-fastmath to ./configure
565 Or define USE_FAST_MATH in each project from CyaSSL for MSVC.
567 Please use the benchmark routine before and after to see the performance
568 difference, on some platforms the gains will be little but RSA encryption
569 always seems to be faster. On x86-64 machines with GCC the normal math library
570 may outperform the fast one when using CFLAGS=-m64 because TomsFastMath can't
571 yet use -m64 because of GCCs inability to do 128bit division.
573 **** UPDATE GCC 4.2.1 can now do 128bit division ***
575 See notes below (0.2.0) for complete build instructions.
578 ****************CyaSSL version 0.9.8 (5/7/2008)
580 This release of CyaSSL adds bug fixes, client side Diffie-Hellman, and better
583 See notes below (0.2.0) for complete build instructions.
586 ****************CyaSSL version 0.9.6 (1/31/2008)
588 This release of CyaSSL adds bug fixes, increased session management, and a fix
591 See notes below (0.2.0) for complete build instructions.
594 ****************CyaSSL version 0.9.0 (10/15/2007)
596 This release of CyaSSL adds bug fixes, MSVC 2005 support, GCC 4.2 support,
597 IPV6 support and test, and new test certificates.
599 See notes below (0.2.0) for complete build instructions.
602 ****************CyaSSL version 0.8.0 (1/10/2007)
604 This release of CyaSSL adds increased socket support, for non-blocking writes,
605 connects, and interrupted system calls.
607 See notes below (0.2.0) for complete build instructions.
610 ****************CyaSSL version 0.6.3 (10/30/2006)
612 This release of CyaSSL adds debug logging to stderr to aid in the debugging of
613 CyaSSL on systems that may not provide the best support.
615 If CyaSSL is built with debugging support then you need to call
616 CyaSSL_Debugging_ON() to turn logging on.
618 On Unix use ./configure --enable-debug
620 On Windows define DEBUG_CYASSL when building CyaSSL
623 To turn logging back off call CyaSSL_Debugging_OFF()
625 See notes below (0.2.0) for complete build instructions.
628 *****************CyaSSL version 0.6.2 (10/29/2006)
630 This release of CyaSSL adds TLS 1.1.
632 Note that CyaSSL has certificate verification on by default, unlike OpenSSL.
633 To emulate OpenSSL behavior, you must call SSL_CTX_set_verify() with
634 SSL_VERIFY_NONE. In order to have full security you should never do this,
635 provide CyaSSL with the proper certificates to eliminate impostors and call
636 CyaSSL_check_domain_name() to prevent man in the middle attacks.
638 See notes below (0.2.0) for build instructions.
640 *****************CyaSSL version 0.6.0 (10/25/2006)
642 This release of CyaSSL adds more SSL functions, better autoconf, nonblocking
643 I/O for accept, connect, and read. There is now an --enable-small configure
644 option that turns off TLS, AES, DES3, HMAC, and ERROR_STRINGS, see configure.in
645 for the defines. Note that TLS requires HMAC and AES requires TLS.
647 See notes below (0.2.0) for build instructions.
650 *****************CyaSSL version 0.5.5 (09/27/2006)
652 This mini release of CyaSSL adds better input processing through buffered input
653 and big message support. Added SSL_pending() and some sanity checks on user
656 See notes below (0.2.0) for build instructions.
659 *****************CyaSSL version 0.5.0 (03/27/2006)
661 This release of CyaSSL adds AES support and minor bug fixes.
663 See notes below (0.2.0) for build instructions.
666 *****************CyaSSL version 0.4.0 (03/15/2006)
668 This release of CyaSSL adds TLSv1 client/server support and libtool.
670 See notes below for build instructions.
673 *****************CyaSSL version 0.3.0 (02/26/2006)
675 This release of CyaSSL adds SSLv3 server support and session resumption.
677 See notes below for build instructions.
680 *****************CyaSSL version 0.2.0 (02/19/2006)
683 This is the first release of CyaSSL and its crypt brother, CTaoCrypt. CyaSSL
684 is written in ANSI C with the idea of a small code size, footprint, and memory
685 usage in mind. CTaoCrypt can be as small as 32K, and the current client
686 version of CyaSSL can be as small as 12K.
689 The first release of CTaoCrypt supports MD5, SHA-1, 3DES, ARC4, Big Integer
690 Support, RSA, ASN parsing, and basic x509 (en/de)coding.
692 The first release of CyaSSL supports normal client RSA mode SSLv3 connections
693 with support for SHA-1 and MD5 digests. Ciphers include 3DES and RC4.
696 --To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
701 from the ./testsuite/ directory run ./testsuite
703 to make a debug build:
705 ./configure --enable-debug --disable-shared
712 Choose (Re)Build All from the project workspace
714 Run the testsuite program
718 *** The next release of CyaSSL will support a server and more OpenSSL
719 compatibility functions.
722 Please send questions or comments to todd@yassl.com