CPU: Wrong CPU Load %.
[tomato.git] / release / src / router / cyassl / README
blobb2f3edae18c02c7e4c91f3cb8a5498f451c0c0ab
1 *** Note, Please read ***
3 CyaSSL takes a different approach to certificate verification than OpenSSL does.
4 The default policy for the client is to verify the server, this means that if
5 you don't load CAs to verify the server you'll get a connect error, unable to 
6 verify.  It you want to mimic OpenSSL behavior of having SSL_connect succeed
7 even if verifying the server fails and reducing security you can do this by
8 calling:
10 SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
12 before calling SSL_new();  Though it's not recommended.
14 *** end Note ***
16 CyaSSL Release 1.9.0 (3/2/2011)
18 Release 1.9.0 for CyaSSL adds bug fixes, improved TLSv1.2 through testing and
19 better hash/sig algo ids, --enable-webServer for the yaSSL embedded web server,
20 improper AES key setup detection, user cert verify callback improvements, and
21 more.
23 The CyaSSL manual offering is included in the doc/ directory.  For build
24 instructions and comments about the new features please check the manual.
26 Please send any comments or questions to support@yassl.com.
28 ****************** CyaSSL Release 1.8.0 (12/23/2010)
30 Release 1.8.0 for CyaSSL adds bug fixes, x509 v3 CA signed certificate
31 generation, a C standard library abstraction layer, lower memory use, increased
32 portability through the os_settings.h file, and the ability to use NTRU cipher
33 suites when used in conjunction with an NTRU license and library.
35 The initial CyaSSL manual offering is included in the doc/ directory.  For
36 build instructions and comments about the new features please check the manual.
38 Please send any comments or questions to support@yassl.com.
40 Happy Holidays.
43 ********************* CyaSSL Release 1.6.5 (9/9/2010)
45 Release 1.6.5 for CyaSSL adds bug fixes and x509 v3 self signed certificate
46 generation.
48 For general build instructions see doc/Building_CyaSSL.pdf.
50 To enable certificate generation support add this option to ./configure
51 ./configure --enable-certgen
53 An example is included in ctaocrypt/test/test.c and documentation is provided
54 in doc/CyaSSL_Extensions_Reference.pdf item 11.
56 ********************** CyaSSL Release 1.6.0 (8/27/2010)
58 Release 1.6.0 for CyaSSL adds bug fixes, RIPEMD-160, SHA-512, and RSA key
59 generation.
61 For general build instructions see doc/Building_CyaSSL.pdf.
63 To add RIPEMD-160 support add this option to ./configure
64 ./configure --enable-ripemd
66 To add SHA-512 support add this option to ./configure
67 ./configure --enable-sha512
69 To add RSA key generation support add this option to ./configure
70 ./configure --enable-keygen
72 Please see ctaocrypt/test/test.c for examples and usage.
74 For Windows, RIPEMD-160 and SHA-512 are enabled by default but key generation is
75 off by default.  To turn key generation on add the define CYASSL_KEY_GEN to
76 CyaSSL.
79 *************   CyaSSL Release 1.5.6 (7/28/2010)
81 Release 1.5.6 for CyaSSL adds bug fixes, compatibility for our JSSE provider,
82 and a fix for GCC builds on some systems.
84 For general build instructions see doc/Building_CyaSSL.pdf.
86 To add AES-NI support add this option to ./configure
87 ./configure --enable-aesni
89 You'll need GCC 4.4.3 or later to make use of the assembly.
91 **************  CyaSSL Release 1.5.4 (7/7/2010)
93 Release 1.5.4 for CyaSSL adds bug fixes, support for AES-NI, SHA1 speed 
94 improvements from loop unrolling, and support for the Mongoose Web Server.
96 For general build instructions see doc/Building_CyaSSL.pdf.
98 To add AES-NI support add this option to ./configure
99 ./configure --enable-aesni
101 You'll need GCC 4.4.3 or later to make use of the assembly.
103 ***************  CyaSSL Release 1.5.0 (5/11/2010)
105 Release 1.5.0 for CyaSSL adds bug fixes, GoAhead WebServer support, sniffer
106 support, and initial swig interface support.
108 For general build instructions see doc/Building_CyaSSL.pdf.
110 To add support for GoAhead WebServer either --enable-opensslExtra or if you
111 don't want all the features of opensslExtra you can just define GOAHEAD_WS
112 instead.  GOAHEAD_WS can be added to ./configure with CFLAGS=-DGOAHEAD_WS or
113 you can define it yourself.
115 To look at the sniffer support please see the sniffertest app in
116 sslSniffer/sslSnifferTest.  Build with --enable-sniffer on *nix or use the
117 vcproj files on windows.  You'll need to have pcap installed on *nix and
118 WinPcap on windows.
120 A swig interface file is now located in the swig directory for using Python,
121 Java, Perl, and others with CyaSSL.  This is initial support and experimental,
122 please send questions or comments to support@yassl.com.
124 When doing load testing with CyaSSL, on the echoserver example say, the client
125 machine may run out of tcp ephemeral ports, they will end up in the TIME_WAIT
126 queue, and can't be reused by default.  There are generally two ways to fix
127 this.  1) Reduce the length sockets remain on the TIME_WAIT queue or 2) Allow
128 items on the TIME_WAIT queue to be reused.
131 To reduce the TIME_WAIT length in OS X to 3 seconds (3000 milliseconds)
133 sudo sysctl -w net.inet.tcp.msl=3000
135 In Linux
137 sudo sysctl -w net.ipv4.tcp_tw_reuse=1
139 allows reuse of sockets in TIME_WAIT
141 sudo sysctl -w net.ipv4.tcp_tw_recycle=1
143 works but seems to remove sockets from  TIME_WAIT entirely?
145 sudo sysctl -w net.ipv4.tcp_fin_timeout=1
147 doen't control TIME_WAIT, it controls FIN_WAIT(2) contrary to some posts
150 ******************** CyaSSL Release 1.4.0 (2/18/2010)
152 Release 1.3.0 for CyaSSL adds bug fixes, better multi TLS/SSL version support
153 through SSLv23_server_method(), and improved documentation in the doc/ folder.
155 For general build instructions doc/Building_CyaSSL.pdf.
157 ******************** CyaSSL Release 1.3.0 (1/21/2010)
159 Release 1.3.0 for CyaSSL adds bug fixes, a potential security problem fix,
160 better porting support, removal of assert()s, and a complete THREADX port.
162 For general build instructions see rc1 below.
164 ******************** CyaSSL Release 1.2.0 (11/2/2009)
166 Release 1.2.0 for CyaSSL adds bug fixes and session negotiation if first use is
167 read or write.
169 For general build instructions see rc1 below.
171 ******************** CyaSSL Release 1.1.0 (9/2/2009)
173 Release 1.1.0 for CyaSSL adds bug fixes, a check against malicious session
174 cache use, support for lighttpd, and TLS 1.2.
176 To get TLS 1.2 support please use the client and server functions:
178 SSL_METHOD *TLSv1_2_server_method(void);
179 SSL_METHOD *TLSv1_2_client_method(void);
181 CyaSSL was tested against lighttpd 1.4.23.  To build CyaSSL for use with 
182 lighttpd use the following commands from the CyaSSL install dir <CyaSSLDir>:
184 ./configure --disable-shared --enable-opensslExtra --enable-fastmath --without-zlib
186 make
187 make openssl-links
189 Then to build lighttpd with CyaSSL use the following commands from the
190 lighttpd install dir:
192 ./configure --with-openssl --with-openssl-includes=<CyaSSLDir>/include --with-openssl-libs=<CyaSSLDir>/lib LDFLAGS=-lm
194 make
196 On some systems you may get a linker error about a duplicate symbol for
197 MD5_Init or other MD5 calls.  This seems to be caused by the lighttpd src file
198 md5.c, which defines MD5_Init(), and is included in liblightcomp_la-md5.o.
199 When liblightcomp is linked with the SSL_LIBs the linker may complain about
200 the duplicate symbol.  This can be fixed by editing the lighttpd src file md5.c
201 and adding this line to the beginning of the file:
203 #if 0
205 and this line to the end of the file
207 #endif
209 Then from the lighttpd src dir do a:
211 make clean
212 make
215 If you get link errors about undefined symbols more than likely the actual
216 OpenSSL libraries are found by the linker before the CyaSSL openssl-links that
217 point to the CyaSSL library, causing the linker confusion.  This can be fixed
218 by editing the Makefile in the lighttpd src directory and changing the line:
220 SSL_LIB = -lssl -lcrypto
224 SSL_LIB = -lcyassl
226 Then from the lighttpd src dir do a:
228 make clean
229 make
231 This should remove any confusion the linker may be having with missing symbols.
233 For any questions or concerns please contact support@yassl.com .
235 For general build instructions see rc1 below.
237 ******************CyaSSL Release 1.0.6 (8/03/2009)
239 Release 1.0.6 for CyaSSL adds bug fixes, an improved session cache, and faster
240 math with a huge code option.
242 The session cache now defaults to a client mode, also good for embedded servers.
243 For servers not under heavy load (less than 200 new sessions per minute), define
244 BIG_SESSION_CACHE.  If the server will be under heavy load, define
245 HUGE_SESSION_CACHE.
247 There is now a fasthugemath option for configure.  This enables fastmath plus
248 even faster math by greatly increasing the code size of the math library. Use
249 the benchmark utility to compare public key operations.
252 For general build instructions see rc1 below.
254 ******************CyaSSL Release 1.0.3 (5/10/2009)
256 Release 1.0.3 for CyaSSL adds bug fixes and add increased support for OpenSSL
257 compatibility when building other applications.
259 Release 1.0.3 includes an alpha release of DTLS for both client and servers.
260 This is only for testing purposes at this time.  Rebroadcast and reordering
261 aren't fully implemented at this time but will be for the next release.
263 For general build instructions see rc1 below.
265 ******************CyaSSL Release 1.0.2 (4/3/2009)
267 Release 1.0.2 for CyaSSL adds bug fixes for a couple I/O issues.  Some systems
268 will send a SIGPIPE on socket recv() at any time and this should be handled by
269 the application by turning off SIGPIPE through setsockopt() or returning from
270 the handler.
272 Release 1.0.2 includes an alpha release of DTLS for both client and servers.
273 This is only for testing purposes at this time.  Rebroadcast and reordering
274 aren't fully implemented at this time but will be for the next release.
276 For general build instructions see rc1 below.
278 *****************CyaSSL Release Candidiate 3 rc3-1.0.0 (2/25/2009)
281 Release Candidate 3 for CyaSSL 1.0.0 adds bug fixes and adds a project file for
282 iPhone development with Xcode.  cyassl-iphone.xcodeproj is located in the root
283 directory.  This release also includes a fix for supporting other
284 implementations that bundle multiple messages at the record layer, this was
285 lost when cyassl i/o was re-implemented but is now fixed.
287 For general build instructions see rc1 below.
289 *****************CyaSSL Release Candidiate 2 rc2-1.0.0 (1/21/2009)
292 Release Candidate 2 for CyaSSL 1.0.0 adds bug fixes and adds two new stream
293 ciphers along with their respective cipher suites.  CyaSSL adds support for
294 HC-128 and RABBIT stream ciphers.  The new suites are:
296 TLS_RSA_WITH_HC_128_CBC_SHA
297 TLS_RSA_WITH_RABBIT_CBC_SHA
299 And the corresponding cipher names are
301 HC128-SHA
302 RABBIT-SHA
304 CyaSSL also adds support for building with devkitPro for PPC by changing the
305 library proper to use libogc.  The examples haven't been changed yet but if
306 there's interest they can be.  Here's an example ./configure to build CyaSSL
307 for devkitPro:
309 ./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"
311 For linking purposes you'll need
313 LDFLAGS="-g -mrvl -mcpu=750 -meabi -mhard-float -Wl,-Map,$(notdir $@).map"
315 For general build instructions see rc1 below.
318 ********************CyaSSL Release Candidiate 1 rc1-1.0.0 (12/17/2008)
321 Release Candidate 1 for CyaSSL 1.0.0 contains major internal changes.  Several
322 areas have optimization improvements, less dynamic memory use, and the I/O
323 strategy has been refactored to allow alternate I/O handling or Library use.
324 Many thanks to Thierry Fournier for providing these ideas and most of the work.
326 Because of these changes, this release is only a candidate since some problems
327 are probably inevitable on some platform with some I/O use.  Please report any
328 problems and we'll try to resolve them as soon as possible.  You can contact us
329 at support@yassl.com or todd@yassl.com.
331 Using TomsFastMath by passing --enable-fastmath to ./configure now uses assembly
332 on some platforms.  This is new so please report any problems as every compiler,
333 mode, OS combination hasn't been tested.  On ia32 all of the registers need to
334 be available so be sure to pass these options to CFLAGS:
336 CFLAGS="-O3 -fomit-frame-pointer"
338 OS X will also need -mdynamic-no-pic added to CFLAGS
340 Also if you're building in shared mode for ia32 you'll need to pass options to
341 LDFLAGS as well on OS X:
343 LDFLAGS=-Wl,-read_only_relocs,warning
345 This gives warnings for some symbols but seems to work.
348 --To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
350     ./configure
351     make
353     from the ./testsuite/ directory run ./testsuite 
355 to make a debug build:
357     ./configure --enable-debug --disable-shared
358     make
362 --To build on Win32
364 Choose (Re)Build All from the project workspace
366 Run the testsuite program
372 *************************CyaSSL version 0.9.9 (7/25/2008) 
374 This release of CyaSSL adds bug fixes, Pre-Shared Keys, over-rideable memory
375 handling, and optionally TomsFastMath.  Thanks to Moisés Guimarães for the
376 work on TomsFastMath.
378 To optionally use TomsFastMath pass --enable-fastmath to ./configure
379 Or define USE_FAST_MATH in each project from CyaSSL for MSVC.
381 Please use the benchmark routine before and after to see the performance
382 difference, on some platforms the gains will be little but RSA encryption
383 always seems to be faster.  On x86-64 machines with GCC the normal math library
384 may outperform the fast one when using CFLAGS=-m64 because TomsFastMath can't
385 yet use -m64 because of GCCs inability to do 128bit division.
387      **** UPDATE GCC 4.2.1 can now do 128bit division ***
389 See notes below (0.2.0) for complete build instructions.
392 ****************CyaSSL version 0.9.8 (5/7/2008) 
394 This release of CyaSSL adds bug fixes, client side Diffie-Hellman, and better
395 socket handling.
397 See notes below (0.2.0) for complete build instructions.
400 ****************CyaSSL version 0.9.6 (1/31/2008) 
402 This release of CyaSSL adds bug fixes, increased session management, and a fix
403 for gnutls.
405 See notes below (0.2.0) for complete build instructions.
408 ****************CyaSSL version 0.9.0 (10/15/2007) 
410 This release of CyaSSL adds bug fixes, MSVC 2005 support, GCC 4.2 support, 
411 IPV6 support and test, and new test certificates.
413 See notes below (0.2.0) for complete build instructions.
416 ****************CyaSSL version 0.8.0 (1/10/2007) 
418 This release of CyaSSL adds increased socket support, for non-blocking writes,
419 connects, and interrupted system calls.
421 See notes below (0.2.0) for complete build instructions.
424 ****************CyaSSL version 0.6.3 (10/30/2006) 
426 This release of CyaSSL adds debug logging to stderr to aid in the debugging of
427 CyaSSL on systems that may not provide the best support.
429 If CyaSSL is built with debugging support then you need to call
430 CyaSSL_Debugging_ON() to turn logging on.
432 On Unix use ./configure --enable-debug
434 On Windows define DEBUG_CYASSL when building CyaSSL
437 To turn logging back off call CyaSSL_Debugging_OFF()
439 See notes below (0.2.0) for complete build instructions.
442 *****************CyaSSL version 0.6.2 (10/29/2006) 
444 This release of CyaSSL adds TLS 1.1.
446 Note that CyaSSL has certificate verification on by default, unlike OpenSSL.
447 To emulate OpenSSL behavior, you must call SSL_CTX_set_verify() with
448 SSL_VERIFY_NONE.  In order to have full security you should never do this, 
449 provide CyaSSL with the proper certificates to eliminate impostors and call
450 CyaSSL_check_domain_name() to prevent man in the middle attacks.
452 See notes below (0.2.0) for build instructions.
454 *****************CyaSSL version 0.6.0 (10/25/2006) 
456 This release of CyaSSL adds more SSL functions, better autoconf, nonblocking
457 I/O for accept, connect, and read.  There is now an --enable-small configure
458 option that turns off TLS, AES, DES3, HMAC, and ERROR_STRINGS, see configure.in
459 for the defines.  Note that TLS requires HMAC and AES requires TLS.
461 See notes below (0.2.0) for build instructions.
464 *****************CyaSSL version 0.5.5 (09/27/2006) 
466 This mini release of CyaSSL adds better input processing through buffered input
467 and big message support.  Added SSL_pending() and some sanity checks on user
468 settings.
470 See notes below (0.2.0) for build instructions.
473 *****************CyaSSL version 0.5.0 (03/27/2006) 
475 This release of CyaSSL adds AES support and minor bug fixes. 
477 See notes below (0.2.0) for build instructions.
480 *****************CyaSSL version 0.4.0 (03/15/2006)
482 This release of CyaSSL adds TLSv1 client/server support and libtool. 
484 See notes below for build instructions.
487 *****************CyaSSL version 0.3.0 (02/26/2006)
489 This release of CyaSSL adds SSLv3 server support and session resumption. 
491 See notes below for build instructions.
494 *****************CyaSSL version 0.2.0 (02/19/2006)
497 This is the first release of CyaSSL and its crypt brother, CTaoCrypt.  CyaSSL
498 is written in ANSI C with the idea of a small code size, footprint, and memory
499 usage in mind.  CTaoCrypt can be as small as 32K, and the current client
500 version of CyaSSL can be as small as 12K.
503 The first release of CTaoCrypt supports MD5, SHA-1, 3DES, ARC4, Big Integer
504 Support, RSA, ASN parsing, and basic x509 (en/de)coding.
506 The first release of CyaSSL supports normal client RSA mode SSLv3 connections
507 with support for SHA-1 and MD5 digests.  Ciphers include 3DES and RC4.
510 --To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
512     ./configure
513     make
515     from the ./testsuite/ directory run ./testsuite 
517 to make a debug build:
519     ./configure --enable-debug --disable-shared
520     make
524 --To build on Win32
526 Choose (Re)Build All from the project workspace
528 Run the testsuite program
532 *** The next release of CyaSSL will support a server and more OpenSSL
533 compatibility functions.
536 Please send questions or comments to todd@yassl.com