README 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104
  1. *** Notes, Please read ***
  2. Note 1)
  3. CyaSSL now needs all examples and tests to be run from the CyaSSL home
  4. directory. This is because it finds certs and keys from ./certs/. Trying to
  5. maintain the ability to run each program from its own directory, the testsuite
  6. directory, the main directory (for make check/test), and for the various
  7. different project layouts (with or without config) was becoming harder and
  8. harder. Now to run testsuite just do:
  9. ./testsuite/testsuite
  10. or
  11. make check (when using autoconf)
  12. On *nix or Windows the examples and testsuite will check to see if the current
  13. directory is the source directory and if so, attempt to change to the CyaSSL
  14. home directory. This should work in most setup cases, if not, just follow the
  15. beginning of the note and specify the full path.
  16. Note 2)
  17. CyaSSL takes a different approach to certificate verification than OpenSSL does.
  18. The default policy for the client is to verify the server, this means that if
  19. you don't load CAs to verify the server you'll get a connect error, no signer
  20. error to confirm failure (-188). If you want to mimic OpenSSL behavior of
  21. having SSL_connect succeed even if verifying the server fails and reducing
  22. security you can do this by calling:
  23. SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
  24. before calling SSL_new(); Though it's not recommended.
  25. *** end Notes ***
  26. CyaSSL Release 3.3.2 (01/07/2015)
  27. Release 3.3.2 CyaSSL has bug fixes and new features including:
  28. - Improvements in the build configuration under AIX.
  29. - Various compile warnings.
  30. - Changed a memcpy to memmove in the sniffer.
  31. ***********CyaSSL Release 3.3.0 (12/05/2014)
  32. - Countermeasuers for Handshake message duplicates, CHANGE CIPHER without
  33. FINISHED, and fast forward attempts. Thanks to Karthikeyan Bhargavan from
  34. the Prosecco team at INRIA Paris-Rocquencourt for the report.
  35. - FIPS version submitted
  36. - Removes SSLv2 Client Hello processing, can be enabled with OLD_HELLO_ALLOWED
  37. - User can set mimimum downgrade version with CyaSSL_SetMinVersion()
  38. - Small stack improvements at TLS/SSL layer
  39. - TLS Master Secret generation and Key Expansion are now exposed
  40. - Adds client side Secure Renegotiation, * not recommended *
  41. - Client side session ticket support, not fully tested with Secure Renegotiation
  42. - Allows up to 4096bit DHE at TLS Key Exchange layer
  43. - Handles non standard SessionID sizes in Hello Messages
  44. - PicoTCP Support
  45. - Sniffer now supports SNI Virtual Hosts
  46. - Sniffer now handles non HTTPS protocols using STARTTLS
  47. - Sniffer can now parse records with multiple messages
  48. - TI-RTOS updates
  49. - Fix for ColdFire optimized fp_digit read only in explicit 32bit case
  50. - ADH Cipher Suite ADH-AES128-SHA for EAP-FAST
  51. The CyaSSL manual is available at:
  52. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  53. and comments about the new features please check the manual.
  54. ***********CyaSSL Release 3.2.0 (09/10/2014)
  55. Release 3.2.0 CyaSSL has bug fixes and new features including:
  56. - ChaCha20 and Poly1305 crypto and suites
  57. - Small stack improvements for OCSP, CRL, TLS, DTLS
  58. - NTRU Encrypt and Decrypt benchmarks
  59. - Updated Visual Studio project files
  60. - Updated Keil MDK5 project files
  61. - Fix for DTLS sequence numbers with GCM/CCM
  62. - Updated HashDRBG with more secure struct declaration
  63. - TI-RTOS support and example Code Composer Studio project files
  64. - Ability to get enabled cipher suites, CyaSSL_get_ciphers()
  65. - AES-GCM/CCM/Direct support for Freescale mmCAU and CAU
  66. - Sniffer improvement checking for decrypt key setup
  67. - Support for raw ECC key import
  68. - Ability to convert ecc_key to DER, EccKeyToDer()
  69. - Security fix for RSA Padding check vulnerability reported by Intel Security
  70. Advanced Threat Research team
  71. The CyaSSL manual is available at:
  72. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  73. and comments about the new features please check the manual.
  74. ************ CyaSSL Release 3.1.0 (07/14/2014)
  75. Release 3.1.0 CyaSSL has bug fixes and new features including:
  76. - Fix for older versions of icc without 128-bit type
  77. - Intel ASM syntax for AES-NI
  78. - Updated NTRU support, keygen benchmark
  79. - FIPS check for minimum required HMAC key length
  80. - Small stack (--enable-smallstack) improvements for PKCS#7, ASN
  81. - TLS extension support for DTLS
  82. - Default I/O callbacks external to user
  83. - Updated example client with bad clock test
  84. - Ability to set optional ECC context info
  85. - Ability to enable/disable DH separate from opensslextra
  86. - Additional test key/cert buffers for CA and server
  87. - Updated example certificates
  88. The CyaSSL manual is available at:
  89. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  90. and comments about the new features please check the manual.
  91. ************ CyaSSL Release 3.0.2 (05/30/2014)
  92. Release 3.0.2 CyaSSL has bug fixes and new features including:
  93. - Added the following cipher suites:
  94. * TLS_PSK_WITH_AES_128_GCM_SHA256
  95. * TLS_PSK_WITH_AES_256_GCM_SHA384
  96. * TLS_PSK_WITH_AES_256_CBC_SHA384
  97. * TLS_PSK_WITH_NULL_SHA384
  98. * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
  99. * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
  100. * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
  101. * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
  102. * TLS_DHE_PSK_WITH_NULL_SHA256
  103. * TLS_DHE_PSK_WITH_NULL_SHA384
  104. * TLS_DHE_PSK_WITH_AES_128_CCM
  105. * TLS_DHE_PSK_WITH_AES_256_CCM
  106. - Added AES-NI support for Microsoft Visual Studio builds.
  107. - Changed small stack build to be disabled by default.
  108. - Updated the Hash DRBG and provided a configure option to enable.
  109. The CyaSSL manual is available at:
  110. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  111. and comments about the new features please check the manual.
  112. ************ CyaSSL Release 3.0.0 (04/29/2014)
  113. Release 3.0.0 CyaSSL has bug fixes and new features including:
  114. - FIPS release candidate
  115. - X.509 improvements that address items reported by Suman Jana with security
  116. researchers at UT Austin and UC Davis
  117. - Small stack size improvements, --enable-smallstack. Offloads large local
  118. variables to the heap. (Note this is not complete.)
  119. - Updated AES-CCM-8 cipher suites to use approved suite numbers.
  120. The CyaSSL manual is available at:
  121. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  122. and comments about the new features please check the manual.
  123. ************ CyaSSL Release 2.9.4 (04/09/2014)
  124. Release 2.9.4 CyaSSL has bug fixes and new features including:
  125. - Security fixes that address items reported by Ivan Fratric of the Google
  126. Security Team
  127. - X.509 Unknown critical extensions treated as errors, report by Suman Jana with
  128. security researchers at UT Austin and UC Davis
  129. - Sniffer fixes for corrupted packet length and Jumbo frames
  130. - ARM thumb mode assembly fixes
  131. - Xcode 5.1 support including new clang
  132. - PIC32 MZ hardware support
  133. - CyaSSL Object has enough room to read the Record Header now w/o allocs
  134. - FIPS wrappers for AES, 3DES, SHA1, SHA256, SHA384, HMAC, and RSA.
  135. - A sample I/O pool is demonstrated with --enable-iopool to overtake memory
  136. handling and reduce memory fragmentation on I/O large sizes
  137. The CyaSSL manual is available at:
  138. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  139. and comments about the new features please check the manual.
  140. ************ CyaSSL Release 2.9.0 (02/07/2014)
  141. Release 2.9.0 CyaSSL has bug fixes and new features including:
  142. - Freescale Kinetis RNGB support
  143. - Freescale Kinetis mmCAU support
  144. - TLS Hello extensions
  145. - ECC
  146. - Secure Renegotiation (null)
  147. - Truncated HMAC
  148. - SCEP support
  149. - PKCS #7 Enveloped data and signed data
  150. - PKCS #10 Certificate Signing Request generation
  151. - DTLS sliding window
  152. - OCSP Improvements
  153. - API change to integrate into Certificate Manager
  154. - IPv4/IPv6 agnostic
  155. - example client/server support for OCSP
  156. - OCSP nonces are optional
  157. - GMAC hashing
  158. - Windows build additions
  159. - Windows CYGWIN build fixes
  160. - Updated test certificates
  161. - Microchip MPLAB Harmony support
  162. - Update autoconf scripts
  163. - Additional X.509 inspection functions
  164. - ECC encrypt/decrypt primitives
  165. - ECC Certificate generation
  166. The Freescale Kinetis K53 RNGB documentation can be found in Chapter 33 of the
  167. K53 Sub-Family Reference Manual:
  168. http://cache.freescale.com/files/32bit/doc/ref_manual/K53P144M100SF2RM.pdf
  169. Freescale Kinetis K60 mmCAU (AES, DES, 3DES, MD5, SHA, SHA256) documentation
  170. can be found in the "ColdFire/ColdFire+ CAU and Kinetis mmCAU Software Library
  171. User Guide":
  172. http://cache.freescale.com/files/32bit/doc/user_guide/CAUAPIUG.pdf
  173. *****************CyaSSL Release 2.8.0 (8/30/2013)
  174. Release 2.8.0 CyaSSL has bug fixes and new features including:
  175. - AES-GCM and AES-CCM use AES-NI
  176. - NetX default IO callback handlers
  177. - IPv6 fixes for DTLS Hello Cookies
  178. - The ability to unload Certs/Keys after the handshake, CyaSSL_UnloadCertsKeys()
  179. - SEP certificate extensions
  180. - Callback getters for easier resource freeing
  181. - External CYASSL_MAX_ERROR_SZ for correct error buffer sizing
  182. - MacEncrypt and DecryptVerify Callbacks for User Atomic Record Layer Processing
  183. - Public Key Callbacks for ECC and RSA
  184. - Client now sends blank cert upon request if doesn't have one with TLS <= 1.2
  185. The CyaSSL manual is available at:
  186. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  187. and comments about the new features please check the manual.
  188. *****************CyaSSL Release 2.7.0 (6/17/2013)
  189. Release 2.7.0 CyaSSL has bug fixes and new features including:
  190. - SNI support for client and server
  191. - KEIL MDK-ARM projects
  192. - Wildcard check to domain name match, and Subject altnames are checked too
  193. - Better error messages for certificate verification errors
  194. - Ability to discard session during handshake verify
  195. - More consistent error returns across all APIs
  196. - Ability to unload CAs at the CTX or CertManager level
  197. - Authority subject id support for Certificate matching
  198. - Persistent session cache functionality
  199. - Persistent CA cache functionality
  200. - Client session table lookups to push serverID table to library level
  201. - Camellia support to sniffer
  202. - User controllable settings for DTLS timeout values
  203. - Sniffer fixes for caching long lived sessions
  204. - DTLS reliability enhancements for the handshake
  205. - Better ThreadX support
  206. When compiling with Mingw, libtool may give the following warning due to
  207. path conversion errors:
  208. libtool: link: Could not determine host file name corresponding to **
  209. libtool: link: Continuing, but uninstalled executables may not work.
  210. If so, examples and testsuite will have problems when run, showing an
  211. error while loading shared libraries. To resolve, please run "make install".
  212. The CyaSSL manual is available at:
  213. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  214. and comments about the new features please check the manual.
  215. ************** CyaSSL Release 2.6.0 (04/15/2013)
  216. Release 2.6.0 CyaSSL has bug fixes and new features including:
  217. - DTLS 1.2 support including AEAD ciphers
  218. - SHA-3 finalist Blake2 support, it's fast and uses little resources
  219. - SHA-384 cipher suites including ECC ones
  220. - HMAC now supports SHA-512
  221. - Track memory use for example client/server with -t option
  222. - Better IPv6 examples with --enable-ipv6, before if ipv6 examples/tests were
  223. turned on, localhost only was used. Now link-local (with scope ids) and ipv6
  224. hosts can be used as well.
  225. - Xcode v4.6 project for iOS v6.1 update
  226. - settings.h is now checked in all *.c files for true one file setting detection
  227. - Better alignment at SSL layer for hardware crypto alignment needs
  228. * Note, SSL itself isn't friendly to alignment with 5 byte TLS headers and
  229. 13 bytes DTLS headers, but every effort is now made to align with the
  230. CYASSL_GENERAL_ALIGNMENT flag which sets desired alignment requirement
  231. - NO_64BIT flag to turn off 64bit data type accumulators in public key code
  232. * Note, some systems are faster with 32bit accumulators
  233. - --enable-stacksize for example client/server stack use
  234. * Note, modern desktop Operating Systems may add bytes to each stack frame
  235. - Updated compression/decompression with direct crypto access
  236. - All ./configure options are now lowercase only for consistency
  237. - ./configure builds default to fastmath option
  238. * Note, if on ia32 and building in shared mode this may produce a problem
  239. with a missing register being available because of PIC, there are at least
  240. 5 solutions to this:
  241. 1) --disable-fastmath , don't use fastmath
  242. 2) --disable-shared, don't build a shared library
  243. 3) C_EXTRA_FLAGS=-DTFM_NO_ASM , turn off assembly use
  244. 4) use clang, it just seems to work
  245. 5) play around with no PIC options to force all registers being open
  246. - Many new ./configure switches for option enable/disable for example
  247. * rsa
  248. * dh
  249. * dsa
  250. * md5
  251. * sha
  252. * arc4
  253. * null (allow NULL ciphers)
  254. * oldtls (only use TLS 1.2)
  255. * asn (no certs or public keys allowed)
  256. - ./configure generates cyassl/options.h which allows a header the user can
  257. include in their app to make sure the same options are set at the app and
  258. CyaSSL level.
  259. - autoconf no longer needs serial-tests which lowers version requirements of
  260. automake to 1.11 and autoconf to 2.63
  261. The CyaSSL manual is available at:
  262. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  263. and comments about the new features please check the manual.
  264. ************** CyaSSL Release 2.5.0 (02/04/2013)
  265. Release 2.5.0 CyaSSL has bug fixes and new features including:
  266. - Fix for TLS CBC padding timing attack identified by Nadhem Alfardan and
  267. Kenny Paterson: http://www.isg.rhul.ac.uk/tls/
  268. - Microchip PIC32 (MIPS16, MIPS32) support
  269. - Microchip MPLAB X example projects for PIC32 Ethernet Starter Kit
  270. - Updated CTaoCrypt benchmark app for embedded systems
  271. - 1024-bit test certs/keys and cert/key buffers
  272. - AES-CCM-8 crypto and cipher suites
  273. - Camellia crypto and cipher suites
  274. - Bumped minimum autoconf version to 2.65, automake version to 1.12
  275. - Addition of OCSP callbacks
  276. - STM32F2 support with hardware crypto and RNG
  277. - Cavium NITROX support
  278. CTaoCrypt now has support for the Microchip PIC32 and has been tested with
  279. the Microchip PIC32 Ethernet Starter Kit, the XC32 compiler and
  280. MPLAB X IDE in both MIPS16 and MIPS32 instruction set modes. See the README
  281. located under the <cyassl_root>/mplabx directory for more details.
  282. To add Cavium NITROX support do:
  283. ./configure --with-cavium=/home/user/cavium/software
  284. pointing to your licensed cavium/software directory. Since Cavium doesn't
  285. build a library we pull in the cavium_common.o file which gives a libtool
  286. warning about the portability of this. Also, if you're using the github source
  287. tree you'll need to remove the -Wredundant-decls warning from the generated
  288. Makefile because the cavium headers don't conform to this warning. Currently
  289. CyaSSL supports Cavium RNG, AES, 3DES, RC4, HMAC, and RSA directly at the crypto
  290. layer. Support at the SSL level is partial and currently just does AES, 3DES,
  291. and RC4. RSA and HMAC are slower until the Cavium calls can be utilized in non
  292. blocking mode. The example client turns on cavium support as does the crypto
  293. test and benchmark. Please see the HAVE_CAVIUM define.
  294. CyaSSL is able to use the STM32F2 hardware-based cryptography and random number
  295. generator through the STM32F2 Standard Peripheral Library. For necessary
  296. defines, see the CYASSL_STM32F2 define in settings.h. Documentation for the
  297. STM32F2 Standard Peripheral Library can be found in the following document:
  298. http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/DM00023896.pdf
  299. The CyaSSL manual is available at:
  300. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  301. and comments about the new features please check the manual.
  302. *************** CyaSSL Release 2.4.6 (12/20/2012)
  303. Release 2.4.6 CyaSSL has bug fixes and a few new features including:
  304. - ECC into main version
  305. - Lean PSK build (reduced code size, RAM usage, and stack usage)
  306. - FreeBSD CRL monitor support
  307. - CyaSSL_peek()
  308. - CyaSSL_send() and CyaSSL_recv() for I/O flag setting
  309. - CodeWarrior Support
  310. - MQX Support
  311. - Freescale Kinetis support including Hardware RNG
  312. - autoconf builds use jobserver
  313. - cyassl-config
  314. - Sniffer memory reductions
  315. Thanks to Brian Aker for the improved autoconf system, make rpm, cyassl-config,
  316. warning system, and general good ideas for improving CyaSSL!
  317. The Freescale Kinetis K70 RNGA documentation can be found in Chapter 37 of the
  318. K70 Sub-Family Reference Manual:
  319. http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K70P256M150SF3RM.pdf
  320. The CyaSSL manual is available at:
  321. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  322. and comments about the new features please check the manual.
  323. *************** CyaSSL Release 2.4.0 (10/10/2012)
  324. Release 2.4.0 CyaSSL has bug fixes and a few new features including:
  325. - DTLS reliability
  326. - Reduced memory usage after handshake
  327. - Updated build process
  328. The CyaSSL manual is available at:
  329. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  330. and comments about the new features please check the manual.
  331. *************** CyaSSL Release 2.3.0 (8/10/2012)
  332. Release 2.3.0 CyaSSL has bug fixes and a few new features including:
  333. - AES-GCM crypto and cipher suites
  334. - make test cipher suite checks
  335. - Subject AltName processing
  336. - Command line support for client/server examples
  337. - Sniffer SessionTicket support
  338. - SHA-384 cipher suites
  339. - Verify cipher suite validity when user overrides
  340. - CRL dir monitoring
  341. - DTLS Cookie support, reliability coming soon
  342. The CyaSSL manual is available at:
  343. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  344. and comments about the new features please check the manual.
  345. ***************CyaSSL Release 2.2.0 (5/18/2012)
  346. Release 2.2.0 CyaSSL has bug fixes and a few new features including:
  347. - Initial CRL support (--enable-crl)
  348. - Initial OCSP support (--enable-ocsp)
  349. - Add static ECDH suites
  350. - SHA-384 support
  351. - ECC client certificate support
  352. - Add medium session cache size (1055 sessions)
  353. - Updated unit tests
  354. - Protection against mutex reinitialization
  355. The CyaSSL manual is available at:
  356. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  357. and comments about the new features please check the manual.
  358. ***************CyaSSL Release 2.0.8 (2/24/2012)
  359. Release 2.0.8 CyaSSL has bug fixes and a few new features including:
  360. - A fix for malicious certificates pointed out by Remi Gacogne (thanks)
  361. resulting in NULL pointer use.
  362. - Respond to renegotiation attempt with no_renegoatation alert
  363. - Add basic path support for load_verify_locations()
  364. - Add set Temp EC-DHE key size
  365. - Extra checks on rsa test when porting into
  366. The CyaSSL manual is available at:
  367. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  368. and comments about the new features please check the manual.
  369. ************* CyaSSL Release 2.0.6 (1/27/2012)
  370. Release 2.0.6 CyaSSL has bug fixes and a few new features including:
  371. - Fixes for CA basis constraint check
  372. - CTX reference counting
  373. - Initial unit test additions
  374. - Lean and Mean Windows fix
  375. - ECC benchmarking
  376. - SSMTP build support
  377. - Ability to group handshake messages with set_group_messages(ctx/ssl)
  378. - CA cache addition callback
  379. - Export Base64_Encode for general use
  380. The CyaSSL manual is available at:
  381. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  382. and comments about the new features please check the manual.
  383. ************* CyaSSL Release 2.0.2 (12/05/2011)
  384. Release 2.0.2 CyaSSL has bug fixes and a few new features including:
  385. - CTaoCrypt Runtime library detection settings when directly using the crypto
  386. library
  387. - Default certificate generation now uses SHAwRSA and adds SHA256wRSA generation
  388. - All test certificates now use 2048bit and SHA-1 for better modern browser
  389. support
  390. - Direct AES block access and AES-CTR (counter) mode
  391. - Microchip pic32 support
  392. The CyaSSL manual is available at:
  393. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  394. and comments about the new features please check the manual.
  395. ************* CyaSSL Release 2.0.0rc3 (9/28/2011)
  396. Release 2.0.0rc3 for CyaSSL has bug fixes and a few new features including:
  397. - updated autoconf support
  398. - better make install and uninstall (uses system directories)
  399. - make test / make check
  400. - CyaSSL headers now in <cyassl/*.h>
  401. - CTaocrypt headers now in <cyassl/ctaocrypt/*.h>
  402. - OpenSSL compatibility headers now in <cyassl/openssl/*.h>
  403. - examples and tests all run from home directory so can use certs in ./certs
  404. (see note 1)
  405. So previous applications that used the OpenSSL compatibility header
  406. <openssl/ssl.h> now need to include <cyassl/openssl/ssl.h> instead, no other
  407. changes are required.
  408. Special Thanks to Brian Aker for his autoconf, install, and header patches.
  409. The CyaSSL manual is available at:
  410. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  411. and comments about the new features please check the manual.
  412. ************CyaSSL Release 2.0.0rc2 (6/6/2011)
  413. Release 2.0.0rc2 for CyaSSL has bug fixes and a few new features including:
  414. - bug fixes (Alerts, DTLS with DHE)
  415. - FreeRTOS support
  416. - lwIP support
  417. - Wshadow warnings removed
  418. - asn public header
  419. - CTaoCrypt public headers now all have ctc_ prefix (the manual is still being
  420. updated to reflect this change)
  421. - and more.
  422. This is the 2nd and perhaps final release candidate for version 2.
  423. Please send any comments or questions to support@wolfssl.com.
  424. The CyaSSL manual is available at:
  425. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  426. and comments about the new features please check the manual.
  427. ***********CyaSSL Release 2.0.0rc1 (5/2/2011)
  428. Release 2.0.0rc1 for CyaSSL has many new features including:
  429. - bug fixes
  430. - SHA-256 cipher suites
  431. - Root Certificate Verification (instead of needing all certs in the chain)
  432. - PKCS #8 private key encryption (supports PKCS #5 v1-v2 and PKCS #12)
  433. - Serial number retrieval for x509
  434. - PBKDF2 and PKCS #12 PBKDF
  435. - UID parsing for x509
  436. - SHA-256 certificate signatures
  437. - Client and server can send chains (SSL_CTX_use_certificate_chain_file)
  438. - CA loading can now parse multiple certificates per file
  439. - Dynamic memory runtime hooks
  440. - Runtime hooks for logging
  441. - EDH on server side
  442. - More informative error codes
  443. - More informative logging messages
  444. - Version downgrade more robust (use SSL_v23*)
  445. - Shared build only by default through ./configure
  446. - Compiler visibility is now used, internal functions not polluting namespace
  447. - Single Makefile, no recursion, for faster and simpler building
  448. - Turn on all warnings possible build option, warning fixes
  449. - and more.
  450. Because of all the new features and the multiple OS, compiler, feature-set
  451. options that CyaSSL allows, there may be some configuration fixes needed.
  452. Please send any comments or questions to support@wolfssl.com.
  453. The CyaSSL manual is available at:
  454. http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions
  455. and comments about the new features please check the manual.
  456. ****************** CyaSSL Release 1.9.0 (3/2/2011)
  457. Release 1.9.0 for CyaSSL adds bug fixes, improved TLSv1.2 through testing and
  458. better hash/sig algo ids, --enable-webServer for the yaSSL embedded web server,
  459. improper AES key setup detection, user cert verify callback improvements, and
  460. more.
  461. The CyaSSL manual offering is included in the doc/ directory. For build
  462. instructions and comments about the new features please check the manual.
  463. Please send any comments or questions to support@wolfssl.com.
  464. ****************** CyaSSL Release 1.8.0 (12/23/2010)
  465. Release 1.8.0 for CyaSSL adds bug fixes, x509 v3 CA signed certificate
  466. generation, a C standard library abstraction layer, lower memory use, increased
  467. portability through the os_settings.h file, and the ability to use NTRU cipher
  468. suites when used in conjunction with an NTRU license and library.
  469. The initial CyaSSL manual offering is included in the doc/ directory. For
  470. build instructions and comments about the new features please check the manual.
  471. Please send any comments or questions to support@wolfssl.com.
  472. Happy Holidays.
  473. ********************* CyaSSL Release 1.6.5 (9/9/2010)
  474. Release 1.6.5 for CyaSSL adds bug fixes and x509 v3 self signed certificate
  475. generation.
  476. For general build instructions see doc/Building_CyaSSL.pdf.
  477. To enable certificate generation support add this option to ./configure
  478. ./configure --enable-certgen
  479. An example is included in ctaocrypt/test/test.c and documentation is provided
  480. in doc/CyaSSL_Extensions_Reference.pdf item 11.
  481. ********************** CyaSSL Release 1.6.0 (8/27/2010)
  482. Release 1.6.0 for CyaSSL adds bug fixes, RIPEMD-160, SHA-512, and RSA key
  483. generation.
  484. For general build instructions see doc/Building_CyaSSL.pdf.
  485. To add RIPEMD-160 support add this option to ./configure
  486. ./configure --enable-ripemd
  487. To add SHA-512 support add this option to ./configure
  488. ./configure --enable-sha512
  489. To add RSA key generation support add this option to ./configure
  490. ./configure --enable-keygen
  491. Please see ctaocrypt/test/test.c for examples and usage.
  492. For Windows, RIPEMD-160 and SHA-512 are enabled by default but key generation is
  493. off by default. To turn key generation on add the define CYASSL_KEY_GEN to
  494. CyaSSL.
  495. ************* CyaSSL Release 1.5.6 (7/28/2010)
  496. Release 1.5.6 for CyaSSL adds bug fixes, compatibility for our JSSE provider,
  497. and a fix for GCC builds on some systems.
  498. For general build instructions see doc/Building_CyaSSL.pdf.
  499. To add AES-NI support add this option to ./configure
  500. ./configure --enable-aesni
  501. You'll need GCC 4.4.3 or later to make use of the assembly.
  502. ************** CyaSSL Release 1.5.4 (7/7/2010)
  503. Release 1.5.4 for CyaSSL adds bug fixes, support for AES-NI, SHA1 speed
  504. improvements from loop unrolling, and support for the Mongoose Web Server.
  505. For general build instructions see doc/Building_CyaSSL.pdf.
  506. To add AES-NI support add this option to ./configure
  507. ./configure --enable-aesni
  508. You'll need GCC 4.4.3 or later to make use of the assembly.
  509. *************** CyaSSL Release 1.5.0 (5/11/2010)
  510. Release 1.5.0 for CyaSSL adds bug fixes, GoAhead WebServer support, sniffer
  511. support, and initial swig interface support.
  512. For general build instructions see doc/Building_CyaSSL.pdf.
  513. To add support for GoAhead WebServer either --enable-opensslExtra or if you
  514. don't want all the features of opensslExtra you can just define GOAHEAD_WS
  515. instead. GOAHEAD_WS can be added to ./configure with CFLAGS=-DGOAHEAD_WS or
  516. you can define it yourself.
  517. To look at the sniffer support please see the sniffertest app in
  518. sslSniffer/sslSnifferTest. Build with --enable-sniffer on *nix or use the
  519. vcproj files on windows. You'll need to have pcap installed on *nix and
  520. WinPcap on windows.
  521. A swig interface file is now located in the swig directory for using Python,
  522. Java, Perl, and others with CyaSSL. This is initial support and experimental,
  523. please send questions or comments to support@wolfssl.com.
  524. When doing load testing with CyaSSL, on the echoserver example say, the client
  525. machine may run out of tcp ephemeral ports, they will end up in the TIME_WAIT
  526. queue, and can't be reused by default. There are generally two ways to fix
  527. this. 1) Reduce the length sockets remain on the TIME_WAIT queue or 2) Allow
  528. items on the TIME_WAIT queue to be reused.
  529. To reduce the TIME_WAIT length in OS X to 3 seconds (3000 milliseconds)
  530. sudo sysctl -w net.inet.tcp.msl=3000
  531. In Linux
  532. sudo sysctl -w net.ipv4.tcp_tw_reuse=1
  533. allows reuse of sockets in TIME_WAIT
  534. sudo sysctl -w net.ipv4.tcp_tw_recycle=1
  535. works but seems to remove sockets from TIME_WAIT entirely?
  536. sudo sysctl -w net.ipv4.tcp_fin_timeout=1
  537. doen't control TIME_WAIT, it controls FIN_WAIT(2) contrary to some posts
  538. ******************** CyaSSL Release 1.4.0 (2/18/2010)
  539. Release 1.3.0 for CyaSSL adds bug fixes, better multi TLS/SSL version support
  540. through SSLv23_server_method(), and improved documentation in the doc/ folder.
  541. For general build instructions doc/Building_CyaSSL.pdf.
  542. ******************** CyaSSL Release 1.3.0 (1/21/2010)
  543. Release 1.3.0 for CyaSSL adds bug fixes, a potential security problem fix,
  544. better porting support, removal of assert()s, and a complete THREADX port.
  545. For general build instructions see rc1 below.
  546. ******************** CyaSSL Release 1.2.0 (11/2/2009)
  547. Release 1.2.0 for CyaSSL adds bug fixes and session negotiation if first use is
  548. read or write.
  549. For general build instructions see rc1 below.
  550. ******************** CyaSSL Release 1.1.0 (9/2/2009)
  551. Release 1.1.0 for CyaSSL adds bug fixes, a check against malicious session
  552. cache use, support for lighttpd, and TLS 1.2.
  553. To get TLS 1.2 support please use the client and server functions:
  554. SSL_METHOD *TLSv1_2_server_method(void);
  555. SSL_METHOD *TLSv1_2_client_method(void);
  556. CyaSSL was tested against lighttpd 1.4.23. To build CyaSSL for use with
  557. lighttpd use the following commands from the CyaSSL install dir <CyaSSLDir>:
  558. ./configure --disable-shared --enable-opensslExtra --enable-fastmath --without-zlib
  559. make
  560. make openssl-links
  561. Then to build lighttpd with CyaSSL use the following commands from the
  562. lighttpd install dir:
  563. ./configure --with-openssl --with-openssl-includes=<CyaSSLDir>/include --with-openssl-libs=<CyaSSLDir>/lib LDFLAGS=-lm
  564. make
  565. On some systems you may get a linker error about a duplicate symbol for
  566. MD5_Init or other MD5 calls. This seems to be caused by the lighttpd src file
  567. md5.c, which defines MD5_Init(), and is included in liblightcomp_la-md5.o.
  568. When liblightcomp is linked with the SSL_LIBs the linker may complain about
  569. the duplicate symbol. This can be fixed by editing the lighttpd src file md5.c
  570. and adding this line to the beginning of the file:
  571. #if 0
  572. and this line to the end of the file
  573. #endif
  574. Then from the lighttpd src dir do a:
  575. make clean
  576. make
  577. If you get link errors about undefined symbols more than likely the actual
  578. OpenSSL libraries are found by the linker before the CyaSSL openssl-links that
  579. point to the CyaSSL library, causing the linker confusion. This can be fixed
  580. by editing the Makefile in the lighttpd src directory and changing the line:
  581. SSL_LIB = -lssl -lcrypto
  582. to
  583. SSL_LIB = -lcyassl
  584. Then from the lighttpd src dir do a:
  585. make clean
  586. make
  587. This should remove any confusion the linker may be having with missing symbols.
  588. For any questions or concerns please contact support@wolfssl.com .
  589. For general build instructions see rc1 below.
  590. ******************CyaSSL Release 1.0.6 (8/03/2009)
  591. Release 1.0.6 for CyaSSL adds bug fixes, an improved session cache, and faster
  592. math with a huge code option.
  593. The session cache now defaults to a client mode, also good for embedded servers.
  594. For servers not under heavy load (less than 200 new sessions per minute), define
  595. BIG_SESSION_CACHE. If the server will be under heavy load, define
  596. HUGE_SESSION_CACHE.
  597. There is now a fasthugemath option for configure. This enables fastmath plus
  598. even faster math by greatly increasing the code size of the math library. Use
  599. the benchmark utility to compare public key operations.
  600. For general build instructions see rc1 below.
  601. ******************CyaSSL Release 1.0.3 (5/10/2009)
  602. Release 1.0.3 for CyaSSL adds bug fixes and add increased support for OpenSSL
  603. compatibility when building other applications.
  604. Release 1.0.3 includes an alpha release of DTLS for both client and servers.
  605. This is only for testing purposes at this time. Rebroadcast and reordering
  606. aren't fully implemented at this time but will be for the next release.
  607. For general build instructions see rc1 below.
  608. ******************CyaSSL Release 1.0.2 (4/3/2009)
  609. Release 1.0.2 for CyaSSL adds bug fixes for a couple I/O issues. Some systems
  610. will send a SIGPIPE on socket recv() at any time and this should be handled by
  611. the application by turning off SIGPIPE through setsockopt() or returning from
  612. the handler.
  613. Release 1.0.2 includes an alpha release of DTLS for both client and servers.
  614. This is only for testing purposes at this time. Rebroadcast and reordering
  615. aren't fully implemented at this time but will be for the next release.
  616. For general build instructions see rc1 below.
  617. *****************CyaSSL Release Candidiate 3 rc3-1.0.0 (2/25/2009)
  618. Release Candidate 3 for CyaSSL 1.0.0 adds bug fixes and adds a project file for
  619. iPhone development with Xcode. cyassl-iphone.xcodeproj is located in the root
  620. directory. This release also includes a fix for supporting other
  621. implementations that bundle multiple messages at the record layer, this was
  622. lost when cyassl i/o was re-implemented but is now fixed.
  623. For general build instructions see rc1 below.
  624. *****************CyaSSL Release Candidiate 2 rc2-1.0.0 (1/21/2009)
  625. Release Candidate 2 for CyaSSL 1.0.0 adds bug fixes and adds two new stream
  626. ciphers along with their respective cipher suites. CyaSSL adds support for
  627. HC-128 and RABBIT stream ciphers. The new suites are:
  628. TLS_RSA_WITH_HC_128_SHA
  629. TLS_RSA_WITH_RABBIT_SHA
  630. And the corresponding cipher names are
  631. HC128-SHA
  632. RABBIT-SHA
  633. CyaSSL also adds support for building with devkitPro for PPC by changing the
  634. library proper to use libogc. The examples haven't been changed yet but if
  635. there's interest they can be. Here's an example ./configure to build CyaSSL
  636. for devkitPro:
  637. ./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"
  638. For linking purposes you'll need
  639. LDFLAGS="-g -mrvl -mcpu=750 -meabi -mhard-float -Wl,-Map,$(notdir $@).map"
  640. For general build instructions see rc1 below.
  641. ********************CyaSSL Release Candidiate 1 rc1-1.0.0 (12/17/2008)
  642. Release Candidate 1 for CyaSSL 1.0.0 contains major internal changes. Several
  643. areas have optimization improvements, less dynamic memory use, and the I/O
  644. strategy has been refactored to allow alternate I/O handling or Library use.
  645. Many thanks to Thierry Fournier for providing these ideas and most of the work.
  646. Because of these changes, this release is only a candidate since some problems
  647. are probably inevitable on some platform with some I/O use. Please report any
  648. problems and we'll try to resolve them as soon as possible. You can contact us
  649. at support@wolfssl.com or todd@wolfssl.com.
  650. Using TomsFastMath by passing --enable-fastmath to ./configure now uses assembly
  651. on some platforms. This is new so please report any problems as every compiler,
  652. mode, OS combination hasn't been tested. On ia32 all of the registers need to
  653. be available so be sure to pass these options to CFLAGS:
  654. CFLAGS="-O3 -fomit-frame-pointer"
  655. OS X will also need -mdynamic-no-pic added to CFLAGS
  656. Also if you're building in shared mode for ia32 you'll need to pass options to
  657. LDFLAGS as well on OS X:
  658. LDFLAGS=-Wl,-read_only_relocs,warning
  659. This gives warnings for some symbols but seems to work.
  660. --To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
  661. ./configure
  662. make
  663. from the ./testsuite/ directory run ./testsuite
  664. to make a debug build:
  665. ./configure --enable-debug --disable-shared
  666. make
  667. --To build on Win32
  668. Choose (Re)Build All from the project workspace
  669. Run the testsuite program
  670. *************************CyaSSL version 0.9.9 (7/25/2008)
  671. This release of CyaSSL adds bug fixes, Pre-Shared Keys, over-rideable memory
  672. handling, and optionally TomsFastMath. Thanks to Moisés Guimarães for the
  673. work on TomsFastMath.
  674. To optionally use TomsFastMath pass --enable-fastmath to ./configure
  675. Or define USE_FAST_MATH in each project from CyaSSL for MSVC.
  676. Please use the benchmark routine before and after to see the performance
  677. difference, on some platforms the gains will be little but RSA encryption
  678. always seems to be faster. On x86-64 machines with GCC the normal math library
  679. may outperform the fast one when using CFLAGS=-m64 because TomsFastMath can't
  680. yet use -m64 because of GCCs inability to do 128bit division.
  681. **** UPDATE GCC 4.2.1 can now do 128bit division ***
  682. See notes below (0.2.0) for complete build instructions.
  683. ****************CyaSSL version 0.9.8 (5/7/2008)
  684. This release of CyaSSL adds bug fixes, client side Diffie-Hellman, and better
  685. socket handling.
  686. See notes below (0.2.0) for complete build instructions.
  687. ****************CyaSSL version 0.9.6 (1/31/2008)
  688. This release of CyaSSL adds bug fixes, increased session management, and a fix
  689. for gnutls.
  690. See notes below (0.2.0) for complete build instructions.
  691. ****************CyaSSL version 0.9.0 (10/15/2007)
  692. This release of CyaSSL adds bug fixes, MSVC 2005 support, GCC 4.2 support,
  693. IPV6 support and test, and new test certificates.
  694. See notes below (0.2.0) for complete build instructions.
  695. ****************CyaSSL version 0.8.0 (1/10/2007)
  696. This release of CyaSSL adds increased socket support, for non-blocking writes,
  697. connects, and interrupted system calls.
  698. See notes below (0.2.0) for complete build instructions.
  699. ****************CyaSSL version 0.6.3 (10/30/2006)
  700. This release of CyaSSL adds debug logging to stderr to aid in the debugging of
  701. CyaSSL on systems that may not provide the best support.
  702. If CyaSSL is built with debugging support then you need to call
  703. CyaSSL_Debugging_ON() to turn logging on.
  704. On Unix use ./configure --enable-debug
  705. On Windows define DEBUG_CYASSL when building CyaSSL
  706. To turn logging back off call CyaSSL_Debugging_OFF()
  707. See notes below (0.2.0) for complete build instructions.
  708. *****************CyaSSL version 0.6.2 (10/29/2006)
  709. This release of CyaSSL adds TLS 1.1.
  710. Note that CyaSSL has certificate verification on by default, unlike OpenSSL.
  711. To emulate OpenSSL behavior, you must call SSL_CTX_set_verify() with
  712. SSL_VERIFY_NONE. In order to have full security you should never do this,
  713. provide CyaSSL with the proper certificates to eliminate impostors and call
  714. CyaSSL_check_domain_name() to prevent man in the middle attacks.
  715. See notes below (0.2.0) for build instructions.
  716. *****************CyaSSL version 0.6.0 (10/25/2006)
  717. This release of CyaSSL adds more SSL functions, better autoconf, nonblocking
  718. I/O for accept, connect, and read. There is now an --enable-small configure
  719. option that turns off TLS, AES, DES3, HMAC, and ERROR_STRINGS, see configure.in
  720. for the defines. Note that TLS requires HMAC and AES requires TLS.
  721. See notes below (0.2.0) for build instructions.
  722. *****************CyaSSL version 0.5.5 (09/27/2006)
  723. This mini release of CyaSSL adds better input processing through buffered input
  724. and big message support. Added SSL_pending() and some sanity checks on user
  725. settings.
  726. See notes below (0.2.0) for build instructions.
  727. *****************CyaSSL version 0.5.0 (03/27/2006)
  728. This release of CyaSSL adds AES support and minor bug fixes.
  729. See notes below (0.2.0) for build instructions.
  730. *****************CyaSSL version 0.4.0 (03/15/2006)
  731. This release of CyaSSL adds TLSv1 client/server support and libtool.
  732. See notes below for build instructions.
  733. *****************CyaSSL version 0.3.0 (02/26/2006)
  734. This release of CyaSSL adds SSLv3 server support and session resumption.
  735. See notes below for build instructions.
  736. *****************CyaSSL version 0.2.0 (02/19/2006)
  737. This is the first release of CyaSSL and its crypt brother, CTaoCrypt. CyaSSL
  738. is written in ANSI C with the idea of a small code size, footprint, and memory
  739. usage in mind. CTaoCrypt can be as small as 32K, and the current client
  740. version of CyaSSL can be as small as 12K.
  741. The first release of CTaoCrypt supports MD5, SHA-1, 3DES, ARC4, Big Integer
  742. Support, RSA, ASN parsing, and basic x509 (en/de)coding.
  743. The first release of CyaSSL supports normal client RSA mode SSLv3 connections
  744. with support for SHA-1 and MD5 digests. Ciphers include 3DES and RC4.
  745. --To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin:
  746. ./configure
  747. make
  748. from the ./testsuite/ directory run ./testsuite
  749. to make a debug build:
  750. ./configure --enable-debug --disable-shared
  751. make
  752. --To build on Win32
  753. Choose (Re)Build All from the project workspace
  754. Run the testsuite program
  755. *** The next release of CyaSSL will support a server and more OpenSSL
  756. compatibility functions.
  757. Please send questions or comments to todd@wolfssl.com