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 .