]> git.sur5r.net Git - freertos/blob - FreeRTOS-Plus/Source/WolfSSL/README.md
Very minor formatting changes, and remove legacy link to V8 upgrade information.
[freertos] / FreeRTOS-Plus / Source / WolfSSL / README.md
1 # Notes - Please read
2
3 ## Note 1
4 ```
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:
11
12 ./testsuite/testsuite
13
14 or 
15
16 make check    (when using autoconf)
17
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.
22 ```
23
24 ## Note 2
25 ```
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:
32
33 wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
34
35 before calling wolfSSL_new();  Though it's not recommended.
36 ```
37
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
40
41 #wolfSSL (Formerly CyaSSL) Release 3.4.8 (04/06/2015)
42
43 ##Release 3.4.8 of wolfSSL has bug fixes and new features including:
44
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.
49
50 See INSTALL file for build instructions.
51 More info can be found on-line at //http://wolfssl.com/yaSSL/Docs.html
52
53
54 #wolfSSL (Formerly CyaSSL) Release 3.4.6 (03/30/2015)
55
56 ##Release 3.4.6 of wolfSSL has bug fixes and new features including:
57
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
67   foreseeable future
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
71   must update
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
84
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)
87
88 See INSTALL file for build instructions.
89 More info can be found on-line at //http://wolfssl.com/yaSSL/Docs.html
90
91
92 #wolfSSL (Formerly CyaSSL) Release 3.4.0 (02/23/2015)
93
94 ## Release 3.4.0 wolfSSL has bug fixes and new features including:
95
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
103 - TIRTOS updates
104 - PowerPC updates
105 - Xcode project update
106 - Bidirectional shutdown examples in client/server with -w (wait for full
107   shutdown) option
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
110   keys
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
116
117
118 # CyaSSL Release 3.3.0 (12/05/2014)
119
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
132 - PicoTCP Support
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
136 - TI-RTOS updates
137 - Fix for ColdFire optimized fp_digit read only in explicit 32bit case
138 - ADH Cipher Suite ADH-AES128-SHA for EAP-FAST
139
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.
143
144
145 # CyaSSL Release 3.2.0 (09/10/2014)
146
147 #### Release 3.2.0 CyaSSL has bug fixes and new features including:
148
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
164
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.
168
169
170 # CyaSSL Release 3.1.0 (07/14/2014)
171
172 #### Release 3.1.0 CyaSSL has bug fixes and new features including:
173
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
186
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.
190
191
192 # CyaSSL Release 3.0.2 (05/30/2014)
193
194 #### Release 3.0.2 CyaSSL has bug fixes and new features including:
195
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.
212
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.
216
217
218 # CyaSSL Release 3.0.0 (04/29/2014)
219
220 #### Release 3.0.0 CyaSSL has bug fixes and new features including:
221
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.
228
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.
232
233
234 # CyaSSL Release 2.9.4 (04/09/2014)
235
236 #### Release 2.9.4 CyaSSL has bug fixes and new features including:
237
238 - Security fixes that address items reported by Ivan Fratric of the Google
239   Security Team
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
250
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.
254
255
256 # CyaSSL Release 2.9.0 (02/07/2014)
257
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
262   - ECC
263   - Secure Renegotiation (null) 
264   - Truncated HMAC
265 - SCEP support
266   - PKCS #7 Enveloped data and signed data
267   - PKCS #10 Certificate Signing Request generation
268 - DTLS sliding window
269 - OCSP Improvements
270   - API change to integrate into Certificate Manager
271   - IPv4/IPv6 agnostic
272   - example client/server support for OCSP
273   - OCSP nonces are optional
274 - GMAC hashing
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
283
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
287
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
290 User Guide":
291 http://cache.freescale.com/files/32bit/doc/user_guide/CAUAPIUG.pdf
292
293
294 # CyaSSL Release 2.8.0 (8/30/2013)
295
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
307
308
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.
312
313
314 # CyaSSL Release 2.7.0 (6/17/2013)
315
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
333
334 When compiling with Mingw, libtool may give the following warning due to
335 path conversion errors:
336  
337 ```
338 libtool: link: Could not determine host file name corresponding to **
339 libtool: link: Continuing, but uninstalled executables may not work.
340 ```
341
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".
344
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.
348
349
350 # CyaSSL Release 2.6.0 (04/15/2013)
351
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
376       5 solutions to this:
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
383     * rsa
384     * dh
385     * dsa
386     * md5
387     * sha 
388     * arc4
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
394   CyaSSL level.
395 - autoconf no longer needs serial-tests which lowers version requirements of
396   automake to 1.11 and autoconf to 2.63
397
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.
401
402
403
404 # CyaSSL Release 2.5.0 (02/04/2013)
405
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
419
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.
424
425 To add Cavium NITROX support do:
426
427 ./configure --with-cavium=/home/user/cavium/software
428
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.
439
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
445
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.
449
450
451
452 # CyaSSL Release 2.4.6 (12/20/2012)
453
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
458 - CyaSSL_peek()
459 - CyaSSL_send() and CyaSSL_recv() for I/O flag setting
460 - CodeWarrior Support
461 - MQX Support
462 - Freescale Kinetis support including Hardware RNG
463 - autoconf builds use jobserver
464 - cyassl-config
465 - Sniffer memory reductions
466
467 Thanks to Brian Aker for the improved autoconf system, make rpm, cyassl-config,
468 warning system, and general good ideas for improving CyaSSL!
469
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
473
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.
477
478
479 # CyaSSL Release 2.4.0 (10/10/2012)
480
481 #### Release 2.4.0 CyaSSL has bug fixes and a few new features including:
482 - DTLS reliability
483 - Reduced memory usage after handshake
484 - Updated build process
485
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.
489
490
491
492 # CyaSSL Release 2.3.0 (8/10/2012)
493
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
502 - CRL dir monitoring
503 - DTLS Cookie support, reliability coming soon
504
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.
508
509
510
511 # CyaSSL Release 2.2.0 (5/18/2012)
512
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
517 - SHA-384 support
518 - ECC client certificate support
519 - Add medium session cache size (1055 sessions) 
520 - Updated unit tests
521 - Protection against mutex reinitialization
522
523
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.
527
528
529
530 # CyaSSL Release 2.0.8 (2/24/2012)
531
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
539
540
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.
544
545
546
547 # CyaSSL Release 2.0.6 (1/27/2012)
548
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
554 - ECC benchmarking
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
559
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.
563
564
565
566 # CyaSSL Release 2.0.2 (12/05/2011)
567
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
570   library
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
573   support
574 - Direct AES block access and AES-CTR (counter) mode
575 - Microchip pic32 support
576
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.
580
581
582
583 # CyaSSL Release 2.0.0rc3 (9/28/2011)
584
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
593         (see note 1)
594
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.
598
599 Special Thanks to Brian Aker for his autoconf, install, and header patches.
600
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.
604
605 # CyaSSL Release 2.0.0rc2 (6/6/2011)
606
607 #### Release 2.0.0rc2 for CyaSSL has bug fixes and a few new features including:
608 - bug fixes (Alerts, DTLS with DHE)
609 - FreeRTOS support
610 - lwIP support
611 - Wshadow warnings removed
612 - asn public header
613 - CTaoCrypt public headers now all have ctc_ prefix (the manual is still being
614         updated to reflect this change)
615 - and more.
616
617 This is the 2nd and perhaps final release candidate for version 2.
618 Please send any comments or questions to support@yassl.com.
619
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.
623
624 # CyaSSL Release 2.0.0rc1 (5/2/2011)
625
626 #### Release 2.0.0rc1 for CyaSSL has many new features including:
627 - bug fixes
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
639 - EDH on server side
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
647 - and more.
648
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.
652
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.
656
657 # CyaSSL Release 1.9.0 (3/2/2011)
658
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
662 more.
663
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.
666
667 Please send any comments or questions to support@yassl.com.
668
669 # CyaSSL Release 1.8.0 (12/23/2010)
670
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.
675
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.
678
679 Please send any comments or questions to support@yassl.com.
680
681 Happy Holidays.
682  
683
684 # CyaSSL Release 1.6.5 (9/9/2010)
685
686 Release 1.6.5 for CyaSSL adds bug fixes and x509 v3 self signed certificate
687 generation.
688  
689 For general build instructions see doc/Building_CyaSSL.pdf.
690
691 To enable certificate generation support add this option to ./configure
692 ./configure --enable-certgen
693
694 An example is included in ctaocrypt/test/test.c and documentation is provided
695 in doc/CyaSSL_Extensions_Reference.pdf item 11.
696
697 # CyaSSL Release 1.6.0 (8/27/2010)
698
699 Release 1.6.0 for CyaSSL adds bug fixes, RIPEMD-160, SHA-512, and RSA key
700 generation.
701  
702 For general build instructions see doc/Building_CyaSSL.pdf.
703
704 To add RIPEMD-160 support add this option to ./configure
705 ./configure --enable-ripemd
706
707 To add SHA-512 support add this option to ./configure
708 ./configure --enable-sha512
709
710 To add RSA key generation support add this option to ./configure
711 ./configure --enable-keygen
712
713 Please see ctaocrypt/test/test.c for examples and usage.
714
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
717 CyaSSL.
718
719
720 # CyaSSL Release 1.5.6 (7/28/2010)
721
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.
724  
725 For general build instructions see doc/Building_CyaSSL.pdf.
726
727 To add AES-NI support add this option to ./configure
728 ./configure --enable-aesni
729
730 You'll need GCC 4.4.3 or later to make use of the assembly.
731
732 # CyaSSL Release 1.5.4 (7/7/2010)
733
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.
736  
737 For general build instructions see doc/Building_CyaSSL.pdf.
738
739 To add AES-NI support add this option to ./configure
740 ./configure --enable-aesni
741
742 You'll need GCC 4.4.3 or later to make use of the assembly.
743
744 # CyaSSL Release 1.5.0 (5/11/2010)
745
746 Release 1.5.0 for CyaSSL adds bug fixes, GoAhead WebServer support, sniffer
747 support, and initial swig interface support.
748
749 For general build instructions see doc/Building_CyaSSL.pdf.
750
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.
755
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
759 WinPcap on windows.
760
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.
764
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
768 this. 
769
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.
772
773
774 To reduce the TIME_WAIT length in OS X to 3 seconds (3000 milliseconds)
775
776 `sudo sysctl -w net.inet.tcp.msl=3000`
777
778 In Linux
779
780 `sudo sysctl -w net.ipv4.tcp_tw_reuse=1`
781
782 allows reuse of sockets in TIME_WAIT
783
784 `sudo sysctl -w net.ipv4.tcp_tw_recycle=1`
785
786 works but seems to remove sockets from  TIME_WAIT entirely?
787
788 `sudo sysctl -w net.ipv4.tcp_fin_timeout=1`
789
790 doen't control TIME_WAIT, it controls FIN_WAIT(2) contrary to some posts
791
792
793 # CyaSSL Release 1.4.0 (2/18/2010)
794
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.
797
798 For general build instructions doc/Building_CyaSSL.pdf.
799
800 # CyaSSL Release 1.3.0 (1/21/2010)
801
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.
804
805 For general build instructions see rc1 below.
806
807 # CyaSSL Release 1.2.0 (11/2/2009)
808
809 Release 1.2.0 for CyaSSL adds bug fixes and session negotiation if first use is
810 read or write.
811
812 For general build instructions see rc1 below.
813
814 # CyaSSL Release 1.1.0 (9/2/2009)
815
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.
818
819 To get TLS 1.2 support please use the client and server functions:
820
821 ```c
822 SSL_METHOD *TLSv1_2_server_method(void);
823 SSL_METHOD *TLSv1_2_client_method(void);
824 ```
825
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>:
828
829 ```
830 ./configure --disable-shared --enable-opensslExtra --enable-fastmath --without-zlib
831
832 make
833 make openssl-links
834 ```
835
836 Then to build lighttpd with CyaSSL use the following commands from the
837 lighttpd install dir:
838
839 ```
840 ./configure --with-openssl --with-openssl-includes=<CyaSSLDir>/include --with-openssl-libs=<CyaSSLDir>/lib LDFLAGS=-lm
841
842 make
843 ```
844
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:
851
852 \#if 0
853
854 and this line to the end of the file
855
856 \#endif
857
858 Then from the lighttpd src dir do a:
859
860 ```
861 make clean
862 make
863 ```
864
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:
869
870 `SSL_LIB = -lssl -lcrypto`
871
872 to
873
874 `SSL_LIB = -lcyassl`
875
876 Then from the lighttpd src dir do a:
877
878 ```
879 make clean
880 make
881 ```
882
883 This should remove any confusion the linker may be having with missing symbols.
884
885 For any questions or concerns please contact support@yassl.com .
886
887 For general build instructions see rc1 below.
888
889 # CyaSSL Release 1.0.6 (8/03/2009)
890
891 Release 1.0.6 for CyaSSL adds bug fixes, an improved session cache, and faster
892 math with a huge code option.
893
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
897 HUGE_SESSION_CACHE.
898
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.
902
903
904 For general build instructions see rc1 below.
905
906 # CyaSSL Release 1.0.3 (5/10/2009)
907
908 Release 1.0.3 for CyaSSL adds bug fixes and add increased support for OpenSSL
909 compatibility when building other applications.
910
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.
914
915 For general build instructions see rc1 below.
916
917 # CyaSSL Release 1.0.2 (4/3/2009)
918
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
922 the handler.
923
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.
927
928 For general build instructions see rc1 below.
929
930 ## CyaSSL Release Candidiate 3 rc3-1.0.0 (2/25/2009)
931
932
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.
938
939 For general build instructions see rc1 below.
940
941 ## CyaSSL Release Candidiate 2 rc2-1.0.0 (1/21/2009)
942
943
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:
947
948 ```
949 TLS_RSA_WITH_HC_128_SHA
950 TLS_RSA_WITH_RABBIT_SHA
951 ```
952
953 And the corresponding cipher names are
954
955 ```
956 HC128-SHA
957 RABBIT-SHA
958 ```
959
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
963 for devkitPro:
964
965 ```
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"
967 ```
968
969 For linking purposes you'll need
970
971 `LDFLAGS="-g -mrvl -mcpu=750 -meabi -mhard-float -Wl,-Map,$(notdir $@).map"`
972
973 For general build instructions see rc1 below.
974
975
976 ## CyaSSL Release Candidiate 1 rc1-1.0.0 (12/17/2008)
977
978
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.
983
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.
988
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:
993
994 `CFLAGS="-O3 -fomit-frame-pointer"`
995
996 OS X will also need -mdynamic-no-pic added to CFLAGS
997
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:
1000
1001 `LDFLAGS=-Wl,-read_only_relocs,warning`
1002
1003 This gives warnings for some symbols but seems to work.
1004
1005
1006 #### To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
1007
1008     ./configure
1009     make
1010
1011     from the ./testsuite/ directory run ./testsuite 
1012
1013 #### To make a debug build:
1014
1015     ./configure --enable-debug --disable-shared
1016     make
1017
1018
1019
1020 #### To build on Win32
1021
1022 Choose (Re)Build All from the project workspace
1023
1024 Run the testsuite program
1025
1026
1027
1028
1029
1030 # CyaSSL version 0.9.9 (7/25/2008) 
1031
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.
1035
1036 To optionally use TomsFastMath pass --enable-fastmath to ./configure
1037 Or define USE_FAST_MATH in each project from CyaSSL for MSVC.
1038
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.
1044
1045      *** UPDATE GCC 4.2.1 can now do 128bit division ***
1046
1047 See notes below (0.2.0) for complete build instructions.
1048
1049
1050 # CyaSSL version 0.9.8 (5/7/2008) 
1051
1052 This release of CyaSSL adds bug fixes, client side Diffie-Hellman, and better
1053 socket handling.
1054
1055 See notes below (0.2.0) for complete build instructions.
1056
1057
1058 # CyaSSL version 0.9.6 (1/31/2008) 
1059
1060 This release of CyaSSL adds bug fixes, increased session management, and a fix
1061 for gnutls.
1062
1063 See notes below (0.2.0) for complete build instructions.
1064
1065
1066 # CyaSSL version 0.9.0 (10/15/2007) 
1067
1068 This release of CyaSSL adds bug fixes, MSVC 2005 support, GCC 4.2 support, 
1069 IPV6 support and test, and new test certificates.
1070
1071 See notes below (0.2.0) for complete build instructions.
1072
1073
1074 # CyaSSL version 0.8.0 (1/10/2007) 
1075
1076 This release of CyaSSL adds increased socket support, for non-blocking writes,
1077 connects, and interrupted system calls.
1078
1079 See notes below (0.2.0) for complete build instructions.
1080
1081
1082 # CyaSSL version 0.6.3 (10/30/2006) 
1083
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.
1086
1087 If CyaSSL is built with debugging support then you need to call
1088 CyaSSL_Debugging_ON() to turn logging on.
1089
1090 On Unix use ./configure --enable-debug
1091
1092 On Windows define DEBUG_CYASSL when building CyaSSL
1093
1094
1095 To turn logging back off call CyaSSL_Debugging_OFF()
1096
1097 See notes below (0.2.0) for complete build instructions.
1098
1099
1100 # CyaSSL version 0.6.2 (10/29/2006) 
1101
1102 This release of CyaSSL adds TLS 1.1.
1103
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.
1109
1110 See notes below (0.2.0) for build instructions.
1111
1112 # CyaSSL version 0.6.0 (10/25/2006) 
1113
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.
1118
1119 See notes below (0.2.0) for build instructions.
1120
1121
1122 # CyaSSL version 0.5.5 (09/27/2006) 
1123
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
1126 settings.
1127
1128 See notes below (0.2.0) for build instructions.
1129
1130
1131 # CyaSSL version 0.5.0 (03/27/2006) 
1132
1133 This release of CyaSSL adds AES support and minor bug fixes. 
1134
1135 See notes below (0.2.0) for build instructions.
1136
1137
1138 # CyaSSL version 0.4.0 (03/15/2006)
1139
1140 This release of CyaSSL adds TLSv1 client/server support and libtool. 
1141
1142 See notes below for build instructions.
1143
1144
1145 # CyaSSL version 0.3.0 (02/26/2006)
1146
1147 This release of CyaSSL adds SSLv3 server support and session resumption. 
1148
1149 See notes below for build instructions.
1150
1151
1152 # CyaSSL version 0.2.0 (02/19/2006)
1153
1154
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.
1159
1160
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.
1163
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.
1166
1167
1168 #### To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
1169
1170     ./configure
1171     make
1172
1173     from the ./testsuite/ directory run ./testsuite 
1174
1175 #### to make a debug build:
1176
1177     ./configure --enable-debug --disable-shared
1178     make
1179
1180
1181
1182 #### To build on Win32
1183
1184 Choose (Re)Build All from the project workspace
1185
1186 Run the testsuite program
1187
1188
1189
1190 *** The next release of CyaSSL will support a server and more OpenSSL
1191 compatibility functions.
1192
1193
1194 Please send questions or comments to todd@yassl.com