README 39 KB

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