PageRenderTime 77ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 1ms

/usr/src/common/openssl/CHANGES

https://bitbucket.org/illumos/illumos-gate/
#! | 7566 lines | 6061 code | 1505 blank | 0 comment | 0 complexity | d3bc143f59c548bc1b9e379bdfd50580 MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.0, BSD-3-Clause-No-Nuclear-License-2014, AGPL-1.0, AGPL-3.0, BSD-3-Clause, GPL-3.0, LGPL-2.1, BSD-2-Clause, MPL-2.0-no-copyleft-exception, GPL-2.0, 0BSD

Large files files are truncated, but you can click here to view the full file

  1. OpenSSL CHANGES
  2. _______________
  3. Changes between 0.9.8 and 0.9.8a [11 Oct 2005]
  4. *) Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
  5. (part of SSL_OP_ALL). This option used to disable the
  6. countermeasure against man-in-the-middle protocol-version
  7. rollback in the SSL 2.0 server implementation, which is a bad
  8. idea. (CAN-2005-2969)
  9. [Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
  10. for Information Security, National Institute of Advanced Industrial
  11. Science and Technology [AIST], Japan)]
  12. *) Add two function to clear and return the verify parameter flags.
  13. [Steve Henson]
  14. *) Keep cipherlists sorted in the source instead of sorting them at
  15. runtime, thus removing the need for a lock.
  16. [Nils Larsch]
  17. *) Avoid some small subgroup attacks in Diffie-Hellman.
  18. [Nick Mathewson and Ben Laurie]
  19. *) Add functions for well-known primes.
  20. [Nick Mathewson]
  21. *) Extended Windows CE support.
  22. [Satoshi Nakamura and Andy Polyakov]
  23. *) Initialize SSL_METHOD structures at compile time instead of during
  24. runtime, thus removing the need for a lock.
  25. [Steve Henson]
  26. *) Make PKCS7_decrypt() work even if no certificate is supplied by
  27. attempting to decrypt each encrypted key in turn. Add support to
  28. smime utility.
  29. [Steve Henson]
  30. Changes between 0.9.7h and 0.9.8 [05 Jul 2005]
  31. *) Add libcrypto.pc and libssl.pc for those who feel they need them.
  32. [Richard Levitte]
  33. *) Change CA.sh and CA.pl so they don't bundle the CSR and the private
  34. key into the same file any more.
  35. [Richard Levitte]
  36. *) Add initial support for Win64, both IA64 and AMD64/x64 flavors.
  37. [Andy Polyakov]
  38. *) Add -utf8 command line and config file option to 'ca'.
  39. [Stefan <stf@udoma.org]
  40. *) Removed the macro des_crypt(), as it seems to conflict with some
  41. libraries. Use DES_crypt().
  42. [Richard Levitte]
  43. *) Correct naming of the 'chil' and '4758cca' ENGINEs. This
  44. involves renaming the source and generated shared-libs for
  45. both. The engines will accept the corrected or legacy ids
  46. ('ncipher' and '4758_cca' respectively) when binding. NB,
  47. this only applies when building 'shared'.
  48. [Corinna Vinschen <vinschen@redhat.com> and Geoff Thorpe]
  49. *) Add attribute functions to EVP_PKEY structure. Modify
  50. PKCS12_create() to recognize a CSP name attribute and
  51. use it. Make -CSP option work again in pkcs12 utility.
  52. [Steve Henson]
  53. *) Add new functionality to the bn blinding code:
  54. - automatic re-creation of the BN_BLINDING parameters after
  55. a fixed number of uses (currently 32)
  56. - add new function for parameter creation
  57. - introduce flags to control the update behaviour of the
  58. BN_BLINDING parameters
  59. - hide BN_BLINDING structure
  60. Add a second BN_BLINDING slot to the RSA structure to improve
  61. performance when a single RSA object is shared among several
  62. threads.
  63. [Nils Larsch]
  64. *) Add support for DTLS.
  65. [Nagendra Modadugu <nagendra@cs.stanford.edu> and Ben Laurie]
  66. *) Add support for DER encoded private keys (SSL_FILETYPE_ASN1)
  67. to SSL_CTX_use_PrivateKey_file() and SSL_use_PrivateKey_file()
  68. [Walter Goulet]
  69. *) Remove buggy and incompletet DH cert support from
  70. ssl/ssl_rsa.c and ssl/s3_both.c
  71. [Nils Larsch]
  72. *) Use SHA-1 instead of MD5 as the default digest algorithm for
  73. the apps/openssl applications.
  74. [Nils Larsch]
  75. *) Compile clean with "-Wall -Wmissing-prototypes
  76. -Wstrict-prototypes -Wmissing-declarations -Werror". Currently
  77. DEBUG_SAFESTACK must also be set.
  78. [Ben Laurie]
  79. *) Change ./Configure so that certain algorithms can be disabled by default.
  80. The new counterpiece to "no-xxx" is "enable-xxx".
  81. The patented RC5 and MDC2 algorithms will now be disabled unless
  82. "enable-rc5" and "enable-mdc2", respectively, are specified.
  83. (IDEA remains enabled despite being patented. This is because IDEA
  84. is frequently required for interoperability, and there is no license
  85. fee for non-commercial use. As before, "no-idea" can be used to
  86. avoid this algorithm.)
  87. [Bodo Moeller]
  88. *) Add processing of proxy certificates (see RFC 3820). This work was
  89. sponsored by KTH (The Royal Institute of Technology in Stockholm) and
  90. EGEE (Enabling Grids for E-science in Europe).
  91. [Richard Levitte]
  92. *) RC4 performance overhaul on modern architectures/implementations, such
  93. as Intel P4, IA-64 and AMD64.
  94. [Andy Polyakov]
  95. *) New utility extract-section.pl. This can be used specify an alternative
  96. section number in a pod file instead of having to treat each file as
  97. a separate case in Makefile. This can be done by adding two lines to the
  98. pod file:
  99. =for comment openssl_section:XXX
  100. The blank line is mandatory.
  101. [Steve Henson]
  102. *) New arguments -certform, -keyform and -pass for s_client and s_server
  103. to allow alternative format key and certificate files and passphrase
  104. sources.
  105. [Steve Henson]
  106. *) New structure X509_VERIFY_PARAM which combines current verify parameters,
  107. update associated structures and add various utility functions.
  108. Add new policy related verify parameters, include policy checking in
  109. standard verify code. Enhance 'smime' application with extra parameters
  110. to support policy checking and print out.
  111. [Steve Henson]
  112. *) Add a new engine to support VIA PadLock ACE extensions in the VIA C3
  113. Nehemiah processors. These extensions support AES encryption in hardware
  114. as well as RNG (though RNG support is currently disabled).
  115. [Michal Ludvig <michal@logix.cz>, with help from Andy Polyakov]
  116. *) Deprecate BN_[get|set]_params() functions (they were ignored internally).
  117. [Geoff Thorpe]
  118. *) New FIPS 180-2 algorithms, SHA-224/-256/-384/-512 are implemented.
  119. [Andy Polyakov and a number of other people]
  120. *) Improved PowerPC platform support. Most notably BIGNUM assembler
  121. implementation contributed by IBM.
  122. [Suresh Chari, Peter Waltenberg, Andy Polyakov]
  123. *) The new 'RSA_generate_key_ex' function now takes a BIGNUM for the public
  124. exponent rather than 'unsigned long'. There is a corresponding change to
  125. the new 'rsa_keygen' element of the RSA_METHOD structure.
  126. [Jelte Jansen, Geoff Thorpe]
  127. *) Functionality for creating the initial serial number file is now
  128. moved from CA.pl to the 'ca' utility with a new option -create_serial.
  129. (Before OpenSSL 0.9.7e, CA.pl used to initialize the serial
  130. number file to 1, which is bound to cause problems. To avoid
  131. the problems while respecting compatibility between different 0.9.7
  132. patchlevels, 0.9.7e employed 'openssl x509 -next_serial' in
  133. CA.pl for serial number initialization. With the new release 0.9.8,
  134. we can fix the problem directly in the 'ca' utility.)
  135. [Steve Henson]
  136. *) Reduced header interdepencies by declaring more opaque objects in
  137. ossl_typ.h. As a consequence, including some headers (eg. engine.h) will
  138. give fewer recursive includes, which could break lazy source code - so
  139. this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always,
  140. developers should define this symbol when building and using openssl to
  141. ensure they track the recommended behaviour, interfaces, [etc], but
  142. backwards-compatible behaviour prevails when this isn't defined.
  143. [Geoff Thorpe]
  144. *) New function X509_POLICY_NODE_print() which prints out policy nodes.
  145. [Steve Henson]
  146. *) Add new EVP function EVP_CIPHER_CTX_rand_key and associated functionality.
  147. This will generate a random key of the appropriate length based on the
  148. cipher context. The EVP_CIPHER can provide its own random key generation
  149. routine to support keys of a specific form. This is used in the des and
  150. 3des routines to generate a key of the correct parity. Update S/MIME
  151. code to use new functions and hence generate correct parity DES keys.
  152. Add EVP_CHECK_DES_KEY #define to return an error if the key is not
  153. valid (weak or incorrect parity).
  154. [Steve Henson]
  155. *) Add a local set of CRLs that can be used by X509_verify_cert() as well
  156. as looking them up. This is useful when the verified structure may contain
  157. CRLs, for example PKCS#7 signedData. Modify PKCS7_verify() to use any CRLs
  158. present unless the new PKCS7_NO_CRL flag is asserted.
  159. [Steve Henson]
  160. *) Extend ASN1 oid configuration module. It now additionally accepts the
  161. syntax:
  162. shortName = some long name, 1.2.3.4
  163. [Steve Henson]
  164. *) Reimplemented the BN_CTX implementation. There is now no more static
  165. limitation on the number of variables it can handle nor the depth of the
  166. "stack" handling for BN_CTX_start()/BN_CTX_end() pairs. The stack
  167. information can now expand as required, and rather than having a single
  168. static array of bignums, BN_CTX now uses a linked-list of such arrays
  169. allowing it to expand on demand whilst maintaining the usefulness of
  170. BN_CTX's "bundling".
  171. [Geoff Thorpe]
  172. *) Add a missing BN_CTX parameter to the 'rsa_mod_exp' callback in RSA_METHOD
  173. to allow all RSA operations to function using a single BN_CTX.
  174. [Geoff Thorpe]
  175. *) Preliminary support for certificate policy evaluation and checking. This
  176. is initially intended to pass the tests outlined in "Conformance Testing
  177. of Relying Party Client Certificate Path Processing Logic" v1.07.
  178. [Steve Henson]
  179. *) bn_dup_expand() has been deprecated, it was introduced in 0.9.7 and
  180. remained unused and not that useful. A variety of other little bignum
  181. tweaks and fixes have also been made continuing on from the audit (see
  182. below).
  183. [Geoff Thorpe]
  184. *) Constify all or almost all d2i, c2i, s2i and r2i functions, along with
  185. associated ASN1, EVP and SSL functions and old ASN1 macros.
  186. [Richard Levitte]
  187. *) BN_zero() only needs to set 'top' and 'neg' to zero for correct results,
  188. and this should never fail. So the return value from the use of
  189. BN_set_word() (which can fail due to needless expansion) is now deprecated;
  190. if OPENSSL_NO_DEPRECATED is defined, BN_zero() is a void macro.
  191. [Geoff Thorpe]
  192. *) BN_CTX_get() should return zero-valued bignums, providing the same
  193. initialised value as BN_new().
  194. [Geoff Thorpe, suggested by Ulf Möller]
  195. *) Support for inhibitAnyPolicy certificate extension.
  196. [Steve Henson]
  197. *) An audit of the BIGNUM code is underway, for which debugging code is
  198. enabled when BN_DEBUG is defined. This makes stricter enforcements on what
  199. is considered valid when processing BIGNUMs, and causes execution to
  200. assert() when a problem is discovered. If BN_DEBUG_RAND is defined,
  201. further steps are taken to deliberately pollute unused data in BIGNUM
  202. structures to try and expose faulty code further on. For now, openssl will
  203. (in its default mode of operation) continue to tolerate the inconsistent
  204. forms that it has tolerated in the past, but authors and packagers should
  205. consider trying openssl and their own applications when compiled with
  206. these debugging symbols defined. It will help highlight potential bugs in
  207. their own code, and will improve the test coverage for OpenSSL itself. At
  208. some point, these tighter rules will become openssl's default to improve
  209. maintainability, though the assert()s and other overheads will remain only
  210. in debugging configurations. See bn.h for more details.
  211. [Geoff Thorpe, Nils Larsch, Ulf Möller]
  212. *) BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure
  213. that can only be obtained through BN_CTX_new() (which implicitly
  214. initialises it). The presence of this function only made it possible
  215. to overwrite an existing structure (and cause memory leaks).
  216. [Geoff Thorpe]
  217. *) Because of the callback-based approach for implementing LHASH as a
  218. template type, lh_insert() adds opaque objects to hash-tables and
  219. lh_doall() or lh_doall_arg() are typically used with a destructor callback
  220. to clean up those corresponding objects before destroying the hash table
  221. (and losing the object pointers). So some over-zealous constifications in
  222. LHASH have been relaxed so that lh_insert() does not take (nor store) the
  223. objects as "const" and the lh_doall[_arg] callback wrappers are not
  224. prototyped to have "const" restrictions on the object pointers they are
  225. given (and so aren't required to cast them away any more).
  226. [Geoff Thorpe]
  227. *) The tmdiff.h API was so ugly and minimal that our own timing utility
  228. (speed) prefers to use its own implementation. The two implementations
  229. haven't been consolidated as yet (volunteers?) but the tmdiff API has had
  230. its object type properly exposed (MS_TM) instead of casting to/from "char
  231. *". This may still change yet if someone realises MS_TM and "ms_time_***"
  232. aren't necessarily the greatest nomenclatures - but this is what was used
  233. internally to the implementation so I've used that for now.
  234. [Geoff Thorpe]
  235. *) Ensure that deprecated functions do not get compiled when
  236. OPENSSL_NO_DEPRECATED is defined. Some "openssl" subcommands and a few of
  237. the self-tests were still using deprecated key-generation functions so
  238. these have been updated also.
  239. [Geoff Thorpe]
  240. *) Reorganise PKCS#7 code to separate the digest location functionality
  241. into PKCS7_find_digest(), digest addtion into PKCS7_bio_add_digest().
  242. New function PKCS7_set_digest() to set the digest type for PKCS#7
  243. digestedData type. Add additional code to correctly generate the
  244. digestedData type and add support for this type in PKCS7 initialization
  245. functions.
  246. [Steve Henson]
  247. *) New function PKCS7_set0_type_other() this initializes a PKCS7
  248. structure of type "other".
  249. [Steve Henson]
  250. *) Fix prime generation loop in crypto/bn/bn_prime.pl by making
  251. sure the loop does correctly stop and breaking ("division by zero")
  252. modulus operations are not performed. The (pre-generated) prime
  253. table crypto/bn/bn_prime.h was already correct, but it could not be
  254. re-generated on some platforms because of the "division by zero"
  255. situation in the script.
  256. [Ralf S. Engelschall]
  257. *) Update support for ECC-based TLS ciphersuites according to
  258. draft-ietf-tls-ecc-03.txt: the KDF1 key derivation function with
  259. SHA-1 now is only used for "small" curves (where the
  260. representation of a field element takes up to 24 bytes); for
  261. larger curves, the field element resulting from ECDH is directly
  262. used as premaster secret.
  263. [Douglas Stebila (Sun Microsystems Laboratories)]
  264. *) Add code for kP+lQ timings to crypto/ec/ectest.c, and add SEC2
  265. curve secp160r1 to the tests.
  266. [Douglas Stebila (Sun Microsystems Laboratories)]
  267. *) Add the possibility to load symbols globally with DSO.
  268. [Götz Babin-Ebell <babin-ebell@trustcenter.de> via Richard Levitte]
  269. *) Add the functions ERR_set_mark() and ERR_pop_to_mark() for better
  270. control of the error stack.
  271. [Richard Levitte]
  272. *) Add support for STORE in ENGINE.
  273. [Richard Levitte]
  274. *) Add the STORE type. The intention is to provide a common interface
  275. to certificate and key stores, be they simple file-based stores, or
  276. HSM-type store, or LDAP stores, or...
  277. NOTE: The code is currently UNTESTED and isn't really used anywhere.
  278. [Richard Levitte]
  279. *) Add a generic structure called OPENSSL_ITEM. This can be used to
  280. pass a list of arguments to any function as well as provide a way
  281. for a function to pass data back to the caller.
  282. [Richard Levitte]
  283. *) Add the functions BUF_strndup() and BUF_memdup(). BUF_strndup()
  284. works like BUF_strdup() but can be used to duplicate a portion of
  285. a string. The copy gets NUL-terminated. BUF_memdup() duplicates
  286. a memory area.
  287. [Richard Levitte]
  288. *) Add the function sk_find_ex() which works like sk_find(), but will
  289. return an index to an element even if an exact match couldn't be
  290. found. The index is guaranteed to point at the element where the
  291. searched-for key would be inserted to preserve sorting order.
  292. [Richard Levitte]
  293. *) Add the function OBJ_bsearch_ex() which works like OBJ_bsearch() but
  294. takes an extra flags argument for optional functionality. Currently,
  295. the following flags are defined:
  296. OBJ_BSEARCH_VALUE_ON_NOMATCH
  297. This one gets OBJ_bsearch_ex() to return a pointer to the first
  298. element where the comparing function returns a negative or zero
  299. number.
  300. OBJ_BSEARCH_FIRST_VALUE_ON_MATCH
  301. This one gets OBJ_bsearch_ex() to return a pointer to the first
  302. element where the comparing function returns zero. This is useful
  303. if there are more than one element where the comparing function
  304. returns zero.
  305. [Richard Levitte]
  306. *) Make it possible to create self-signed certificates with 'openssl ca'
  307. in such a way that the self-signed certificate becomes part of the
  308. CA database and uses the same mechanisms for serial number generation
  309. as all other certificate signing. The new flag '-selfsign' enables
  310. this functionality. Adapt CA.sh and CA.pl.in.
  311. [Richard Levitte]
  312. *) Add functionality to check the public key of a certificate request
  313. against a given private. This is useful to check that a certificate
  314. request can be signed by that key (self-signing).
  315. [Richard Levitte]
  316. *) Make it possible to have multiple active certificates with the same
  317. subject in the CA index file. This is done only if the keyword
  318. 'unique_subject' is set to 'no' in the main CA section (default
  319. if 'CA_default') of the configuration file. The value is saved
  320. with the database itself in a separate index attribute file,
  321. named like the index file with '.attr' appended to the name.
  322. [Richard Levitte]
  323. *) Generate muti valued AVAs using '+' notation in config files for
  324. req and dirName.
  325. [Steve Henson]
  326. *) Support for nameConstraints certificate extension.
  327. [Steve Henson]
  328. *) Support for policyConstraints certificate extension.
  329. [Steve Henson]
  330. *) Support for policyMappings certificate extension.
  331. [Steve Henson]
  332. *) Make sure the default DSA_METHOD implementation only uses its
  333. dsa_mod_exp() and/or bn_mod_exp() handlers if they are non-NULL,
  334. and change its own handlers to be NULL so as to remove unnecessary
  335. indirection. This lets alternative implementations fallback to the
  336. default implementation more easily.
  337. [Geoff Thorpe]
  338. *) Support for directoryName in GeneralName related extensions
  339. in config files.
  340. [Steve Henson]
  341. *) Make it possible to link applications using Makefile.shared.
  342. Make that possible even when linking against static libraries!
  343. [Richard Levitte]
  344. *) Support for single pass processing for S/MIME signing. This now
  345. means that S/MIME signing can be done from a pipe, in addition
  346. cleartext signing (multipart/signed type) is effectively streaming
  347. and the signed data does not need to be all held in memory.
  348. This is done with a new flag PKCS7_STREAM. When this flag is set
  349. PKCS7_sign() only initializes the PKCS7 structure and the actual signing
  350. is done after the data is output (and digests calculated) in
  351. SMIME_write_PKCS7().
  352. [Steve Henson]
  353. *) Add full support for -rpath/-R, both in shared libraries and
  354. applications, at least on the platforms where it's known how
  355. to do it.
  356. [Richard Levitte]
  357. *) In crypto/ec/ec_mult.c, implement fast point multiplication with
  358. precomputation, based on wNAF splitting: EC_GROUP_precompute_mult()
  359. will now compute a table of multiples of the generator that
  360. makes subsequent invocations of EC_POINTs_mul() or EC_POINT_mul()
  361. faster (notably in the case of a single point multiplication,
  362. scalar * generator).
  363. [Nils Larsch, Bodo Moeller]
  364. *) IPv6 support for certificate extensions. The various extensions
  365. which use the IP:a.b.c.d can now take IPv6 addresses using the
  366. formats of RFC1884 2.2 . IPv6 addresses are now also displayed
  367. correctly.
  368. [Steve Henson]
  369. *) Added an ENGINE that implements RSA by performing private key
  370. exponentiations with the GMP library. The conversions to and from
  371. GMP's mpz_t format aren't optimised nor are any montgomery forms
  372. cached, and on x86 it appears OpenSSL's own performance has caught up.
  373. However there are likely to be other architectures where GMP could
  374. provide a boost. This ENGINE is not built in by default, but it can be
  375. specified at Configure time and should be accompanied by the necessary
  376. linker additions, eg;
  377. ./config -DOPENSSL_USE_GMP -lgmp
  378. [Geoff Thorpe]
  379. *) "openssl engine" will not display ENGINE/DSO load failure errors when
  380. testing availability of engines with "-t" - the old behaviour is
  381. produced by increasing the feature's verbosity with "-tt".
  382. [Geoff Thorpe]
  383. *) ECDSA routines: under certain error conditions uninitialized BN objects
  384. could be freed. Solution: make sure initialization is performed early
  385. enough. (Reported and fix supplied by Nils Larsch <nla@trustcenter.de>
  386. via PR#459)
  387. [Lutz Jaenicke]
  388. *) Key-generation can now be implemented in RSA_METHOD, DSA_METHOD
  389. and DH_METHOD (eg. by ENGINE implementations) to override the normal
  390. software implementations. For DSA and DH, parameter generation can
  391. also be overriden by providing the appropriate method callbacks.
  392. [Geoff Thorpe]
  393. *) Change the "progress" mechanism used in key-generation and
  394. primality testing to functions that take a new BN_GENCB pointer in
  395. place of callback/argument pairs. The new API functions have "_ex"
  396. postfixes and the older functions are reimplemented as wrappers for
  397. the new ones. The OPENSSL_NO_DEPRECATED symbol can be used to hide
  398. declarations of the old functions to help (graceful) attempts to
  399. migrate to the new functions. Also, the new key-generation API
  400. functions operate on a caller-supplied key-structure and return
  401. success/failure rather than returning a key or NULL - this is to
  402. help make "keygen" another member function of RSA_METHOD etc.
  403. Example for using the new callback interface:
  404. int (*my_callback)(int a, int b, BN_GENCB *cb) = ...;
  405. void *my_arg = ...;
  406. BN_GENCB my_cb;
  407. BN_GENCB_set(&my_cb, my_callback, my_arg);
  408. return BN_is_prime_ex(some_bignum, BN_prime_checks, NULL, &cb);
  409. /* For the meaning of a, b in calls to my_callback(), see the
  410. * documentation of the function that calls the callback.
  411. * cb will point to my_cb; my_arg can be retrieved as cb->arg.
  412. * my_callback should return 1 if it wants BN_is_prime_ex()
  413. * to continue, or 0 to stop.
  414. */
  415. [Geoff Thorpe]
  416. *) Change the ZLIB compression method to be stateful, and make it
  417. available to TLS with the number defined in
  418. draft-ietf-tls-compression-04.txt.
  419. [Richard Levitte]
  420. *) Add the ASN.1 structures and functions for CertificatePair, which
  421. is defined as follows (according to X.509_4thEditionDraftV6.pdf):
  422. CertificatePair ::= SEQUENCE {
  423. forward [0] Certificate OPTIONAL,
  424. reverse [1] Certificate OPTIONAL,
  425. -- at least one of the pair shall be present -- }
  426. Also implement the PEM functions to read and write certificate
  427. pairs, and defined the PEM tag as "CERTIFICATE PAIR".
  428. This needed to be defined, mostly for the sake of the LDAP
  429. attribute crossCertificatePair, but may prove useful elsewhere as
  430. well.
  431. [Richard Levitte]
  432. *) Make it possible to inhibit symlinking of shared libraries in
  433. Makefile.shared, for Cygwin's sake.
  434. [Richard Levitte]
  435. *) Extend the BIGNUM API by creating a function
  436. void BN_set_negative(BIGNUM *a, int neg);
  437. and a macro that behave like
  438. int BN_is_negative(const BIGNUM *a);
  439. to avoid the need to access 'a->neg' directly in applications.
  440. [Nils Larsch]
  441. *) Implement fast modular reduction for pseudo-Mersenne primes
  442. used in NIST curves (crypto/bn/bn_nist.c, crypto/ec/ecp_nist.c).
  443. EC_GROUP_new_curve_GFp() will now automatically use this
  444. if applicable.
  445. [Nils Larsch <nla@trustcenter.de>]
  446. *) Add new lock type (CRYPTO_LOCK_BN).
  447. [Bodo Moeller]
  448. *) Change the ENGINE framework to automatically load engines
  449. dynamically from specific directories unless they could be
  450. found to already be built in or loaded. Move all the
  451. current engines except for the cryptodev one to a new
  452. directory engines/.
  453. The engines in engines/ are built as shared libraries if
  454. the "shared" options was given to ./Configure or ./config.
  455. Otherwise, they are inserted in libcrypto.a.
  456. /usr/local/ssl/engines is the default directory for dynamic
  457. engines, but that can be overriden at configure time through
  458. the usual use of --prefix and/or --openssldir, and at run
  459. time with the environment variable OPENSSL_ENGINES.
  460. [Geoff Thorpe and Richard Levitte]
  461. *) Add Makefile.shared, a helper makefile to build shared
  462. libraries. Addapt Makefile.org.
  463. [Richard Levitte]
  464. *) Add version info to Win32 DLLs.
  465. [Peter 'Luna' Runestig" <peter@runestig.com>]
  466. *) Add new 'medium level' PKCS#12 API. Certificates and keys
  467. can be added using this API to created arbitrary PKCS#12
  468. files while avoiding the low level API.
  469. New options to PKCS12_create(), key or cert can be NULL and
  470. will then be omitted from the output file. The encryption
  471. algorithm NIDs can be set to -1 for no encryption, the mac
  472. iteration count can be set to 0 to omit the mac.
  473. Enhance pkcs12 utility by making the -nokeys and -nocerts
  474. options work when creating a PKCS#12 file. New option -nomac
  475. to omit the mac, NONE can be set for an encryption algorithm.
  476. New code is modified to use the enhanced PKCS12_create()
  477. instead of the low level API.
  478. [Steve Henson]
  479. *) Extend ASN1 encoder to support indefinite length constructed
  480. encoding. This can output sequences tags and octet strings in
  481. this form. Modify pk7_asn1.c to support indefinite length
  482. encoding. This is experimental and needs additional code to
  483. be useful, such as an ASN1 bio and some enhanced streaming
  484. PKCS#7 code.
  485. Extend template encode functionality so that tagging is passed
  486. down to the template encoder.
  487. [Steve Henson]
  488. *) Let 'openssl req' fail if an argument to '-newkey' is not
  489. recognized instead of using RSA as a default.
  490. [Bodo Moeller]
  491. *) Add support for ECC-based ciphersuites from draft-ietf-tls-ecc-01.txt.
  492. As these are not official, they are not included in "ALL";
  493. the "ECCdraft" ciphersuite group alias can be used to select them.
  494. [Vipul Gupta and Sumit Gupta (Sun Microsystems Laboratories)]
  495. *) Add ECDH engine support.
  496. [Nils Gura and Douglas Stebila (Sun Microsystems Laboratories)]
  497. *) Add ECDH in new directory crypto/ecdh/.
  498. [Douglas Stebila (Sun Microsystems Laboratories)]
  499. *) Let BN_rand_range() abort with an error after 100 iterations
  500. without success (which indicates a broken PRNG).
  501. [Bodo Moeller]
  502. *) Change BN_mod_sqrt() so that it verifies that the input value
  503. is really the square of the return value. (Previously,
  504. BN_mod_sqrt would show GIGO behaviour.)
  505. [Bodo Moeller]
  506. *) Add named elliptic curves over binary fields from X9.62, SECG,
  507. and WAP/WTLS; add OIDs that were still missing.
  508. [Sheueling Chang Shantz and Douglas Stebila
  509. (Sun Microsystems Laboratories)]
  510. *) Extend the EC library for elliptic curves over binary fields
  511. (new files ec2_smpl.c, ec2_smpt.c, ec2_mult.c in crypto/ec/).
  512. New EC_METHOD:
  513. EC_GF2m_simple_method
  514. New API functions:
  515. EC_GROUP_new_curve_GF2m
  516. EC_GROUP_set_curve_GF2m
  517. EC_GROUP_get_curve_GF2m
  518. EC_POINT_set_affine_coordinates_GF2m
  519. EC_POINT_get_affine_coordinates_GF2m
  520. EC_POINT_set_compressed_coordinates_GF2m
  521. Point compression for binary fields is disabled by default for
  522. patent reasons (compile with OPENSSL_EC_BIN_PT_COMP defined to
  523. enable it).
  524. As binary polynomials are represented as BIGNUMs, various members
  525. of the EC_GROUP and EC_POINT data structures can be shared
  526. between the implementations for prime fields and binary fields;
  527. the above ..._GF2m functions (except for EX_GROUP_new_curve_GF2m)
  528. are essentially identical to their ..._GFp counterparts.
  529. (For simplicity, the '..._GFp' prefix has been dropped from
  530. various internal method names.)
  531. An internal 'field_div' method (similar to 'field_mul' and
  532. 'field_sqr') has been added; this is used only for binary fields.
  533. [Sheueling Chang Shantz and Douglas Stebila
  534. (Sun Microsystems Laboratories)]
  535. *) Optionally dispatch EC_POINT_mul(), EC_POINT_precompute_mult()
  536. through methods ('mul', 'precompute_mult').
  537. The generic implementations (now internally called 'ec_wNAF_mul'
  538. and 'ec_wNAF_precomputed_mult') remain the default if these
  539. methods are undefined.
  540. [Sheueling Chang Shantz and Douglas Stebila
  541. (Sun Microsystems Laboratories)]
  542. *) New function EC_GROUP_get_degree, which is defined through
  543. EC_METHOD. For curves over prime fields, this returns the bit
  544. length of the modulus.
  545. [Sheueling Chang Shantz and Douglas Stebila
  546. (Sun Microsystems Laboratories)]
  547. *) New functions EC_GROUP_dup, EC_POINT_dup.
  548. (These simply call ..._new and ..._copy).
  549. [Sheueling Chang Shantz and Douglas Stebila
  550. (Sun Microsystems Laboratories)]
  551. *) Add binary polynomial arithmetic software in crypto/bn/bn_gf2m.c.
  552. Polynomials are represented as BIGNUMs (where the sign bit is not
  553. used) in the following functions [macros]:
  554. BN_GF2m_add
  555. BN_GF2m_sub [= BN_GF2m_add]
  556. BN_GF2m_mod [wrapper for BN_GF2m_mod_arr]
  557. BN_GF2m_mod_mul [wrapper for BN_GF2m_mod_mul_arr]
  558. BN_GF2m_mod_sqr [wrapper for BN_GF2m_mod_sqr_arr]
  559. BN_GF2m_mod_inv
  560. BN_GF2m_mod_exp [wrapper for BN_GF2m_mod_exp_arr]
  561. BN_GF2m_mod_sqrt [wrapper for BN_GF2m_mod_sqrt_arr]
  562. BN_GF2m_mod_solve_quad [wrapper for BN_GF2m_mod_solve_quad_arr]
  563. BN_GF2m_cmp [= BN_ucmp]
  564. (Note that only the 'mod' functions are actually for fields GF(2^m).
  565. BN_GF2m_add() is misnomer, but this is for the sake of consistency.)
  566. For some functions, an the irreducible polynomial defining a
  567. field can be given as an 'unsigned int[]' with strictly
  568. decreasing elements giving the indices of those bits that are set;
  569. i.e., p[] represents the polynomial
  570. f(t) = t^p[0] + t^p[1] + ... + t^p[k]
  571. where
  572. p[0] > p[1] > ... > p[k] = 0.
  573. This applies to the following functions:
  574. BN_GF2m_mod_arr
  575. BN_GF2m_mod_mul_arr
  576. BN_GF2m_mod_sqr_arr
  577. BN_GF2m_mod_inv_arr [wrapper for BN_GF2m_mod_inv]
  578. BN_GF2m_mod_div_arr [wrapper for BN_GF2m_mod_div]
  579. BN_GF2m_mod_exp_arr
  580. BN_GF2m_mod_sqrt_arr
  581. BN_GF2m_mod_solve_quad_arr
  582. BN_GF2m_poly2arr
  583. BN_GF2m_arr2poly
  584. Conversion can be performed by the following functions:
  585. BN_GF2m_poly2arr
  586. BN_GF2m_arr2poly
  587. bntest.c has additional tests for binary polynomial arithmetic.
  588. Two implementations for BN_GF2m_mod_div() are available.
  589. The default algorithm simply uses BN_GF2m_mod_inv() and
  590. BN_GF2m_mod_mul(). The alternative algorithm is compiled in only
  591. if OPENSSL_SUN_GF2M_DIV is defined (patent pending; read the
  592. copyright notice in crypto/bn/bn_gf2m.c before enabling it).
  593. [Sheueling Chang Shantz and Douglas Stebila
  594. (Sun Microsystems Laboratories)]
  595. *) Add new error code 'ERR_R_DISABLED' that can be used when some
  596. functionality is disabled at compile-time.
  597. [Douglas Stebila <douglas.stebila@sun.com>]
  598. *) Change default behaviour of 'openssl asn1parse' so that more
  599. information is visible when viewing, e.g., a certificate:
  600. Modify asn1_parse2 (crypto/asn1/asn1_par.c) so that in non-'dump'
  601. mode the content of non-printable OCTET STRINGs is output in a
  602. style similar to INTEGERs, but with '[HEX DUMP]' prepended to
  603. avoid the appearance of a printable string.
  604. [Nils Larsch <nla@trustcenter.de>]
  605. *) Add 'asn1_flag' and 'asn1_form' member to EC_GROUP with access
  606. functions
  607. EC_GROUP_set_asn1_flag()
  608. EC_GROUP_get_asn1_flag()
  609. EC_GROUP_set_point_conversion_form()
  610. EC_GROUP_get_point_conversion_form()
  611. These control ASN1 encoding details:
  612. - Curves (i.e., groups) are encoded explicitly unless asn1_flag
  613. has been set to OPENSSL_EC_NAMED_CURVE.
  614. - Points are encoded in uncompressed form by default; options for
  615. asn1_for are as for point2oct, namely
  616. POINT_CONVERSION_COMPRESSED
  617. POINT_CONVERSION_UNCOMPRESSED
  618. POINT_CONVERSION_HYBRID
  619. Also add 'seed' and 'seed_len' members to EC_GROUP with access
  620. functions
  621. EC_GROUP_set_seed()
  622. EC_GROUP_get0_seed()
  623. EC_GROUP_get_seed_len()
  624. This is used only for ASN1 purposes (so far).
  625. [Nils Larsch <nla@trustcenter.de>]
  626. *) Add 'field_type' member to EC_METHOD, which holds the NID
  627. of the appropriate field type OID. The new function
  628. EC_METHOD_get_field_type() returns this value.
  629. [Nils Larsch <nla@trustcenter.de>]
  630. *) Add functions
  631. EC_POINT_point2bn()
  632. EC_POINT_bn2point()
  633. EC_POINT_point2hex()
  634. EC_POINT_hex2point()
  635. providing useful interfaces to EC_POINT_point2oct() and
  636. EC_POINT_oct2point().
  637. [Nils Larsch <nla@trustcenter.de>]
  638. *) Change internals of the EC library so that the functions
  639. EC_GROUP_set_generator()
  640. EC_GROUP_get_generator()
  641. EC_GROUP_get_order()
  642. EC_GROUP_get_cofactor()
  643. are implemented directly in crypto/ec/ec_lib.c and not dispatched
  644. to methods, which would lead to unnecessary code duplication when
  645. adding different types of curves.
  646. [Nils Larsch <nla@trustcenter.de> with input by Bodo Moeller]
  647. *) Implement compute_wNAF (crypto/ec/ec_mult.c) without BIGNUM
  648. arithmetic, and such that modified wNAFs are generated
  649. (which avoid length expansion in many cases).
  650. [Bodo Moeller]
  651. *) Add a function EC_GROUP_check_discriminant() (defined via
  652. EC_METHOD) that verifies that the curve discriminant is non-zero.
  653. Add a function EC_GROUP_check() that makes some sanity tests
  654. on a EC_GROUP, its generator and order. This includes
  655. EC_GROUP_check_discriminant().
  656. [Nils Larsch <nla@trustcenter.de>]
  657. *) Add ECDSA in new directory crypto/ecdsa/.
  658. Add applications 'openssl ecparam' and 'openssl ecdsa'
  659. (these are based on 'openssl dsaparam' and 'openssl dsa').
  660. ECDSA support is also included in various other files across the
  661. library. Most notably,
  662. - 'openssl req' now has a '-newkey ecdsa:file' option;
  663. - EVP_PKCS82PKEY (crypto/evp/evp_pkey.c) now can handle ECDSA;
  664. - X509_PUBKEY_get (crypto/asn1/x_pubkey.c) and
  665. d2i_PublicKey (crypto/asn1/d2i_pu.c) have been modified to make
  666. them suitable for ECDSA where domain parameters must be
  667. extracted before the specific public key;
  668. - ECDSA engine support has been added.
  669. [Nils Larsch <nla@trustcenter.de>]
  670. *) Include some named elliptic curves, and add OIDs from X9.62,
  671. SECG, and WAP/WTLS. Each curve can be obtained from the new
  672. function
  673. EC_GROUP_new_by_curve_name(),
  674. and the list of available named curves can be obtained with
  675. EC_get_builtin_curves().
  676. Also add a 'curve_name' member to EC_GROUP objects, which can be
  677. accessed via
  678. EC_GROUP_set_curve_name()
  679. EC_GROUP_get_curve_name()
  680. [Nils Larsch <larsch@trustcenter.de, Bodo Moeller]
  681. *) Remove a few calls to bn_wexpand() in BN_sqr() (the one in there
  682. was actually never needed) and in BN_mul(). The removal in BN_mul()
  683. required a small change in bn_mul_part_recursive() and the addition
  684. of the functions bn_cmp_part_words(), bn_sub_part_words() and
  685. bn_add_part_words(), which do the same thing as bn_cmp_words(),
  686. bn_sub_words() and bn_add_words() except they take arrays with
  687. differing sizes.
  688. [Richard Levitte]
  689. Changes between 0.9.7g and 0.9.7h [11 Oct 2005]
  690. *) Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
  691. (part of SSL_OP_ALL). This option used to disable the
  692. countermeasure against man-in-the-middle protocol-version
  693. rollback in the SSL 2.0 server implementation, which is a bad
  694. idea.
  695. [Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
  696. for Information Security, National Institute of Advanced Industrial
  697. Science and Technology [AIST], Japan)]
  698. *) Minimal support for X9.31 signatures and PSS padding modes. This is
  699. mainly for FIPS compliance and not fully integrated at this stage.
  700. [Steve Henson]
  701. *) For DSA signing, unless DSA_FLAG_NO_EXP_CONSTTIME is set, perform
  702. the exponentiation using a fixed-length exponent. (Otherwise,
  703. the information leaked through timing could expose the secret key
  704. after many signatures; cf. Bleichenbacher's attack on DSA with
  705. biased k.)
  706. [Bodo Moeller]
  707. *) Make a new fixed-window mod_exp implementation the default for
  708. RSA, DSA, and DH private-key operations so that the sequence of
  709. squares and multiplies and the memory access pattern are
  710. independent of the particular secret key. This will mitigate
  711. cache-timing and potential related attacks.
  712. BN_mod_exp_mont_consttime() is the new exponentiation implementation,
  713. and this is automatically used by BN_mod_exp_mont() if the new flag
  714. BN_FLG_EXP_CONSTTIME is set for the exponent. RSA, DSA, and DH
  715. will use this BN flag for private exponents unless the flag
  716. RSA_FLAG_NO_EXP_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME, or
  717. DH_FLAG_NO_EXP_CONSTTIME, respectively, is set.
  718. [Matthew D Wood (Intel Corp), with some changes by Bodo Moeller]
  719. *) Change the client implementation for SSLv23_method() and
  720. SSLv23_client_method() so that is uses the SSL 3.0/TLS 1.0
  721. Client Hello message format if the SSL_OP_NO_SSLv2 option is set.
  722. (Previously, the SSL 2.0 backwards compatible Client Hello
  723. message format would be used even with SSL_OP_NO_SSLv2.)
  724. [Bodo Moeller]
  725. *) Add support for smime-type MIME parameter in S/MIME messages which some
  726. clients need.
  727. [Steve Henson]
  728. *) New function BN_MONT_CTX_set_locked() to set montgomery parameters in
  729. a threadsafe manner. Modify rsa code to use new function and add calls
  730. to dsa and dh code (which had race conditions before).
  731. [Steve Henson]
  732. *) Include the fixed error library code in the C error file definitions
  733. instead of fixing them up at runtime. This keeps the error code
  734. structures constant.
  735. [Steve Henson]
  736. Changes between 0.9.7f and 0.9.7g [11 Apr 2005]
  737. [NB: OpenSSL 0.9.7h and later 0.9.7 patch levels were released after
  738. OpenSSL 0.9.8.]
  739. *) Fixes for newer kerberos headers. NB: the casts are needed because
  740. the 'length' field is signed on one version and unsigned on another
  741. with no (?) obvious way to tell the difference, without these VC++
  742. complains. Also the "definition" of FAR (blank) is no longer included
  743. nor is the error ENOMEM. KRB5_PRIVATE has to be set to 1 to pick up
  744. some needed definitions.
  745. [Steve Henson]
  746. *) Undo Cygwin change.
  747. [Ulf Möller]
  748. *) Added support for proxy certificates according to RFC 3820.
  749. Because they may be a security thread to unaware applications,
  750. they must be explicitely allowed in run-time. See
  751. docs/HOWTO/proxy_certificates.txt for further information.
  752. [Richard Levitte]
  753. Changes between 0.9.7e and 0.9.7f [22 Mar 2005]
  754. *) Use (SSL_RANDOM_VALUE - 4) bytes of pseudo random data when generating
  755. server and client random values. Previously
  756. (SSL_RANDOM_VALUE - sizeof(time_t)) would be used which would result in
  757. less random data when sizeof(time_t) > 4 (some 64 bit platforms).
  758. This change has negligible security impact because:
  759. 1. Server and client random values still have 24 bytes of pseudo random
  760. data.
  761. 2. Server and client random values are sent in the clear in the initial
  762. handshake.
  763. 3. The master secret is derived using the premaster secret (48 bytes in
  764. size for static RSA ciphersuites) as well as client server and random
  765. values.
  766. The OpenSSL team would like to thank the UK NISCC for bringing this issue
  767. to our attention.
  768. [Stephen Henson, reported by UK NISCC]
  769. *) Use Windows randomness collection on Cygwin.
  770. [Ulf Möller]
  771. *) Fix hang in EGD/PRNGD query when communication socket is closed
  772. prematurely by EGD/PRNGD.
  773. [Darren Tucker <dtucker@zip.com.au> via Lutz Jänicke, resolves #1014]
  774. *) Prompt for pass phrases when appropriate for PKCS12 input format.
  775. [Steve Henson]
  776. *) Back-port of selected performance improvements from development
  777. branch, as well as improved support for PowerPC platforms.
  778. [Andy Polyakov]
  779. *) Add lots of checks for memory allocation failure, error codes to indicate
  780. failure and freeing up memory if a failure occurs.
  781. [Nauticus Networks SSL Team <openssl@nauticusnet.com>, Steve Henson]
  782. *) Add new -passin argument to dgst.
  783. [Steve Henson]
  784. *) Perform some character comparisons of different types in X509_NAME_cmp:
  785. this is needed for some certificates that reencode DNs into UTF8Strings
  786. (in violation of RFC3280) and can't or wont issue name rollover
  787. certificates.
  788. [Steve Henson]
  789. *) Make an explicit check during certificate validation to see that
  790. the CA setting in each certificate on the chain is correct. As a
  791. side effect always do the following basic checks on extensions,
  792. not just when there's an associated purpose to the check:
  793. - if there is an unhandled critical extension (unless the user
  794. has chosen to ignore this fault)
  795. - if the path length has been exceeded (if one is set at all)
  796. - that certain extensions fit the associated purpose (if one has
  797. been given)
  798. [Richard Levitte]
  799. Changes between 0.9.7d and 0.9.7e [25 Oct 2004]
  800. *) Avoid a race condition when CRLs are checked in a multi threaded
  801. environment. This would happen due to the reordering of the revoked
  802. entries during signature checking and serial number lookup. Now the
  803. encoding is cached and the serial number sort performed under a lock.
  804. Add new STACK function sk_is_sorted().
  805. [Steve Henson]
  806. *) Add Delta CRL to the extension code.
  807. [Steve Henson]
  808. *) Various fixes to s3_pkt.c so alerts are sent properly.
  809. [David Holmes <d.holmes@f5.com>]
  810. *) Reduce the chances of duplicate issuer name and serial numbers (in
  811. violation of RFC3280) using the OpenSSL certificate creation utilities.
  812. This is done by creating a random 64 bit value for the initial serial
  813. number when a serial number file is created or when a self signed
  814. certificate is created using 'openssl req -x509'. The initial serial
  815. number file is created using 'openssl x509 -next_serial' in CA.pl
  816. rather than being initialized to 1.
  817. [Steve Henson]
  818. Changes between 0.9.7c and 0.9.7d [17 Mar 2004]
  819. *) Fix null-pointer assignment in do_change_cipher_spec() revealed
  820. by using the Codenomicon TLS Test Tool (CAN-2004-0079)
  821. [Joe Orton, Steve Henson]
  822. *) Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites
  823. (CAN-2004-0112)
  824. [Joe Orton, Steve Henson]
  825. *) Make it possible to have multiple active certificates with the same
  826. subject in the CA index file. This is done only if the keyword
  827. 'unique_subject' is set to 'no' in the main CA section (default
  828. if 'CA_default') of the configuration file. The value is saved
  829. with the database itself in a separate index attribute file,
  830. named like the index file with '.attr' appended to the name.
  831. [Richard Levitte]
  832. *) X509 verify fixes. Disable broken certificate workarounds when
  833. X509_V_FLAGS_X509_STRICT is set. Check CRL issuer has cRLSign set if
  834. keyUsage extension present. Don't accept CRLs with unhandled critical
  835. extensions: since verify currently doesn't process CRL extensions this
  836. rejects a CRL with *any* critical extensions. Add new verify error codes
  837. for these cases.
  838. [Steve Henson]
  839. *) When creating an OCSP nonce use an OCTET STRING inside the extnValue.
  840. A clarification of RFC2560 will require the use of OCTET STRINGs and
  841. some implementations cannot handle the current raw format. Since OpenSSL
  842. copies and compares OCSP nonces as opaque blobs without any attempt at
  843. parsing them this should not create any compatibility issues.
  844. [Steve Henson]
  845. *) New md flag EVP_MD_CTX_FLAG_REUSE this allows md_data to be reused when
  846. calling EVP_MD_CTX_copy_ex() to avoid calling OPENSSL_malloc(). Without
  847. this HMAC (and other) operations are several times slower than OpenSSL
  848. < 0.9.7.
  849. [Steve Henson]
  850. *) Print out GeneralizedTime and UTCTime in ASN1_STRING_print_ex().
  851. [Peter Sylvester <Peter.Sylvester@EdelWeb.fr>]
  852. *) Use the correct content when signing type "other".
  853. [Steve Henson]
  854. Changes between 0.9.7b and 0.9.7c [30 Sep 2003]
  855. *) Fix various bugs revealed by running the NISCC test suite:
  856. Stop out of bounds reads in the ASN1 code when presented with
  857. invalid tags (CAN-2003-0543 and CAN-2003-0544).
  858. Free up ASN1_TYPE correctly if ANY type is invalid (CAN-2003-0545).
  859. If verify callback ignores invalid public key errors don't try to check
  860. certificate signature with the NULL public key.
  861. [Steve Henson]
  862. *) New -ignore_err option in ocsp application to stop the server
  863. exiting on the first error in a request.
  864. [Steve Henson]
  865. *) In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
  866. if the server requested one: as stated in TLS 1.0 and SSL 3.0
  867. specifications.
  868. [Steve Henson]
  869. *) In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional
  870. extra data after the compression methods not only for TLS 1.0
  871. but also for SSL 3.0 (as required by the specification).
  872. [Bodo Moeller; problem pointed out by Matthias Loepfe]
  873. *) Change X509_certificate_type() to mark the key as exported/exportable
  874. when it's 512 *bits* long, not 512 bytes.
  875. [Richard Levitte]
  876. *) Change AES_cbc_encrypt() so it outputs exact multiple of
  877. blocks during encryption.
  878. [Richard Levitte]
  879. *) Various fixes to base64 BIO and non blocking I/O. On write
  880. flushes were not handled properly if the BIO retried. On read
  881. data was not being buffered properly and had various logic bugs.
  882. This also affects blocking I/O when the data being decoded is a
  883. certain size.
  884. [Steve Henson]
  885. *) Various S/MIME bugfixes and compatibility changes:
  886. output correct application/pkcs7 MIME type if
  887. PKCS7_NOOLDMIMETYPE is set. Tolerate some broken signatures.
  888. Output CR+LF for EOL if PKCS7_CRLFEOL is set (this makes opening
  889. of files as .eml work). Correctly handle very long lines in MIME
  890. parser.
  891. [Steve Henson]
  892. Changes between 0.9.7a and 0.9.7b [10 Apr 2003]
  893. *) Countermeasure against the Klima-Pokorny-Rosa extension of
  894. Bleichbacher's attack on PKCS #1 v1.5 padding: treat
  895. a protocol version number mismatch like a decryption error
  896. in ssl3_get_client_key_exchange (ssl/s3_srvr.c).
  897. [Bodo Moeller]
  898. *) Turn on RSA blinding by default in the default implementation
  899. to avoid a timing attack. Applications that don't want it can call
  900. RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING.
  901. They would be ill-advised to do so in most cases.
  902. [Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller]
  903. *) Change RSA blinding code so that it works when the PRNG is not
  904. seeded (in this case, the secret RSA exponent is abused as
  905. an unpredictable seed -- if it is not unpredictable, there
  906. is no point in blinding anyway). Make RSA blinding thread-safe
  907. by remembering the creator's thread ID in rsa->blinding and
  908. having all other threads use local one-time blinding factors
  909. (this requires more computation than sharing rsa->blinding, but
  910. avoids excessive locking; and if an RSA object is not shared
  911. between threads, blinding will still be very fast).
  912. [Bodo Moeller]
  913. *) Fixed a typo bug that would cause ENGINE_set_default() to set an
  914. ENGINE as defaults for all supported algorithms irrespective of
  915. the 'flags' parameter. 'flags' is now honoured, so applications
  916. should make sure they are passing it correctly.
  917. [Geoff Thorpe]
  918. *) Target "mingw" now allows native Windows code to be generated in
  919. the Cygwin environment as well as with the MinGW compiler.
  920. [Ulf Moeller]
  921. Changes between 0.9.7 and 0.9.7a [19 Feb 2003]
  922. *) In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked
  923. via timing by performing a MAC computation even if incorrrect
  924. block cipher padding has been found. This is a countermeasure

Large files files are truncated, but you can click here to view the full file