ChangeLog 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  1. PolarSSL ChangeLog
  2. = Version 1.0.0 released on 2011-07-27
  3. Features
  4. * Expanded cipher layer with support for CFB128 and CTR mode
  5. * Added rsa_encrypt and rsa_decrypt simple example programs.
  6. Changes
  7. * The generic cipher and message digest layer now have normal error
  8. codes instead of integers
  9. Bugfix
  10. * Undid faulty bug fix in ssl_write() when flushing old data (Ticket
  11. #18)
  12. = Version 0.99-pre5 released on 2011-05-26
  13. Features
  14. * Added additional Cipher Block Modes to symmetric ciphers
  15. (AES CTR, Camellia CTR, XTEA CBC) including the option to
  16. enable and disable individual modes when needed
  17. * Functions requiring File System functions can now be disabled
  18. by undefining POLARSSL_FS_IO
  19. * A error_strerror function() has been added to translate between
  20. error codes and their description.
  21. * Added mpi_get_bit() and mpi_set_bit() individual bit setter/getter
  22. functions.
  23. * Added ssl_mail_client and ssl_fork_server as example programs.
  24. Changes
  25. * Major argument / variable rewrite. Introduced use of size_t
  26. instead of int for buffer lengths and loop variables for
  27. better unsigned / signed use. Renamed internal bigint types
  28. t_int and t_dbl to t_uint and t_udbl in the process
  29. * mpi_init() and mpi_free() now only accept a single MPI
  30. argument and do not accept variable argument lists anymore.
  31. * The error codes have been remapped and combining error codes
  32. is now done with a PLUS instead of an OR as error codes
  33. used are negative.
  34. * Changed behaviour of net_read(), ssl_fetch_input() and ssl_recv().
  35. net_recv() now returns 0 on EOF instead of
  36. POLARSSL_ERR_NET_CONN_RESET. ssl_fetch_input() returns
  37. POLARSSL_ERR_SSL_CONN_EOF on an EOF from its f_recv() function.
  38. ssl_read() returns 0 if a POLARSSL_ERR_SSL_CONN_EOF is received
  39. after the handshake.
  40. * Network functions now return POLARSSL_ERR_NET_WANT_READ or
  41. POLARSSL_ERR_NET_WANT_WRITE instead of the ambiguous
  42. POLARSSL_ERR_NET_TRY_AGAIN
  43. = Version 0.99-pre4 released on 2011-04-01
  44. Features
  45. * Added support for PKCS#1 v2.1 encoding and thus support
  46. for the RSAES-OAEP and RSASSA-PSS operations.
  47. * Reading of Public Key files incorporated into default x509
  48. functionality as well.
  49. * Added mpi_fill_random() for centralized filling of big numbers
  50. with random data (Fixed ticket #10)
  51. Changes
  52. * Debug print of MPI now removes leading zero octets and
  53. displays actual bit size of the value.
  54. * x509parse_key() (and as a consequence x509parse_keyfile())
  55. does not zeroize memory in advance anymore. Use rsa_init()
  56. before parsing a key or keyfile!
  57. Bugfix
  58. * Debug output of MPI's now the same independent of underlying
  59. platform (32-bit / 64-bit) (Fixes ticket #19, found by Mads
  60. Kiilerich and Mihai Militaru)
  61. * Fixed bug in ssl_write() when flushing old data (Fixed ticket
  62. #18, found by Nikolay Epifanov)
  63. * Fixed proper handling of RSASSA-PSS verification with variable
  64. length salt lengths
  65. = Version 0.99-pre3 released on 2011-02-28
  66. This release replaces version 0.99-pre2 which had possible copyright issues.
  67. Features
  68. * Parsing PEM private keys encrypted with DES and AES
  69. are now supported as well (Fixes ticket #5)
  70. * Added crl_app program to allow easy reading and
  71. printing of X509 CRLs from file
  72. Changes
  73. * Parsing of PEM files moved to separate module (Fixes
  74. ticket #13). Also possible to remove PEM support for
  75. systems only using DER encoding
  76. Bugfixes
  77. * Corrected parsing of UTCTime dates before 1990 and
  78. after 1950
  79. * Support more exotic OID's when parsing certificates
  80. (found by Mads Kiilerich)
  81. * Support more exotic name representations when parsing
  82. certificates (found by Mads Kiilerich)
  83. * Replaced the expired test certificates
  84. * Do not bail out if no client certificate specified. Try
  85. to negotiate anonymous connection (Fixes ticket #12,
  86. found by Boris Krasnovskiy)
  87. Security fixes
  88. * Fixed a possible Man-in-the-Middle attack on the
  89. Diffie Hellman key exchange (thanks to Larry Highsmith,
  90. Subreption LLC)
  91. = Version 0.99-pre1 released on 2011-01-30
  92. Features
  93. Note: Most of these features have been donated by Fox-IT
  94. * Added Doxygen source code documentation parts
  95. * Added reading of DHM context from memory and file
  96. * Improved X509 certificate parsing to include extended
  97. certificate fields, including Key Usage
  98. * Improved certificate verification and verification
  99. against the available CRLs
  100. * Detection for DES weak keys and parity bits added
  101. * Improvements to support integration in other
  102. applications:
  103. + Added generic message digest and cipher wrapper
  104. + Improved information about current capabilities,
  105. status, objects and configuration
  106. + Added verification callback on certificate chain
  107. verification to allow external blacklisting
  108. + Additional example programs to show usage
  109. * Added support for PKCS#11 through the use of the
  110. libpkcs11-helper library
  111. Changes
  112. * x509parse_time_expired() checks time in addition to
  113. the existing date check
  114. * The ciphers member of ssl_context and the cipher member
  115. of ssl_session have been renamed to ciphersuites and
  116. ciphersuite respectively. This clarifies the difference
  117. with the generic cipher layer and is better naming
  118. altogether
  119. = Version 0.14.0 released on 2010-08-16
  120. Features
  121. * Added support for SSL_EDH_RSA_AES_128_SHA and
  122. SSL_EDH_RSA_CAMELLIA_128_SHA ciphersuites
  123. * Added compile-time and run-time version information
  124. * Expanded ssl_client2 arguments for more flexibility
  125. * Added support for TLS v1.1
  126. Changes
  127. * Made Makefile cleaner
  128. * Removed dependency on rand() in rsa_pkcs1_encrypt().
  129. Now using random fuction provided to function and
  130. changed the prototype of rsa_pkcs1_encrypt(),
  131. rsa_init() and rsa_gen_key().
  132. * Some SSL defines were renamed in order to avoid
  133. future confusion
  134. Bug fixes
  135. * Fixed CMake out of source build for tests (found by
  136. kkert)
  137. * rsa_check_private() now supports PKCS1v2 keys as well
  138. * Fixed deadlock in rsa_pkcs1_encrypt() on failing random
  139. generator
  140. = Version 0.13.1 released on 2010-03-24
  141. Bug fixes
  142. * Fixed Makefile in library that was mistakenly merged
  143. * Added missing const string fixes
  144. = Version 0.13.0 released on 2010-03-21
  145. Features
  146. * Added option parsing for host and port selection to
  147. ssl_client2
  148. * Added support for GeneralizedTime in X509 parsing
  149. * Added cert_app program to allow easy reading and
  150. printing of X509 certificates from file or SSL
  151. connection.
  152. Changes
  153. * Added const correctness for main code base
  154. * X509 signature algorithm determination is now
  155. in a function to allow easy future expansion
  156. * Changed symmetric cipher functions to
  157. identical interface (returning int result values)
  158. * Changed ARC4 to use seperate input/output buffer
  159. * Added reset function for HMAC context as speed-up
  160. for specific use-cases
  161. Bug fixes
  162. * Fixed bug resulting in failure to send the last
  163. certificate in the chain in ssl_write_certificate() and
  164. ssl_write_certificate_request() (found by fatbob)
  165. * Added small fixes for compiler warnings on a Mac
  166. (found by Frank de Brabander)
  167. * Fixed algorithmic bug in mpi_is_prime() (found by
  168. Smbat Tonoyan)
  169. = Version 0.12.1 released on 2009-10-04
  170. Changes
  171. * Coverage test definitions now support 'depends_on'
  172. tagging system.
  173. * Tests requiring specific hashing algorithms now honor
  174. the defines.
  175. Bug fixes
  176. * Changed typo in #ifdef in x509parse.c (found
  177. by Eduardo)
  178. = Version 0.12.0 released on 2009-07-28
  179. Features
  180. * Added CMake makefiles as alternative to regular Makefiles.
  181. * Added preliminary Code Coverage tests for AES, ARC4,
  182. Base64, MPI, SHA-family, MD-family, HMAC-SHA-family,
  183. Camellia, DES, 3-DES, RSA PKCS#1, XTEA, Diffie-Hellman
  184. and X509parse.
  185. Changes
  186. * Error codes are not (necessarily) negative. Keep
  187. this is mind when checking for errors.
  188. * RSA_RAW renamed to SIG_RSA_RAW for consistency.
  189. * Fixed typo in name of POLARSSL_ERR_RSA_OUTPUT_TOO_LARGE.
  190. * Changed interface for AES and Camellia setkey functions
  191. to indicate invalid key lengths.
  192. Bug fixes
  193. * Fixed include location of endian.h on FreeBSD (found by
  194. Gabriel)
  195. * Fixed include location of endian.h and name clash on
  196. Apples (found by Martin van Hensbergen)
  197. * Fixed HMAC-MD2 by modifying md2_starts(), so that the
  198. required HMAC ipad and opad variables are not cleared.
  199. (found by code coverage tests)
  200. * Prevented use of long long in bignum if
  201. POLARSSL_HAVE_LONGLONG not defined (found by Giles
  202. Bathgate).
  203. * Fixed incorrect handling of negative strings in
  204. mpi_read_string() (found by code coverage tests).
  205. * Fixed segfault on handling empty rsa_context in
  206. rsa_check_pubkey() and rsa_check_privkey() (found by
  207. code coverage tests).
  208. * Fixed incorrect handling of one single negative input
  209. value in mpi_add_abs() (found by code coverage tests).
  210. * Fixed incorrect handling of negative first input
  211. value in mpi_sub_abs() (found by code coverage tests).
  212. * Fixed incorrect handling of negative first input
  213. value in mpi_mod_mpi() and mpi_mod_int(). Resulting
  214. change also affects mpi_write_string() (found by code
  215. coverage tests).
  216. * Corrected is_prime() results for 0, 1 and 2 (found by
  217. code coverage tests).
  218. * Fixed Camellia and XTEA for 64-bit Windows systems.
  219. = Version 0.11.1 released on 2009-05-17
  220. * Fixed missing functionality for SHA-224, SHA-256, SHA384,
  221. SHA-512 in rsa_pkcs1_sign()
  222. = Version 0.11.0 released on 2009-05-03
  223. * Fixed a bug in mpi_gcd() so that it also works when both
  224. input numbers are even and added testcases to check
  225. (found by Pierre Habouzit).
  226. * Added support for SHA-224, SHA-256, SHA-384 and SHA-512
  227. one way hash functions with the PKCS#1 v1.5 signing and
  228. verification.
  229. * Fixed minor bug regarding mpi_gcd located within the
  230. POLARSSL_GENPRIME block.
  231. * Fixed minor memory leak in x509parse_crt() and added better
  232. handling of 'full' certificate chains (found by Mathias
  233. Olsson).
  234. * Centralized file opening and reading for x509 files into
  235. load_file()
  236. * Made definition of net_htons() endian-clean for big endian
  237. systems (Found by Gernot).
  238. * Undefining POLARSSL_HAVE_ASM now also handles prevents asm in
  239. padlock and timing code.
  240. * Fixed an off-by-one buffer allocation in ssl_set_hostname()
  241. responsible for crashes and unwanted behaviour.
  242. * Added support for Certificate Revocation List (CRL) parsing.
  243. * Added support for CRL revocation to x509parse_verify() and
  244. SSL/TLS code.
  245. * Fixed compatibility of XTEA and Camellia on a 64-bit system
  246. (found by Felix von Leitner).
  247. = Version 0.10.0 released on 2009-01-12
  248. * Migrated XySSL to PolarSSL
  249. * Added XTEA symmetric cipher
  250. * Added Camellia symmetric cipher
  251. * Added support for ciphersuites: SSL_RSA_CAMELLIA_128_SHA,
  252. SSL_RSA_CAMELLIA_256_SHA and SSL_EDH_RSA_CAMELLIA_256_SHA
  253. * Fixed dangerous bug that can cause a heap overflow in
  254. rsa_pkcs1_decrypt (found by Christophe Devine)
  255. ================================================================
  256. XySSL ChangeLog
  257. = Version 0.9 released on 2008-03-16
  258. * Added support for ciphersuite: SSL_RSA_AES_128_SHA
  259. * Enabled support for large files by default in aescrypt2.c
  260. * Preliminary openssl wrapper contributed by David Barrett
  261. * Fixed a bug in ssl_write() that caused the same payload to
  262. be sent twice in non-blocking mode when send returns EAGAIN
  263. * Fixed ssl_parse_client_hello(): session id and challenge must
  264. not be swapped in the SSLv2 ClientHello (found by Greg Robson)
  265. * Added user-defined callback debug function (Krystian Kolodziej)
  266. * Before freeing a certificate, properly zero out all cert. data
  267. * Fixed the "mode" parameter so that encryption/decryption are
  268. not swapped on PadLock; also fixed compilation on older versions
  269. of gcc (bug reported by David Barrett)
  270. * Correctly handle the case in padlock_xcryptcbc() when input or
  271. ouput data is non-aligned by falling back to the software
  272. implementation, as VIA Nehemiah cannot handle non-aligned buffers
  273. * Fixed a memory leak in x509parse_crt() which was reported by Greg
  274. Robson-Garth; some x509write.c fixes by Pascal Vizeli, thanks to
  275. Matthew Page who reported several bugs
  276. * Fixed x509_get_ext() to accept some rare certificates which have
  277. an INTEGER instead of a BOOLEAN for BasicConstraints::cA.
  278. * Added support on the client side for the TLS "hostname" extension
  279. (patch contributed by David Patino)
  280. * Make x509parse_verify() return BADCERT_CN_MISMATCH when an empty
  281. string is passed as the CN (bug reported by spoofy)
  282. * Added an option to enable/disable the BN assembly code
  283. * Updated rsa_check_privkey() to verify that (D*E) = 1 % (P-1)*(Q-1)
  284. * Disabled obsolete hash functions by default (MD2, MD4); updated
  285. selftest and benchmark to not test ciphers that have been disabled
  286. * Updated x509parse_cert_info() to correctly display byte 0 of the
  287. serial number, setup correct server port in the ssl client example
  288. * Fixed a critical denial-of-service with X.509 cert. verification:
  289. peer may cause xyssl to loop indefinitely by sending a certificate
  290. for which the RSA signature check fails (bug reported by Benoit)
  291. * Added test vectors for: AES-CBC, AES-CFB, DES-CBC and 3DES-CBC,
  292. HMAC-MD5, HMAC-SHA1, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512
  293. * Fixed HMAC-SHA-384 and HMAC-SHA-512 (thanks to Josh Sinykin)
  294. * Modified ssl_parse_client_key_exchange() to protect against
  295. Daniel Bleichenbacher attack on PKCS#1 v1.5 padding, as well
  296. as the Klima-Pokorny-Rosa extension of Bleichenbacher's attack
  297. * Updated rsa_gen_key() so that ctx->N is always nbits in size
  298. * Fixed assembly PPC compilation errors on Mac OS X, thanks to
  299. David Barrett and Dusan Semen
  300. = Version 0.8 released on 2007-10-20
  301. * Modified the HMAC functions to handle keys larger
  302. than 64 bytes, thanks to Stephane Desneux and gary ng
  303. * Fixed ssl_read_record() to properly update the handshake
  304. message digests, which fixes IE6/IE7 client authentication
  305. * Cleaned up the XYSSL* #defines, suggested by Azriel Fasten
  306. * Fixed net_recv(), thanks to Lorenz Schori and Egon Kocjan
  307. * Added user-defined callbacks for handling I/O and sessions
  308. * Added lots of debugging output in the SSL/TLS functions
  309. * Added preliminary X.509 cert. writing by Pascal Vizeli
  310. * Added preliminary support for the VIA PadLock routines
  311. * Added AES-CFB mode of operation, contributed by chmike
  312. * Added an SSL/TLS stress testing program (ssl_test.c)
  313. * Updated the RSA PKCS#1 code to allow choosing between
  314. RSA_PUBLIC and RSA_PRIVATE, as suggested by David Barrett
  315. * Updated ssl_read() to skip 0-length records from OpenSSL
  316. * Fixed the make install target to comply with *BSD make
  317. * Fixed a bug in mpi_read_binary() on 64-bit platforms
  318. * mpi_is_prime() speedups, thanks to Kevin McLaughlin
  319. * Fixed a long standing memory leak in mpi_is_prime()
  320. * Replaced realloc with malloc in mpi_grow(), and set
  321. the sign of zero as positive in mpi_init() (reported
  322. by Jonathan M. McCune)
  323. = Version 0.7 released on 2007-07-07
  324. * Added support for the MicroBlaze soft-core processor
  325. * Fixed a bug in ssl_tls.c which sometimes prevented SSL
  326. connections from being established with non-blocking I/O
  327. * Fixed a couple bugs in the VS6 and UNIX Makefiles
  328. * Fixed the "PIC register ebx clobbered in asm" bug
  329. * Added HMAC starts/update/finish support functions
  330. * Added the SHA-224, SHA-384 and SHA-512 hash functions
  331. * Fixed the net_set_*block routines, thanks to Andreas
  332. * Added a few demonstration programs: md5sum, sha1sum,
  333. dh_client, dh_server, rsa_genkey, rsa_sign, rsa_verify
  334. * Added new bignum import and export helper functions
  335. * Rewrote README.txt in program/ssl/ca to better explain
  336. how to create a test PKI
  337. = Version 0.6 released on 2007-04-01
  338. * Ciphers used in SSL/TLS can now be disabled at compile
  339. time, to reduce the memory footprint on embedded systems
  340. * Added multiply assembly code for the TriCore and modified
  341. havege_struct for this processor, thanks to David Patiño
  342. * Added multiply assembly code for 64-bit PowerPCs,
  343. thanks to Peking University and the OSU Open Source Lab
  344. * Added experimental support of Quantum Cryptography
  345. * Added support for autoconf, contributed by Arnaud Cornet
  346. * Fixed "long long" compilation issues on IA-64 and PPC64
  347. * Fixed a bug introduced in xyssl-0.5/timing.c: hardclock
  348. was not being correctly defined on ARM and MIPS
  349. = Version 0.5 released on 2007-03-01
  350. * Added multiply assembly code for SPARC and Alpha
  351. * Added (beta) support for non-blocking I/O operations
  352. * Implemented session resuming and client authentication
  353. * Fixed some portability issues on WinCE, MINIX 3, Plan9
  354. (thanks to Benjamin Newman), HP-UX, FreeBSD and Solaris
  355. * Improved the performance of the EDH key exchange
  356. * Fixed a bug that caused valid packets with a payload
  357. size of 16384 bytes to be rejected
  358. = Version 0.4 released on 2007-02-01
  359. * Added support for Ephemeral Diffie-Hellman key exchange
  360. * Added multiply asm code for SSE2, ARM, PPC, MIPS and M68K
  361. * Various improvement to the modular exponentiation code
  362. * Rewrote the headers to generate the API docs with doxygen
  363. * Fixed a bug in ssl_encrypt_buf (incorrect padding was
  364. generated) and in ssl_parse_client_hello (max. client
  365. version was not properly set), thanks to Didier Rebeix
  366. * Fixed another bug in ssl_parse_client_hello: clients with
  367. cipherlists larger than 96 bytes were incorrectly rejected
  368. * Fixed a couple memory leak in x509_read.c
  369. = Version 0.3 released on 2007-01-01
  370. * Added server-side SSLv3 and TLSv1.0 support
  371. * Multiple fixes to enhance the compatibility with g++,
  372. thanks to Xosé Antón Otero Ferreira
  373. * Fixed a bug in the CBC code, thanks to dowst; also,
  374. the bignum code is no longer dependant on long long
  375. * Updated rsa_pkcs1_sign to handle arbitrary large inputs
  376. * Updated timing.c for improved compatibility with i386
  377. and 486 processors, thanks to Arnaud Cornet
  378. = Version 0.2 released on 2006-12-01
  379. * Updated timing.c to support ARM and MIPS arch
  380. * Updated the MPI code to support 8086 on MSVC 1.5
  381. * Added the copyright notice at the top of havege.h
  382. * Fixed a bug in sha2_hmac, thanks to newsoft/Wenfang Zhang
  383. * Fixed a bug reported by Adrian Rüegsegger in x509_read_key
  384. * Fixed a bug reported by Torsten Lauter in ssl_read_record
  385. * Fixed a bug in rsa_check_privkey that would wrongly cause
  386. valid RSA keys to be dismissed (thanks to oldwolf)
  387. * Fixed a bug in mpi_is_prime that caused some primes to fail
  388. the Miller-Rabin primality test
  389. I'd also like to thank Younès Hafri for the CRUX linux port,
  390. Khalil Petit who added XySSL into pkgsrc and Arnaud Cornet
  391. who maintains the Debian package :-)
  392. = Version 0.1 released on 2006-11-01