Skip to content
CHANGES 204 KiB
Newer Older
 OpenSSL CHANGES
 Changes between 0.9.6 and 0.9.7  [xx XXX 2001]
     Both OpenSSL 0.9.6a (bugfix release, 5 Apr 2001) and OpenSSL 0.9.7
     are based on OpenSSL 0.9.6.  
     Change log entries are tagged as follows:
         -) applies to 0.9.6a (/0.9.6b) only
         *) applies to 0.9.6a (/0.9.6b) and 0.9.7
  +) Changes to the "openssl engine" utility to include;
     - verbosity levels ('-v', '-vv', and '-vvv') that provide information
       about an ENGINE's available control commands.
     - executing control commands from command line arguments using the
       '-pre' and '-post' switches. '-post' is only used if '-t' is
       specified and the ENGINE is successfully initialised. The syntax for
       the individual commands are colon-separated, for example;
	 openssl engine chil -pre FORK_CHECK:0 -pre SO_PATH:/lib/test.so
     [Geoff]

  +) New dynamic control command support for ENGINEs. ENGINEs can now
     declare their own commands (numbers), names (strings), descriptions,
     and input types for run-time discovery by calling applications. A
     subset of these commands are implicitly classed as "executable"
     depending on their input type, and only these can be invoked through
     the new string-based API function ENGINE_ctrl_cmd_string(). (Eg. this
     can be based on user input, config files, etc). The distinction is
     that "executable" commands cannot return anything other than a boolean
     result and can only support numeric or string input, whereas some
     discoverable commands may only be for direct use through
     ENGINE_ctrl(), eg. supporting the exchange of binary data, function
     pointers, or other custom uses. The "executable" commands are to
     support parameterisations of ENGINE behaviour that can be
     unambiguously defined by ENGINEs and used consistently across any
     OpenSSL-based application. Commands have been added to all the
     existing hardware-supporting ENGINEs, noticeably "SO_PATH" to allow
     control over shared-library paths without source code alterations.
     [Geoff]

  +) Changed all ENGINE implementations to dynamically allocate their
     ENGINEs rather than declaring them statically. Apart from this being
     necessary with the removal of the ENGINE_FLAGS_MALLOCED distinction,
     this also allows the implementations to compile without using the
     internal engine_int.h header.
     [Geoff]

  +) Minor adjustment to "rand" code. RAND_get_rand_method() now returns a
     'const' value. Any code that should be able to modify a RAND_METHOD
     should already have non-const pointers to it (ie. they should only
     modify their own ones).
     [Geoff]

  +) Made a variety of little tweaks to the ENGINE code.
     - "atalla" and "ubsec" string definitions were moved from header files
       to C code. "nuron" string definitions were placed in variables
       rather than hard-coded - allowing parameterisation of these values
       later on via ctrl() commands.
     - Removed unused "#if 0"'d code.
     - Fixed engine list iteration code so it uses ENGINE_free() to release
       structural references.
     - Constified the RAND_METHOD element of ENGINE structures.
     - Constified various get/set functions as appropriate and added
       missing functions (including a catch-all ENGINE_cpy that duplicates
       all ENGINE values onto a new ENGINE except reference counts/state).
     - Removed NULL parameter checks in get/set functions. Setting a method
       or function to NULL is a way of cancelling out a previously set
       value.  Passing a NULL ENGINE parameter is just plain stupid anyway
       and doesn't justify the extra error symbols and code.
     - Deprecate the ENGINE_FLAGS_MALLOCED define and move the area for
       flags from engine_int.h to engine.h.
     - Changed prototypes for ENGINE handler functions (init(), finish(),
       ctrl(), key-load functions, etc) to take an (ENGINE*) parameter.
     [Geoff]

Bodo Möller's avatar
Bodo Möller committed
  *) Move 'if (!initialized) RAND_poll()' into regions protected by
     CRYPTO_LOCK_RAND.  This is not strictly necessary, but avoids
Bodo Möller's avatar
Bodo Möller committed
     having multiple threads call RAND_poll() concurrently.
