README 38 KB

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