I saw recently a comment by some-one that we now seem to be entering
the age of perpetual Beta software.
Pioneered by packages like linux but refined to an art form by
netscape.

I too wish to join this trend with the anouncement of SSLeay 0.6.0 :-).

There are quite a large number of sections that are 'works in
progress' in this package.  I will also list the major changes and
what files you should read.

BIO - this is the new IO structure being used everywhere in SSLeay.  I
started out developing this because of microsoft, I wanted a mechanism
to callback to the application for all IO, so Windows 3.1 DLL
perversion could be hidden from me and the 15 different ways to write
to a file under NT would also not be dictated by me at library build
time.  What the 'package' is is an API for a data structure containing
functions.  IO interfaces can be written to conform to the
specification.  This in not intended to hide the underlying data type
from the application, but to hide it from SSLeay :-).
I have only really finished testing the FILE * and socket/fd modules.
There are also 'filter' BIO's.  Currently I have only implemented
message digests, and it is in use in the dgst application.  This
functionality will allow base64/encrypto/buffering modules to be
'push' into a BIO without it affecting the semantics.  I'm also
working on an SSL BIO which will hide the SSL_accept()/SLL_connet()
from an event loop which uses the interface.
It is also possible to 'attach' callbacks to a BIO so they get called
before and after each operation, alowing extensive debug output
to be generated (try running dgst with -d).

Unfortunaly in the conversion from 0.5.x to 0.6.0, quite a few
functions that used to take FILE *, now take BIO *.
The wrappers are easy to write

function_fp(fp,x)
FILE *fp;
	{
	BIO *b;
	int ret;

	if ((b=BIO_new(BIO_s_file())) == NULL) error.....
	BIO_set_fp(b,fp,BIO_NOCLOSE);
	ret=function_bio(b,x);
	BIO_free(b);
	return(ret);
	}
Remember, there are no functions that take FILE * in SSLeay when
compiled for Windows 3.1 DLL's.

--
I have added a general EVP_PKEY type that can hold a public/private
key.  This is now what is used by the EVP_ functions and is passed
around internally.  I still have not done the PKCS#8 stuff, but
X509_PKEY is defined and waiting :-)

--
For a full function name listings, have a look at ms/crypt32.def and
ms/ssl32.def.  These are auto-generated but are complete.
Things like ASN1_INTEGER_get() have been added and are in here if you
look.  I have renamed a few things, again, have a look through the
function list and you will probably find what you are after.  I intend
to at least put a one line descrition for each one.....

--
Microsoft - thats what this release is about, read the MICROSOFT file.

--
Multi-threading support.  I have started hunting through the code and
flaging where things need to be done.  In a state of work but high on
the list.

--
For random numbers, edit e_os.h and set DEVRANDOM (it's near the top)
be be you random data device, otherwise 'RFILE' in e_os.h
will be used, in your home directory.  It will be updated
periodically.  The environment variable RANDFILE will override this
choice and read/write to that file instead.  DEVRANDOM is used in
conjunction to the RFILE/RANDFILE.  If you wish to 'seed' the random
number generator, pick on one of these files.

--

The list of things to read and do

dgst -d
s_client -state (this uses a callback placed in the SSL state loop and
		will be used else-where to help debug/monitor what
		is happening.)

doc/why.doc
doc/bio.doc <- hmmm, needs lots of work.
doc/bss_file.doc <- one that is working :-)
doc/session.doc <- it has changed
doc/speed.doc
 also play with ssleay version -a.  I have now added a SSLeay()
 function that returns a version number, eg 0600 for this release
 which is primarily to be used to check DLL version against the
 application.
util/*  Quite a few will not interest people, but some may, like
 mk1mf.pl, mkdef.pl,
util/do_ms.sh

try
cc -Iinclude -Icrypto -c crypto/crypto.c
cc -Iinclude -Issl -c ssl/ssl.c
You have just built the SSLeay libraries as 2 object files :-)

Have a general rummage around in the bin stall directory and look at
what is in there, like CA.sh and c_rehash

There are lots more things but it is 12:30am on a Friday night and I'm
heading home :-).

eric 22-Jun-1996