Bodo Möller's avatar
Bodo Möller committed
     [Bodo Moeller]

  *) In crypto/rand/md_rand.c, replace 'add_do_not_lock' flag by a
     combination of a flag and a thread ID variable.
     Otherwise while one thread is in ssleay_rand_bytes (which sets the
     flag), *other* threads can enter ssleay_add_bytes without obeying
     the CRYPTO_LOCK_RAND lock (and may even illegaly release the lock
     that they do not hold after the first thread unsets add_do_not_lock).
     [Bodo Moeller]

  +) Implement binary inversion algorithm for BN_mod_inverse in addition
     to the algorithm using long divison.  The binary algorithm can be
     used only if the modulus is odd.  On 32-bit systems, it is faster
     only for relatively small moduli (roughly 20-30% for 128-bit moduli,
     roughly 5-15% for 256-bit moduli), so we use it only for moduli
     up to 450 bits.  In 64-bit environments, the binary algorithm
     appears to be advantageous for much longer moduli; here we use it
     for moduli up to 2048 bits.
  *) Change bctest again: '-x' expressions are not available in all
     versions of 'test'.
     [Bodo Moeller]

  -) OpenSSL 0.9.6a released [5 Apr 2001]

  *) Fix a couple of memory leaks in PKCS7_dataDecode()
     [Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>]

  *) Change Configure and Makefiles to provide EXE_EXT, which will contain
     the default extension for executables, if any.  Also, make the perl
     scripts that use symlink() to test if it really exists and use "cp"
     if it doesn't.  All this made OpenSSL compilable and installable in
     CygWin.
     [Richard Levitte]

  +) Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code
     could not support the combine flag in choice fields.
     [Steve Henson]

  -) Fix for asn1_GetSequence() for indefinite length constructed data.
     If SEQUENCE is length is indefinite just set c->slen to the total
     amount of data available.
     [Steve Henson, reported by shige@FreeBSD.org]
     [This change does not apply to 0.9.7.]

  *) Change bctest to avoid here-documents inside command substitution
     (workaround for FreeBSD /bin/sh bug).
Bodo Möller's avatar
Bodo Möller committed
     For compatibility with Ultrix, avoid shell functions (introduced
     in the bctest version that searches along $PATH).
  *) Rename 'des_encrypt' to 'des_encrypt1'.  This avoids the clashes
     with des_encrypt() defined on some operating systems, like Solaris
     and UnixWare.
     [Richard Levitte]

Ulf Möller's avatar
Ulf Möller committed
  *) Check the result of RSA-CRT (see D. Boneh, R. DeMillo, R. Lipton:
     On the Importance of Eliminating Errors in Cryptographic
     Computations, J. Cryptology 14 (2001) 2, 101-119,
     http://theory.stanford.edu/~dabo/papers/faults.ps.gz).
     [Ulf Moeller]
Ulf Möller's avatar
Ulf Möller committed
  
  *) MIPS assembler BIGNUM division bug fix. 
Ulf Möller's avatar
Ulf Möller committed
     [Andy Polyakov]

Ulf Möller's avatar
Ulf Möller committed
  *) Disabled incorrect Alpha assembler code.
     [Richard Levitte]

  -) Fix PKCS#7 decode routines so they correctly update the length
     after reading an EOC for the EXPLICIT tag.
     [Steve Henson]
     [This change does not apply to 0.9.7.]

  *) Fix bug in PKCS#12 key generation routines. This was triggered
     if a 3DES key was generated with a 0 initial byte. Include
     PKCS12_BROKEN_KEYGEN compilation option to retain the old
     (but broken) behaviour.
     [Steve Henson]

  *) Enhance bctest to search for a working bc along $PATH and print
     it when found.
     [Tim Rice <tim@multitalents.net> via Richard Levitte]

  +) Add a 'copy_extensions' option to the 'ca' utility. This copies
     extensions from a certificate request to the certificate.
     [Steve Henson]

  +) Allow multiple 'certopt' and 'nameopt' options to be separated
Dr. Stephen Henson's avatar
 
Dr. Stephen Henson committed
     by commas. Add 'namopt' and 'certopt' options to the 'ca' config
     file: this allows the display of the certificate about to be
     signed to be customised, to allow certain fields to be included
     or excluded and extension details. The old system didn't display
     multicharacter strings properly, omitted fields not in the policy
     and couldn't display additional details such as extensions.
     [Steve Henson]

  *) Fix memory leaks in err.c: free err_data string if necessary;
     don't write to the wrong index in ERR_set_error_data.
Bodo Möller's avatar
Bodo Möller committed
     [Bodo Moeller]

  +) Function EC_POINTs_mul for simultaneous scalar multiplication
     of an arbitrary number of elliptic curve points, optionally
     including the generator defined for the EC_GROUP.
     EC_POINT_mul is a simple wrapper function for the typical case
     that the point list has just one item (besides the optional
     generator).
  +) First EC_METHODs for curves over GF(p):

     EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr
     operations and provides various method functions that can also
     operate with faster implementations of modular arithmetic.     

     EC_GFp_mont_method() reuses most functions that are part of
     EC_GFp_simple_method, but uses Montgomery arithmetic.

     [Bodo Moeller; point addition and point doubling
     implementation directly derived from source code provided by
Loading full blame...