
  OpenSSL STATUS                           Last modified at
  ______________                           $Date: 1999/04/23 22:20:21 $

  DEVELOPMENT STATE

    o  OpenSSL 0.9.3:  Under development...
                       Proposed freeze  date: Mon May  8th, 1999
                       Proposed release date: Mon May 17th, 1999
    o  OpenSSL 0.9.2b: Released on March    22th, 1999
    o  OpenSSL 0.9.1c: Released on December 23th, 1998

  RELEASE SHOWSTOPPERS

    o Compilation warnings: ctype-related int vs. char
    o Compilation error: "unsigned long*" and "int*" under AIX
    o BSD/OS: assembler functions must not have leading underscores
	o exptest and rsa_oaep_test fail with irix64-*
      (Don Badrak <dbadrak@geo.census.gov>: "Re: Problems to compile openssl
	  on IRIX 6.2", openssl-users)
    o BN_add test fails on Caldera OpenLinux 1.3
      (Marc Christensen <Marc.Christensen@m.cc.utah.edu>
	  "Compiles but fails big number test?", openssl-users)
    o make test fails on AIX
	  (jvant@bsumail.idbsu.edu on openssl-users)
 
  AVAILABLE PATCHES

    o OCSP (titchenert@certco.com) 
    o Install prefix for packagers (dharris@drh.net)
    o getenv in ca.c and x509_def.c (jaltman@watsun.cc.columbia.edu)
    o linux dynamic libs (colin@field.medicine.adelaide.edu.au)
    o MingW support (niklas@canit.se)

  IN PROGRESS

    o Steve is currently working on (in no particular order):
        Proper (or at least usable) certificate chain verification.
        Documentation on X509 V3 extension code.
        PKCS#12 code cleanup and enhancement.
	PKCS #8 and PKCS#5 v2.0 support.
	Private key, certificate and CRL API and implementation.
	Redo error code and DEF file generation scripts.

    o Mark is currently working on:
        Folding in any changes that are in the C2Net code base that were
        not in the original SSLeay-0.9.1.b release.  Plus other minor
        tidying.

    o Ralf is currently working on:
        1. Support for SSL_set_default_verify_paths(),
           SSL_load_verify_locations(), SSL_get_cert_store() and
           SSL_set_cert_store() functions which work like their existing
           SSL_CTX_xxx() variants but on a per connection basis. That's needed
           to let us provide full-featured per-URL client verification in
           mod_ssl or Apache-SSL.
           => It still dumps core, so I suspend this and investigate
              again for OpenSSL 0.9.3.
        2. The perl/ stuff to make it really work the first time ;-)
           => I'll investigate a few more hours for OpenSSL 0.9.2
        3. The new documentation set in POD format under doc/
           => I'll investigate a few more hours for OpenSSL 0.9.2
        4. More cleanups to get rid of obsolete/old/ugly files in the
           source tree which are not really needed.
           => Done all which were possible with my personal knowledge

    o Ben is currently working on:
	1. Function Prototype Thought Police issues.
	2. Integrated documentation.
	3. New TLS Ciphersuites.
	4. Anything else that takes his fancy.

  NEEDS PATCH

    o  broken demos
    o  salzr@certco.com (Rich Salz): Bug in X509_name_print
       <29E0A6D39ABED111A36000A0C99609CA2C2BA4@macertco-srv1.ma.certco.com>
    o  Jean-Hugues ROYER <jhroyer@joher.com>: rsa_oaep.c with Watcom C
    o  $(PERL) in */Makefile.ssl
    o  "Sign the certificate?" - "n" creates empty certificate file
    o  dubious declaration of crypt() in des.h

  OPEN ISSUES

    o  The Makefile hierarchy and build mechanism is still not a round thing:

       1. The config vs. Configure scripts
          It's the same nasty situation as for Apache with APACI vs.
          src/Configure. It confuses.
          Suggestion: Merge Configure and config into a single configure
                      script with a Autoconf style interface ;-) and remove
                      Configure and config. Or even let us use GNU Autoconf
                      itself. Then we can avoid a lot of those platform checks
                      which are currently in Configure.

    o  The installation under "make install" produces a very
       installation layout: $prefix/certs and $prefix/private dirs.  That's
       not nice. Ralf suggests to move the two certs and private dirs either
       to $prefix/etc/, $prefix/lib/ or $prefix/share. Alternatively
       we could also not install the certs at all.

       Status: Ralf +1 for both not installing the certs at all and
                       moving it to $prefix/etc/. +0 for $prefix/lib/
                       and $prefix/share.
               Paul: why is it not nice?
               Ralf: because it messes up the install dir when
                     $prefix is not a dedicated area like /usr/local/ssl.
                     When we move them to a standard subdir like
                     etc/ lib/ or share/ we don't mess up things
                     when $prefix is /usr or /usr/local, etc.
                     Additionally it makes package vendors life
                     easier....

    o  Support for Shared Libraries has to be added at least
       for the major Unix platforms. The details we can rip from the stuff
       Ralf has done for the Apache src/Configure script. Ben wants the
       solution to be really simple.

       Status: Ralf will look how we can easily incorporate the
               compiler PIC and linker DSO flags from Apache
               into the OpenSSL Configure script.

    o  The perl/ stuff needs a major overhaul. Currently it's
       totally obsolete. Either we clean it up and enhance it to be up-to-date
       with the C code or we also could replace it with the really nice
       Net::SSLeay package we can find under
       http://www.neuronio.pt/SSLeay.pm.html.  Ralf uses this package for a
       longer time and it works fine and is a nice Perl module. Best would be
       to convince the author to work for the OpenSSL project and create a
       Net::OpenSSL or Crypt::OpenSSL package out of it and maintains it for
       us.

       Status: Ralf thinks we should both contact the author of Net::SSLeay
               and look how much effort it is to bring Eric's perl/ stuff up
               to date.
               Paul +1

    o The EVP and ASN1 stuff is a mess. Currently you have one EVP_CIPHER
      structure for each cipher. This may make sense for things like DES but
      for variable length ciphers like RC2 and RC4 it is NBG. Need a way to
      use the EVP interface and set up the cipher parameters. The ASN1 stuff
      is also foo wrt ciphers whose AlgorithmIdentifier has more than just
      an IV in it (e.g. RC2, RC5). This also means that EVP_Seal and EVP_Open
      don't work unless the key length matches the fixed value (some vendors
      use a key length decided by the size of the RSA encrypted key and expect
      RC2 to adapt).

    o Properly initialize the PRNG in the absence of /dev/random.

    o > NO_RSA (ejs@bfd.com)
      > ./Configure -DNO_IDEA -DNO_RC5 -DNO_RC4 -DNO_RC2 -DNO_RSA -DNO_ERR linux-elf
      > I tried for a whole day to do this and could not get it to work.  Linux
      > machine, kernel 2.0.36 and 2.2.1, redhat 5.2 latest, gcc and egcs , no
      > go.  I also noticed the even with -DNO_IDEA, _DNO_RC2, etc. the make
      > still goes into those subdirectories and 'makes'.

    o ERR_error_string(..., buf) does not know how large buf is,
      there should be ERR_error_string_n(..., buf, bufsize)
      or similar.

  WISHES

    o  Damien Miller:
       "How about making the each of the locations compile-time defined. I
       would like to (for example) put binaries in /usr/bin, configuration
       data, certs and keys in /etc/openssl/certs and /etc/openssl/keys, etc.
       This would also be a great boon to binary package makers.  The
       SSLeay-0.9.1b RPM already includes some patches which do some of this.
       I can forward them if you wish."

    o  Mats Nilsson <mats.nilsson@xware.se>:
       "Add reference counting to all substructures of X509 etc. For instance,
       X509_NAME lacks a reference counter, while EVP_PKEY has one.  I'm
       making COM-wrappers for selected parts of SSLeay for a project of ours,
       and has found this inconsistency in copy semantics annoying."

