README 36 KB

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