155714SkrisThis file contains the changes for the SSLeay library up to version
255714Skris0.9.0b. For later changes, see the file "CHANGES".
355714Skris
455714Skris  SSLeay CHANGES
555714Skris  ______________
655714Skris
755714SkrisChanges between 0.8.x and 0.9.0b
855714Skris
955714Skris10-Apr-1998
1055714Skris
1155714SkrisI said the next version would go out at easter, and so it shall.
1255714SkrisI expect a 0.9.1 will follow with portability fixes in the next few weeks.
1355714Skris
1455714SkrisThis is a quick, meet the deadline.  Look to ssl-users for comments on what
1555714Skrisis new etc.
1655714Skris
1755714Skriseric (about to go bushwalking for the 4 day easter break :-)
1855714Skris
1955714Skris16-Mar-98
2055714Skris    - Patch for Cray T90 from Wayne Schroeder <schroede@SDSC.EDU>
2155714Skris    - Lots and lots of changes
2255714Skris
2355714Skris29-Jan-98
2455714Skris    - ASN1_BIT_STRING_set_bit()/ASN1_BIT_STRING_get_bit() from
2555714Skris      Goetz Babin-Ebell <babinebell@trustcenter.de>.
2655714Skris    - SSL_version() now returns SSL2_VERSION, SSL3_VERSION or
2755714Skris      TLS1_VERSION.
2855714Skris
2955714Skris7-Jan-98
3055714Skris    - Finally reworked the cipher string to ciphers again, so it
3155714Skris      works correctly
3255714Skris    - All the app_data stuff is now ex_data with funcion calls to access.
3355714Skris      The index is supplied by a function and 'methods' can be setup
3455714Skris      for the types that are called on XXX_new/XXX_free.  This lets
3555714Skris      applications get notified on creation and destruction.  Some of
3655714Skris      the RSA methods could be implemented this way and I may do so.
3755714Skris    - Oh yes, SSL under perl5 is working at the basic level.
3855714Skris
3955714Skris15-Dec-97
4055714Skris    - Warning - the gethostbyname cache is not fully thread safe,
4155714Skris      but it should work well enough.
4255714Skris    - Major internal reworking of the app_data stuff.  More functions
4355714Skris      but if you were accessing ->app_data directly, things will
4455714Skris      stop working.
4555714Skris    - The perlv5 stuff is working.  Currently on message digests,
4655714Skris      ciphers and the bignum library.
4755714Skris
4855714Skris9-Dec-97
4955714Skris    - Modified re-negotiation so that server initated re-neg
5055714Skris      will cause a SSL_read() to return -1 should retry.
5155714Skris      The danger otherwise was that the server and the
5255714Skris      client could end up both trying to read when using non-blocking
5355714Skris      sockets.
5455714Skris
5555714Skris4-Dec-97
5655714Skris    - Lots of small changes
5755714Skris    - Fix for binaray mode in Windows for the FILE BIO, thanks to
5855714Skris      Bob Denny <rdenny@dc3.com>
5955714Skris
6055714Skris17-Nov-97
6155714Skris    - Quite a few internal cleanups, (removal of errno, and using macros
6255714Skris      defined in e_os.h).
6355714Skris    - A bug in ca.c, pointed out by yasuyuki-ito@d-cruise.co.jp, where
6455714Skris      the automactic naming out output files was being stuffed up.
6555714Skris
6655714Skris29-Oct-97
6755714Skris    - The Cast5 cipher has been added.  MD5 and SHA-1 are now in assember
6855714Skris      for x86.
6955714Skris
7055714Skris21-Oct-97
7155714Skris    - Fixed a bug in the BIO_gethostbyname() cache.
7255714Skris
7355714Skris15-Oct-97
7455714Skris    - cbc mode for blowfish/des/3des is now in assember.  Blowfish asm
7555714Skris      has also been improved.  At this point in time, on the pentium,
7655714Skris      md5 is %80 faster, the unoptimesed sha-1 is %79 faster,
7755714Skris      des-cbc is %28 faster, des-ede3-cbc is %9 faster and blowfish-cbc
7855714Skris      is %62 faster.
7955714Skris
8055714Skris12-Oct-97
8155714Skris    - MEM_BUF_grow() has been fixed so that it always sets the buf->length
8255714Skris      to the value we are 'growing' to.  Think of MEM_BUF_grow() as the
8355714Skris      way to set the length value correctly.
8455714Skris
8555714Skris10-Oct-97
8655714Skris    - I now hash for certificate lookup on the raw DER encoded RDN (md5).
8755714Skris      This breaks things again :-(.  This is efficent since I cache
8855714Skris      the DER encoding of the RDN.
8955714Skris    - The text DN now puts in the numeric OID instead of UNKNOWN.
9055714Skris    - req can now process arbitary OIDs in the config file.
9155714Skris    - I've been implementing md5 in x86 asm, much faster :-).
9255714Skris    - Started sha1 in x86 asm, needs more work.
9355714Skris    - Quite a few speedups in the BN stuff.  RSA public operation
9455714Skris      has been made faster by caching the BN_MONT_CTX structure.
9555714Skris      The calulating of the Ai where A*Ai === 1 mod m was rather
9655714Skris      expensive.  Basically a 40-50% speedup on public operations.
9755714Skris      The RSA speedup is now 15% on pentiums and %20 on pentium
9855714Skris      pro.
9955714Skris
10055714Skris30-Sep-97
10155714Skris    - After doing some profiling, I added x86 adm for bn_add_words(),
10255714Skris      which just adds 2 arrays of longs together.  A %10 speedup
10355714Skris      for 512 and 1024 bit RSA on the pentium pro.
10455714Skris
10555714Skris29-Sep-97
10655714Skris    - Converted the x86 bignum assembler to us the perl scripts
10755714Skris      for generation.
10855714Skris
10955714Skris23-Sep-97
11055714Skris    - If SSL_set_session() is passed a NULL session, it now clears the
11155714Skris      current session-id.
11255714Skris
11355714Skris22-Sep-97
11455714Skris    - Added a '-ss_cert file' to apps/ca.c.  This will sign selfsigned
11555714Skris      certificates.
11655714Skris    - Bug in crypto/evp/encode.c where by decoding of 65 base64
11755714Skris      encoded lines, one line at a time (via a memory BIO) would report
11855714Skris      EOF after the first line was decoded.
11955714Skris    - Fix in X509_find_by_issuer_and_serial() from
12055714Skris      Dr Stephen Henson <shenson@bigfoot.com>
12155714Skris
12255714Skris19-Sep-97
12355714Skris    - NO_FP_API and NO_STDIO added.
12455714Skris    - Put in sh config command.  It auto runs Configure with the correct
12555714Skris      parameters.
12655714Skris
12755714Skris18-Sep-97
12855714Skris    - Fix x509.c so if a DSA cert has different parameters to its parent,
12955714Skris      they are left in place.  Not tested yet.
13055714Skris
13155714Skris16-Sep-97
13255714Skris    - ssl_create_cipher_list() had some bugs, fixes from
13355714Skris      Patrick Eisenacher <eisenach@stud.uni-frankfurt.de>
13455714Skris    - Fixed a bug in the Base64 BIO, where it would return 1 instead
13555714Skris      of -1 when end of input was encountered but should retry.
13655714Skris      Basically a Base64/Memory BIO interaction problem.
13755714Skris    - Added a HMAC set of functions in preporarion for TLS work.
13855714Skris
13955714Skris15-Sep-97
14055714Skris    - Top level makefile tweak - Cameron Simpson <cs@zip.com.au>
14155714Skris    - Prime generation spead up %25 (512 bit prime, pentium pro linux)
14255714Skris      by using montgomery multiplication in the prime number test.
14355714Skris
14455714Skris11-Sep-97
14555714Skris    - Ugly bug in ssl3_write_bytes().  Basically if application land
14655714Skris      does a SSL_write(ssl,buf,len) where len > 16k, the SSLv3 write code
14755714Skris      did not check the size and tried to copy the entire buffer.
14855714Skris      This would tend to cause memory overwrites since SSLv3 has
14955714Skris      a maximum packet size of 16k.  If your program uses
15055714Skris      buffers <= 16k, you would probably never see this problem.
151238405Sjkim    - Fixed a few errors that were cause by malloc() not returning
15255714Skris      0 initialised memory..
15355714Skris    - SSL_OP_NETSCAPE_CA_DN_BUG was being switched on when using
15455714Skris      SSL_CTX_set_options(ssl_ctx,SSL_OP_ALL); which was a bad thing
15555714Skris      since this flags stops SSLeay being able to handle client
15655714Skris      cert requests correctly.
15755714Skris
15855714Skris08-Sep-97
15955714Skris    - SSL_SESS_CACHE_NO_INTERNAL_LOOKUP option added.  When switched
16055714Skris      on, the SSL server routines will not use a SSL_SESSION that is
16155714Skris      held in it's cache.  This in intended to be used with the session-id
16255714Skris      callbacks so that while the session-ids are still stored in the
16355714Skris      cache, the decision to use them and how to look them up can be
16455714Skris      done by the callbacks.  The are the 'new', 'get' and 'remove'
16555714Skris      callbacks.  This can be used to determine the session-id
16655714Skris      to use depending on information like which port/host the connection
16755714Skris      is coming from.  Since the are also SSL_SESSION_set_app_data() and
16855714Skris      SSL_SESSION_get_app_data() functions, the application can hold
16955714Skris      information against the session-id as well.
17055714Skris
17155714Skris03-Sep-97
17255714Skris    - Added lookup of CRLs to the by_dir method,
17355714Skris      X509_load_crl_file() also added.  Basically it means you can
17455714Skris      lookup CRLs via the same system used to lookup certificates.
17555714Skris    - Changed things so that the X509_NAME structure can contain
17655714Skris      ASN.1 BIT_STRINGS which is required for the unique
17755714Skris      identifier OID.
17855714Skris    - Fixed some problems with the auto flushing of the session-id
17955714Skris      cache.  It was not occuring on the server side.
18055714Skris
18155714Skris02-Sep-97
18255714Skris    - Added SSL_CTX_sess_cache_size(SSL_CTX *ctx,unsigned long size)
18355714Skris      which is the maximum number of entries allowed in the
18455714Skris      session-id cache.  This is enforced with a simple FIFO list.
18555714Skris      The default size is 20*1024 entries which is rather large :-).
18655714Skris      The Timeout code is still always operating.
18755714Skris
18855714Skris01-Sep-97
18955714Skris    - Added an argument to all the 'generate private key/prime`
19055714Skris      callbacks.  It is the last parameter so this should not
19155714Skris      break existing code but it is needed for C++.
19255714Skris    - Added the BIO_FLAGS_BASE64_NO_NL flag for the BIO_f_base64()
19355714Skris      BIO.  This lets the BIO read and write base64 encoded data
19455714Skris      without inserting or looking for '\n' characters.  The '-A'
19555714Skris      flag turns this on when using apps/enc.c.
19655714Skris    - RSA_NO_PADDING added to help BSAFE functionality.  This is a
19755714Skris      very dangerous thing to use, since RSA private key
19855714Skris      operations without random padding bytes (as PKCS#1 adds) can
19955714Skris      be attacked such that the private key can be revealed.
20055714Skris    - ASN.1 bug and rc2-40-cbc and rc4-40 added by
20155714Skris      Dr Stephen Henson <shenson@bigfoot.com>
20255714Skris
20355714Skris31-Aug-97 (stuff added while I was away)    
20455714Skris    - Linux pthreads by Tim Hudson (tjh@cryptsoft.com).
20555714Skris    - RSA_flags() added allowing bypass of pub/priv match check
20655714Skris      in ssl/ssl_rsa.c - Tim Hudson.
20755714Skris    - A few minor bugs.
20855714Skris
20955714SkrisSSLeay 0.8.1 released.
21055714Skris
21155714Skris19-Jul-97
21255714Skris    - Server side initated dynamic renegotiation is broken.  I will fix
21355714Skris      it when I get back from holidays.
21455714Skris
21555714Skris15-Jul-97
21655714Skris    - Quite a few small changes.
21755714Skris    - INVALID_SOCKET usage cleanups from Alex Kiernan <alex@hisoft.co.uk>
21855714Skris
21955714Skris09-Jul-97
22055714Skris    - Added 2 new values to the SSL info callback.
22155714Skris      SSL_CB_START which is passed when the SSL protocol is started
22255714Skris      and SSL_CB_DONE when it has finished sucsessfully.
22355714Skris
22455714Skris08-Jul-97
22555714Skris    - Fixed a few bugs problems in apps/req.c and crypto/asn1/x_pkey.c
22655714Skris      that related to DSA public/private keys.
22755714Skris    - Added all the relevent PEM and normal IO functions to support
22855714Skris      reading and writing RSAPublic keys.
22955714Skris    - Changed makefiles to use ${AR} instead of 'ar r'
23055714Skris
23155714Skris07-Jul-97
23255714Skris    - Error in ERR_remove_state() that would leave a dangling reference
23355714Skris      to a free()ed location - thanks to Alex Kiernan <alex@hisoft.co.uk>
23455714Skris    - s_client now prints the X509_NAMEs passed from the server
23555714Skris      when requesting a client cert.
23655714Skris    - Added a ssl->type, which is one of SSL_ST_CONNECT or
23755714Skris      SSL_ST_ACCEPT.  I had to add it so I could tell if I was
23855714Skris      a connect or an accept after the handshake had finished.
23955714Skris    - SSL_get_client_CA_list(SSL *s) now returns the CA names
24055714Skris      passed by the server if called by a client side SSL.
24155714Skris
24255714Skris05-Jul-97
24355714Skris    - Bug in X509_NAME_get_text_by_OBJ(), looking starting at index
24455714Skris      0, not -1 :-(  Fix from Tim Hudson (tjh@cryptsoft.com).
24555714Skris
24655714Skris04-Jul-97
24755714Skris    - Fixed some things in X509_NAME_add_entry(), thanks to
24855714Skris      Matthew Donald <matthew@world.net>.
24955714Skris    - I had a look at the cipher section and though that it was a
25055714Skris      bit confused, so I've changed it.
25155714Skris    - I was not setting up the RC4-64-MD5 cipher correctly.  It is
25255714Skris      a MS special that appears in exported MS Money.
25355714Skris    - Error in all my DH ciphers.  Section 7.6.7.3 of the SSLv3
25455714Skris      spec.  I was missing the two byte length header for the
25555714Skris      ClientDiffieHellmanPublic value.  This is a packet sent from
25655714Skris      the client to the server.  The SSL_OP_SSLEAY_080_CLIENT_DH_BUG
25755714Skris      option will enable SSLeay server side SSLv3 accept either
25855714Skris      the correct or my 080 packet format.
25955714Skris    - Fixed a few typos in crypto/pem.org.
26055714Skris
26155714Skris02-Jul-97
26255714Skris    - Alias mapping for EVP_get_(digest|cipher)byname is now
26355714Skris      performed before a lookup for actual cipher.  This means
26455714Skris      that an alias can be used to 're-direct' a cipher or a
26555714Skris      digest.
26655714Skris    - ASN1_read_bio() had a bug that only showed up when using a
26755714Skris      memory BIO.  When EOF is reached in the memory BIO, it is
26855714Skris      reported as a -1 with BIO_should_retry() set to true.
26955714Skris
27055714Skris01-Jul-97
27155714Skris    - Fixed an error in X509_verify_cert() caused by my
27255714Skris      miss-understanding how 'do { contine } while(0);' works.
27355714Skris      Thanks to Emil Sit <sit@mit.edu> for educating me :-)
27455714Skris
27555714Skris30-Jun-97
27655714Skris    - Base64 decoding error.  If the last data line did not end with
27755714Skris      a '=', sometimes extra data would be returned.
27855714Skris    - Another 'cut and paste' bug in x509.c related to setting up the
27955714Skris      STDout BIO.
28055714Skris
28155714Skris27-Jun-97
28255714Skris    - apps/ciphers.c was not printing due to an editing error.
28355714Skris    - Alex Kiernan <alex@hisoft.co.uk> send in a nice fix for
28455714Skris      a library build error in util/mk1mf.pl
28555714Skris
28655714Skris26-Jun-97
28755714Skris    - Still did not have the auto 'experimental' code removal
28855714Skris      script correct.
28955714Skris    - A few header tweaks for Watcom 11.0 under Win32 from
29055714Skris      Rolf Lindemann <Lindemann@maz-hh.de>
29155714Skris    - 0 length OCTET_STRING bug in asn1_parse
29255714Skris    - A minor fix with an non-existent function in the MS .def files.
29355714Skris    - A few changes to the PKCS7 stuff.
29455714Skris
29555714Skris25-Jun-97
29655714Skris    SSLeay 0.8.0 finally it gets released.
29755714Skris
29855714Skris24-Jun-97
29955714Skris    Added a SSL_OP_EPHEMERAL_RSA option which causes all SSLv3 RSA keys to
30055714Skris    use a temporary RSA key.  This is experimental and needs some more work.
30155714Skris    Fixed a few Win16 build problems.
30255714Skris
30355714Skris23-Jun-97
30455714Skris    SSLv3 bug. I was not doing the 'lookup' of the CERT structure
30555714Skris    correctly. I was taking the SSL->ctx->default_cert when I should
30655714Skris    have been using SSL->cert. The bug was in ssl/s3_srvr.c
30755714Skris
30855714Skris20-Jun-97
30955714Skris    X509_ATTRIBUTES were being encoded wrongly by apps/reg.c and the
31055714Skris    rest of the library. Even though I had the code required to do
31155714Skris    it correctly, apps/req.c was doing the wrong thing.  I have fixed
31255714Skris    and tested everything.
31355714Skris
31455714Skris    Missing a few #ifdef FIONBIO sections in crypto/bio/bss_acpt.c.
31555714Skris
31655714Skris19-Jun-97
31755714Skris    Fixed a bug in the SSLv2 server side first packet handling. When
31855714Skris    using the non-blocking test BIO, the ssl->s2->first_packet flag
31955714Skris    was being reset when a would-block failure occurred when reading
32055714Skris    the first 5 bytes of the first packet. This caused the checking
32155714Skris    logic to run at the wrong time and cause an error.
32255714Skris
32355714Skris    Fixed a problem with specifying cipher. If RC4-MD5 were used,
32455714Skris    only the SSLv3 version would be picked up.  Now this will pick
32555714Skris    up both SSLv2 and SSLv3 versions. This required changing the
32655714Skris    SSL_CIPHER->mask values so that they only mask the ciphers,
32755714Skris    digests, authentication, export type and key-exchange algorithms.
32855714Skris
32955714Skris    I found that when a SSLv23 session is established, a reused
33055714Skris    session, of type SSLv3 was attempting to write the SSLv2 
33155714Skris    ciphers, which were invalid. The SSL_METHOD->put_cipher_by_char 
33255714Skris    method has been modified so it will only write out cipher which
33355714Skris    that method knows about.  
33455714Skris
33555714Skris
33655714Skris Changes between 0.8.0 and 0.8.1
33755714Skris
33855714Skris  *) Mostly bug fixes. 
33955714Skris     There is an Ephemeral DH cipher problem which is fixed.
34055714Skris
34155714Skris SSLeay 0.8.0
34255714Skris
34355714SkrisThis version of SSLeay has quite a lot of things different from the
34455714Skrisprevious version.
34555714Skris
34655714SkrisBasically check all callback parameters, I will be producing documentation
34755714Skrisabout how to use things in th future.  Currently I'm just getting 080 out
34855714Skristhe door.  Please not that there are several ways to do everything, and
34955714Skrismost of the applications in the apps directory are hybrids, some using old
35055714Skrismethods and some using new methods.
35155714Skris
35255714SkrisHave a look in demos/bio for some very simple programs and
35355714Skrisapps/s_client.c and apps/s_server.c for some more advanced versions.
35455714SkrisNotes are definitly needed but they are a week or so away.
35555714Skris
35655714SkrisAnyway, some quick nots from Tim Hudson (tjh@cryptsoft.com)
35755714Skris---
35855714SkrisQuick porting notes for moving from SSLeay-0.6.x to SSLeay-0.8.x to
35955714Skrisget those people that want to move to using the new code base off to
36055714Skrisa quick start.
36155714Skris
36255714SkrisNote that Eric has tidied up a lot of the areas of the API that were
36355714Skrisless than desirable and renamed quite a few things (as he had to break
36455714Skristhe API in lots of places anyrate). There are a whole pile of additional
36555714Skrisfunctions for making dealing with (and creating) certificates a lot
36655714Skriscleaner.
36755714Skris
36855714Skris01-Jul-97
36955714SkrisTim Hudson
37055714Skristjh@cryptsoft.com
37155714Skris
37255714Skris---8<---
37355714Skris
37455714SkrisTo maintain code that uses both SSLeay-0.6.x and SSLeay-0.8.x you could
37555714Skrisuse something like the following (assuming you #include "crypto.h" which
37655714Skrisis something that you really should be doing).
37755714Skris
37855714Skris#if SSLEAY_VERSION_NUMBER >= 0x0800
37955714Skris#define SSLEAY8
38055714Skris#endif
38155714Skris
38255714Skrisbuffer.h -> splits into buffer.h and bio.h so you need to include bio.h
38355714Skris            too if you are working with BIO internal stuff (as distinct
38455714Skris        from simply using the interface in an opaque manner)
38555714Skris
38655714Skris#include "bio.h"    - required along with "buffer.h" if you write
38755714Skris              your own BIO routines as the buffer and bio
38855714Skris              stuff that was intermixed has been separated
38955714Skris              out 
39055714Skris            
39155714Skrisenvelope.h -> evp.h  (which should have been done ages ago)
39255714Skris
39355714SkrisInitialisation ... don't forget these or you end up with code that
39455714Skrisis missing the bits required to do useful things (like ciphers):
39555714Skris
39655714SkrisSSLeay_add_ssl_algorithms()
39755714Skris(probably also want SSL_load_error_strings() too but you should have
39855714Skris already had that call in place)
39955714Skris
40055714SkrisSSL_CTX_new()   - requires an extra method parameter
40155714Skris              SSL_CTX_new(SSLv23_method()) 
40255714Skris              SSL_CTX_new(SSLv2_method()) 
40355714Skris              SSL_CTX_new(SSLv3_method()) 
40455714Skris
40555714Skris          OR to only have the server or the client code
40655714Skris              SSL_CTX_new(SSLv23_server_method()) 
40755714Skris              SSL_CTX_new(SSLv2_server_method()) 
40855714Skris              SSL_CTX_new(SSLv3_server_method()) 
40955714Skris          or  
41055714Skris              SSL_CTX_new(SSLv23_client_method()) 
41155714Skris              SSL_CTX_new(SSLv2_client_method()) 
41255714Skris              SSL_CTX_new(SSLv3_client_method()) 
41355714Skris
41455714SkrisSSL_set_default_verify_paths() ... renamed to the more appropriate
41555714SkrisSSL_CTX_set_default_verify_paths()
41655714Skris
41755714SkrisIf you want to use client certificates then you have to add in a bit
41855714Skrisof extra stuff in that a SSLv3 server sends a list of those CAs that
41955714Skrisit will accept certificates from ... so you have to provide a list to
42055714SkrisSSLeay otherwise certain browsers will not send client certs.
42155714Skris
42255714SkrisSSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(s_cert_file));
42355714Skris
42455714Skris
42555714SkrisX509_NAME_oneline(X)    -> X509_NAME_oneline(X,NULL,0)  
42655714Skris               or provide a buffer and size to copy the
42755714Skris               result into
42855714Skris
42955714SkrisX509_add_cert ->  X509_STORE_add_cert (and you might want to read the
43055714Skris          notes on X509_NAME structure changes too)
43155714Skris
43255714Skris
43355714SkrisVERIFICATION CODE
43455714Skris=================
43555714Skris
43655714SkrisThe codes have all be renamed from VERIFY_ERR_* to X509_V_ERR_* to
43755714Skrismore accurately reflect things.
43855714Skris
43955714SkrisThe verification callback args are now packaged differently so that
44055714Skrisextra fields for verification can be added easily in future without
44155714Skrishaving to break things by adding extra parameters each release :-)
44255714Skris
44355714SkrisX509_cert_verify_error_string -> X509_verify_cert_error_string
44455714Skris
44555714Skris
44655714SkrisBIO INTERNALS
44755714Skris=============
44855714Skris
44955714SkrisEric has fixed things so that extra flags can be introduced in
45055714Skristhe BIO layer in future without having to play with all the BIO
45155714Skrismodules by adding in some macros.
45255714Skris
45355714SkrisThe ugly stuff using 
45455714Skris    b->flags ~= (BIO_FLAGS_RW|BIO_FLAGS_SHOULD_RETRY)
45555714Skrisbecomes
45655714Skris    BIO_clear_retry_flags(b)
45755714Skris
45855714Skris    b->flags |= (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)
45955714Skrisbecomes
46055714Skris    BIO_set_retry_read(b)
46155714Skris
46255714SkrisAlso ... BIO_get_retry_flags(b), BIO_set_flags(b)
46355714Skris
46455714Skris
46555714Skris
46655714SkrisOTHER THINGS
46755714Skris============
46855714Skris
46955714SkrisX509_NAME has been altered so that it isn't just a STACK ... the STACK
47055714Skrisis now in the "entries" field ... and there are a pile of nice functions
47155714Skrisfor getting at the details in a much cleaner manner.
47255714Skris
47355714SkrisSSL_CTX has been altered ... "cert" is no longer a direct member of this
47455714Skrisstructure ... things are now down under "cert_store" (see x509_vfy.h) and
47555714Skristhings are no longer in a CERTIFICATE_CTX but instead in a X509_STORE.
47655714SkrisIf your code "knows" about this level of detail then it will need some 
47755714Skrissurgery.
47855714Skris
47955714SkrisIf you depending on the incorrect spelling of a number of the error codes
48055714Skristhen you will have to change your code as these have been fixed.
48155714Skris
48255714SkrisENV_CIPHER "type" got renamed to "nid" and as that is what it actually
48355714Skrishas been all along so this makes things clearer.
48455714Skrisify_cert_error_string(ctx->error));
48555714Skris
48655714SkrisSSL_R_NO_CIPHER_WE_TRUST -> SSL_R_NO_CIPHER_LIST
48755714Skris            and SSL_R_REUSE_CIPHER_LIST_NOT_ZERO
48855714Skris
48955714Skris
49055714Skris
49155714Skris Changes between 0.7.x and 0.8.0
49255714Skris  
49355714Skris  *) There have been lots of changes, mostly the addition of SSLv3.
49455714Skris     There have been many additions from people and amongst
49555714Skris     others, C2Net has assisted greatly.
49655714Skris 
49755714Skris Changes between 0.7.x and 0.7.x
49855714Skris
49955714Skris  *) Internal development version only
50055714Skris
50155714SkrisSSLeay 0.6.6 13-Jan-1997
50255714Skris
50355714SkrisThe main additions are
50455714Skris
50555714Skris- assember for x86 DES improvments.
50655714Skris  From 191,000 per second on a pentium 100, I now get 281,000.  The inner
50755714Skris  loop and the IP/FP modifications are from
50855714Skris  Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>.  Many thanks for his
50955714Skris  contribution.
51055714Skris- The 'DES macros' introduced in 0.6.5 now have 3 types.
51155714Skris  DES_PTR1, DES_PTR2 and 'normal'.  As per before, des_opts reports which
51255714Skris  is best and there is a summery of mine in crypto/des/options.txt
51355714Skris- A few bug fixes.
51455714Skris- Added blowfish.  It is not used by SSL but all the other stuff that
51555714Skris  deals with ciphers can use it in either ecb, cbc, cfb64 or ofb64 modes.
51655714Skris  There are 3 options for optimising Blowfish.  BF_PTR, BF_PTR2 and 'normal'.
51755714Skris  BF_PTR2 is pentium/x86 specific.  The correct option is setup in
51855714Skris  the 'Configure' script.
51955714Skris- There is now a 'get client certificate' callback which can be
52055714Skris  'non-blocking'.  If more details are required, let me know.  It will
52155714Skris  documented more in SSLv3 when I finish it.
52255714Skris- Bug fixes from 0.6.5 including the infamous 'ca' bug.  The 'make test'
52355714Skris  now tests the ca program.
52455714Skris- Lots of little things modified and tweaked.
52555714Skris
52655714Skris SSLeay 0.6.5
52755714Skris
52855714SkrisAfter quite some time (3 months), the new release.  I have been very busy
52955714Skrisfor the last few months and so this is mostly bug fixes and improvments.
53055714Skris
53155714SkrisThe main additions are
53255714Skris
53355714Skris- assember for x86 DES.  For all those gcc based systems, this is a big
53455714Skris  improvement.  From 117,000 DES operation a second on a pentium 100,
53555714Skris  I now get 191,000.  I have also reworked the C version so it
53655714Skris  now gives 148,000 DESs per second.  
53755714Skris- As mentioned above, the inner DES macros now have some more variant that
53855714Skris  sometimes help, sometimes hinder performance.  There are now 3 options
53955714Skris  DES_PTR (ptr vs array lookup), DES_UNROLL (full vs partial loop unrolling)
54055714Skris  and DES_RISC (a more register intensive version of the inner macro).
54155714Skris  The crypto/des/des_opts.c program, when compiled and run, will give
54255714Skris  an indication of the correct options to use.
54355714Skris- The BIO stuff has been improved.  Read doc/bio.doc.  There are now
54455714Skris  modules for encryption and base64 encoding and a BIO_printf() function.
54555714Skris- The CA program will accept simple one line X509v3 extensions in the
54655714Skris  ssleay.cnf file.  Have a look at the example.  Currently this just
54755714Skris  puts the text into the certificate as an OCTET_STRING so currently
54855714Skris  the more advanced X509v3 data types are not handled but this is enough
54955714Skris  for the netscape extensions.
55055714Skris- There is the start of a nicer higher level interface to the X509
55155714Skris  strucutre.
55255714Skris- Quite a lot of bug fixes.
55355714Skris- CRYPTO_malloc_init()  (or CRYPTO_set_mem_functions()) can be used
55455714Skris  to define the malloc(), free() and realloc() routines to use
55555714Skris  (look in crypto/crypto.h).  This is mostly needed for Windows NT/95 when
55655714Skris  using DLLs and mixing CRT libraries.
55755714Skris
55855714SkrisIn general, read the 'VERSION' file for changes and be aware that some of
55955714Skristhe new stuff may not have been tested quite enough yet, so don't just plonk
56055714Skrisin SSLeay 0.6.5 when 0.6.4 used to work and expect nothing to break.
56155714Skris
56255714SkrisSSLeay 0.6.4 30/08/96 eay
56355714Skris
56455714SkrisI've just finished some test builds on Windows NT, Windows 3.1, Solaris 2.3,
56555714SkrisSolaris 2.5, Linux, IRIX, HPUX 10 and everthing seems to work :-).
56655714Skris
56755714SkrisThe main changes in this release
56855714Skris
56955714Skris- Thread safe.  have a read of doc/threads.doc and play in the mt directory.
57055714Skris  For anyone using 0.6.3 with threads, I found 2 major errors so consider
57155714Skris  moving to 0.6.4.  I have a test program that builds under NT and
57255714Skris  solaris.
57355714Skris- The get session-id callback has changed.  Have a read of doc/callback.doc.
57455714Skris- The X509_cert_verify callback (the SSL_verify callback) now
57555714Skris  has another argument.  Have a read of doc/callback.doc
57655714Skris- 'ca -preserve', sign without re-ordering the DN.  Not tested much.
57755714Skris- VMS support.
57855714Skris- Compile time memory leak detection can now be built into SSLeay.
57955714Skris  Read doc/memory.doc
58055714Skris- CONF routines now understand '\', '\n', '\r' etc.  What this means is that
58155714Skris  the  SPKAC object mentioned in doc/ns-ca.doc can be on multiple lines.
58255714Skris- 'ssleay ciphers' added, lists the default cipher list for SSLeay.
58355714Skris- RC2 key setup is now compatable with Netscape.
58455714Skris- Modifed server side of SSL implementation, big performance difference when
58555714Skris      using session-id reuse.
58655714Skris
58755714Skris0.6.3
58855714Skris
58955714SkrisBug fixes and the addition of some nice stuff to the 'ca' program.
59055714SkrisHave a read of doc/ns-ca.doc for how hit has been modified so
59155714Skrisit can be driven from a CGI script.  The CGI script is not provided,
59255714Skrisbut that is just being left as an excersize for the reader :-).
59355714Skris
59455714Skris0.6.2
59555714Skris
59655714SkrisThis is most bug fixes and functionality improvements.
59755714Skris
59855714SkrisAdditions are
59955714Skris- More thread debugging patches, the thread stuff is still being
60055714Skris  tested, but for those keep to play with stuff, have a look in
60155714Skris  crypto/cryptlib.c.  The application needs to define 1 (or optionaly
60255714Skris  a second) callback that is used to implement locking.  Compiling
60355714Skris  with LOCK_DEBUG spits out lots of locking crud :-).
60455714Skris  This is what I'm currently working on.
60555714Skris- SSL_CTX_set_default_passwd_cb() can be used to define the callback
60655714Skris  function used in the SSL*_file() functions used to load keys.  I was
60755714Skris  always of the opinion that people should call
60855714Skris  PEM_read_RSAPrivateKey() and pass the callback they want to use, but
60955714Skris  it appears they just want to use the SSL_*_file() function() :-(.
61055714Skris- 'enc' now has a -kfile so a key can be read from a file.  This is
61155714Skris  mostly used so that the passwd does not appear when using 'ps',
61255714Skris  which appears imposible to stop under solaris.
61355714Skris- X509v3 certificates now work correctly.  I even have more examples
61455714Skris  in my tests :-).  There is now a X509_EXTENSION type that is used in
61555714Skris  X509v3 certificates and CRLv2.
61655714Skris- Fixed that signature type error :-(
61755714Skris- Fixed quite a few potential memory leaks and problems when reusing
61855714Skris  X509, CRL and REQ structures.
61955714Skris- EVP_set_pw_prompt() now sets the library wide default password
62055714Skris  prompt.
62155714Skris- The 'pkcs7' command will now, given the -print_certs flag, output in
62255714Skris  pem format, all certificates and CRL contained within.  This is more
62355714Skris  of a pre-emtive thing for the new verisign distribution method.  I
62455714Skris  should also note, that this also gives and example in code, of how
62555714Skris  to do this :-), or for that matter, what is involved in going the
62655714Skris  other way (list of certs and crl -> pkcs7).
62755714Skris- Added RSA's DESX to the DES library.  It is also available via the
62855714Skris  EVP_desx_cbc() method and via 'enc desx'. 
62955714Skris
63055714SkrisSSLeay 0.6.1
63155714Skris
63255714SkrisThe main functional changes since 0.6.0 are as follows
63355714Skris- Bad news, the Microsoft 060 DLL's are not compatable, but the good news is
63455714Skris  that from now on, I'll keep the .def numbers the same so they will be.
63555714Skris- RSA private key operations are about 2 times faster that 0.6.0
63655714Skris- The SSL_CTX now has more fields so default values can be put against
63755714Skris  it.  When an SSL structure is created, these default values are used
63855714Skris  but can be overwritten.  There are defaults for cipher, certificate,
63955714Skris  private key, verify mode and callback.  This means SSL session
64055714Skris  creation can now be
64155714Skris  ssl=SSL_new()
64255714Skris  SSL_set_fd(ssl,sock);
64355714Skris  SSL_accept(ssl)
64455714Skris  ....
64555714Skris  All the other uglyness with having to keep a global copy of the
64655714Skris  private key and certificate/verify mode in the server is now gone.
64755714Skris- ssl/ssltest.c - one process talking SSL to its self for testing.
64855714Skris- Storage of Session-id's can be controled via a session_cache_mode
64955714Skris  flag.  There is also now an automatic default flushing of 
65055714Skris  old session-id's.
65155714Skris- The X509_cert_verify() function now has another parameter, this
65255714Skris  should not effect most people but it now means that the reason for
65355714Skris  the failure to verify is now available via SSL_get_verify_result(ssl).
65455714Skris  You don't have to use a global variable.
65555714Skris- SSL_get_app_data() and SSL_set_app_data() can be used to keep some
65655714Skris  application data against the SSL structure.  It is upto the application
65755714Skris  to free the data.  I don't use it, but it is available.
65855714Skris- SSL_CTX_set_cert_verify_callback() can be used to specify a
65955714Skris  verify callback function that completly replaces my certificate
66055714Skris  verification code.  Xcert should be able to use this :-).
66155714Skris  The callback is of the form int app_verify_callback(arg,ssl,cert).
66255714Skris  This needs to be documented more.
66355714Skris- I have started playing with shared library builds, have a look in
66455714Skris  the shlib directory.  It is very simple.  If you need a numbered
66555714Skris  list of functions, have a look at misc/crypto.num and misc/ssl.num.
66655714Skris- There is some stuff to do locking to make the library thread safe.
66755714Skris  I have only started this stuff and have not finished.  If anyone is
66855714Skris  keen to do so, please send me the patches when finished.
66955714Skris
67055714SkrisSo I have finally made most of the additions to the SSL interface that
67155714SkrisI thought were needed.
67255714Skris
67355714SkrisThere will probably be a pause before I make any non-bug/documentation
67455714Skrisrelated changes to SSLeay since I'm feeling like a bit of a break.
67555714Skris
67655714Skriseric - 12 Jul 1996
67755714SkrisI saw recently a comment by some-one that we now seem to be entering
67855714Skristhe age of perpetual Beta software.
67955714SkrisPioneered by packages like linux but refined to an art form by
68055714Skrisnetscape.
68155714Skris
68255714SkrisI too wish to join this trend with the anouncement of SSLeay 0.6.0 :-).
68355714Skris
68455714SkrisThere are quite a large number of sections that are 'works in
68555714Skrisprogress' in this package.  I will also list the major changes and
68655714Skriswhat files you should read.
68755714Skris
68855714SkrisBIO - this is the new IO structure being used everywhere in SSLeay.  I
68955714Skrisstarted out developing this because of microsoft, I wanted a mechanism
69055714Skristo callback to the application for all IO, so Windows 3.1 DLL
69155714Skrisperversion could be hidden from me and the 15 different ways to write
69255714Skristo a file under NT would also not be dictated by me at library build
69355714Skristime.  What the 'package' is is an API for a data structure containing
69455714Skrisfunctions.  IO interfaces can be written to conform to the
69555714Skrisspecification.  This in not intended to hide the underlying data type
69655714Skrisfrom the application, but to hide it from SSLeay :-).
69755714SkrisI have only really finished testing the FILE * and socket/fd modules.
69855714SkrisThere are also 'filter' BIO's.  Currently I have only implemented
69955714Skrismessage digests, and it is in use in the dgst application.  This
70055714Skrisfunctionality will allow base64/encrypto/buffering modules to be
70155714Skris'push' into a BIO without it affecting the semantics.  I'm also
70255714Skrisworking on an SSL BIO which will hide the SSL_accept()/SLL_connet()
70355714Skrisfrom an event loop which uses the interface.
70455714SkrisIt is also possible to 'attach' callbacks to a BIO so they get called
70555714Skrisbefore and after each operation, alowing extensive debug output
70655714Skristo be generated (try running dgst with -d).
70755714Skris
70855714SkrisUnfortunaly in the conversion from 0.5.x to 0.6.0, quite a few
70955714Skrisfunctions that used to take FILE *, now take BIO *.
71055714SkrisThe wrappers are easy to write
71155714Skris
71255714Skrisfunction_fp(fp,x)
71355714SkrisFILE *fp;
71455714Skris    {
71555714Skris    BIO *b;
71655714Skris    int ret;
71755714Skris
71855714Skris    if ((b=BIO_new(BIO_s_file())) == NULL) error.....
71955714Skris    BIO_set_fp(b,fp,BIO_NOCLOSE);
72055714Skris    ret=function_bio(b,x);
72155714Skris    BIO_free(b);
72255714Skris    return(ret);
72355714Skris    }
72455714SkrisRemember, there are no functions that take FILE * in SSLeay when
72555714Skriscompiled for Windows 3.1 DLL's.
72655714Skris
72755714Skris--
72855714SkrisI have added a general EVP_PKEY type that can hold a public/private
72955714Skriskey.  This is now what is used by the EVP_ functions and is passed
73055714Skrisaround internally.  I still have not done the PKCS#8 stuff, but
73155714SkrisX509_PKEY is defined and waiting :-)
73255714Skris
73355714Skris--
73455714SkrisFor a full function name listings, have a look at ms/crypt32.def and
73555714Skrisms/ssl32.def.  These are auto-generated but are complete.
73655714SkrisThings like ASN1_INTEGER_get() have been added and are in here if you
73755714Skrislook.  I have renamed a few things, again, have a look through the
73855714Skrisfunction list and you will probably find what you are after.  I intend
73955714Skristo at least put a one line descrition for each one.....
74055714Skris
74155714Skris--
74255714SkrisMicrosoft - thats what this release is about, read the MICROSOFT file.
74355714Skris
74455714Skris--
74555714SkrisMulti-threading support.  I have started hunting through the code and
74655714Skrisflaging where things need to be done.  In a state of work but high on
74755714Skristhe list.
74855714Skris
74955714Skris--
75055714SkrisFor random numbers, edit e_os.h and set DEVRANDOM (it's near the top)
75155714Skrisbe be you random data device, otherwise 'RFILE' in e_os.h
75255714Skriswill be used, in your home directory.  It will be updated
75355714Skrisperiodically.  The environment variable RANDFILE will override this
75455714Skrischoice and read/write to that file instead.  DEVRANDOM is used in
75555714Skrisconjunction to the RFILE/RANDFILE.  If you wish to 'seed' the random
75655714Skrisnumber generator, pick on one of these files.
75755714Skris
75855714Skris--
75955714Skris
76055714SkrisThe list of things to read and do
76155714Skris
76255714Skrisdgst -d
76355714Skriss_client -state (this uses a callback placed in the SSL state loop and
76455714Skris        will be used else-where to help debug/monitor what
76555714Skris        is happening.)
76655714Skris
76755714Skrisdoc/why.doc
76855714Skrisdoc/bio.doc <- hmmm, needs lots of work.
76955714Skrisdoc/bss_file.doc <- one that is working :-)
77055714Skrisdoc/session.doc <- it has changed
77155714Skrisdoc/speed.doc
77255714Skris also play with ssleay version -a.  I have now added a SSLeay()
77355714Skris function that returns a version number, eg 0600 for this release
77455714Skris which is primarily to be used to check DLL version against the
77555714Skris application.
77655714Skrisutil/*  Quite a few will not interest people, but some may, like
77755714Skris mk1mf.pl, mkdef.pl,
77855714Skrisutil/do_ms.sh
77955714Skris
78055714Skristry
78155714Skriscc -Iinclude -Icrypto -c crypto/crypto.c
78255714Skriscc -Iinclude -Issl -c ssl/ssl.c
78355714SkrisYou have just built the SSLeay libraries as 2 object files :-)
78455714Skris
78555714SkrisHave a general rummage around in the bin stall directory and look at
78655714Skriswhat is in there, like CA.sh and c_rehash
78755714Skris
78855714SkrisThere are lots more things but it is 12:30am on a Friday night and I'm
78955714Skrisheading home :-).
79055714Skris
79155714Skriseric 22-Jun-1996
79255714SkrisThis version has quite a few major bug fixes and improvements.  It DOES NOT
79355714Skrisdo SSLv3 yet.
79455714Skris
79555714SkrisThe main things changed
79655714Skris- A Few days ago I added the s_mult application to ssleay which is
79755714Skris  a demo of an SSL server running in an event loop type thing.
79855714Skris  It supports non-blocking IO, I have finally gotten it right, SSL_accept()
79955714Skris  can operate in non-blocking IO mode, look at the code to see how :-).
80055714Skris  Have a read of doc/s_mult as well.  This program leaks memory and
80155714Skris  file descriptors everywhere but I have not cleaned it up yet.
80255714Skris  This is a demo of how to do non-blocking IO.
80355714Skris- The SSL session management has been 'worked over' and there is now
80455714Skris  quite an expansive set of functions to manipulate them.  Have a read of
80555714Skris  doc/session.doc for some-things I quickly whipped up about how it now works.
80655714Skris  This assume you know the SSLv2 protocol :-)
80755714Skris- I can now read/write the netscape certificate format, use the
80855714Skris  -inform/-outform  'net' options to the x509 command.  I have not put support
80955714Skris  for this type in the other demo programs, but it would be easy to add.
81055714Skris- asn1parse and 'enc' have been modified so that when reading base64
81155714Skris  encoded files (pem format), they do not require '-----BEGIN' header lines.
81255714Skris  The 'enc' program had a buffering bug fixed, it can be used as a general
81355714Skris  base64 -> binary -> base64 filter by doing 'enc -a -e' and 'enc -a -d'
81455714Skris  respecivly.  Leaving out the '-a' flag in this case makes the 'enc' command
81555714Skris  into a form of 'cat'.
81655714Skris- The 'x509' and 'req' programs have been fixed and modified a little so
81755714Skris  that they generate self-signed certificates correctly.  The test
81855714Skris  script actually generates a 'CA' certificate and then 'signs' a
81955714Skris  'user' certificate.  Have a look at this shell script (test/sstest)
82055714Skris  to see how things work, it tests most possible combinations of what can
82155714Skris  be done.
82255714Skris- The 'SSL_set_pref_cipher()' function has been 'fixed' and the prefered name
82355714Skris  of SSL_set_cipher_list() is now the correct API (stops confusion :-).
82455714Skris  If this function is used in the client, only the specified ciphers can
82555714Skris  be used, with preference given to the order the ciphers were listed.
82655714Skris  For the server, if this is used, only the specified ciphers will be used
82755714Skris  to accept connections.  If this 'option' is not used, a default set of
82855714Skris  ciphers will be used.  The SSL_CTX_set_cipher_list(SSL_CTX *ctx) sets this
82955714Skris  list for all ciphers started against the SSL_CTX.  So the order is
83055714Skris  SSL cipher_list, if not present, SSL_CTX cipher list, if not
83155714Skris  present, then the library default.
83255714Skris  What this means is that normally ciphers like
83355714Skris  NULL-MD5 will never be used.  The only way this cipher can be used
83455714Skris  for both ends to specify to use it.
83555714Skris  To enable or disable ciphers in the library at build time, modify the
83655714Skris  first field for the cipher in the ssl_ciphers array in ssl/ssl_lib.c.
83755714Skris  This file also contains the 'pref_cipher' list which is the default
83855714Skris  cipher preference order.
83955714Skris- I'm not currently sure if the 'rsa -inform net' and the 'rsa -outform net'
84055714Skris  options work.  They should, and they enable loading and writing the
84155714Skris  netscape rsa private key format.  I will be re-working this section of
84255714Skris  SSLeay for the next version.  What is currently in place is a quick and
84355714Skris  dirty hack.
84455714Skris- I've re-written parts of the bignum library.  This gives speedups
84555714Skris  for all platforms.  I now provide assembler for use under Windows NT.
84655714Skris  I have not tested the Windows 3.1 assembler but it is quite simple code.
84755714Skris  This gives RSAprivate_key operation encryption times of 0.047s (512bit key)
84855714Skris  and 0.230s (1024bit key) on a pentium 100 which I consider reasonable.
84955714Skris  Basically the times available under linux/solaris x86 can be achieve under
85055714Skris  Windows NT.  I still don't know how these times compare to RSA's BSAFE
85155714Skris  library but I have been emailing with people and with their help, I should
85255714Skris  be able to get my library's quite a bit faster still (more algorithm changes).
85355714Skris  The object file crypto/bn/asm/x86-32.obj should be used when linking
85455714Skris  under NT.
85555714Skris- 'make makefile.one' in the top directory will generate a single makefile
85655714Skris  called 'makefile.one'  This makefile contains no perl references and
85755714Skris  will build the SSLeay library into the 'tmp' and 'out' directories.
85855714Skris  util/mk1mf.pl >makefile.one is how this makefile is
85955714Skris  generated.  The mk1mf.pl command take several option to generate the
86055714Skris  makefile for use with cc, gcc, Visual C++ and Borland C++.  This is
86155714Skris  still under development.  I have only build .lib's for NT and MSDOS
86255714Skris  I will be working on this more.  I still need to play with the
86355714Skris  correct compiler setups for these compilers and add some more stuff but
86455714Skris  basically if you just want to compile the library
86555714Skris  on a 'non-unix' platform, this is a very very good file to start with :-).
86655714Skris  Have a look in the 'microsoft' directory for my current makefiles.
86755714Skris  I have not yet modified things to link with sockets under Windows NT.
86855714Skris  You guys should be able to do this since this is actually outside of the
86955714Skris  SSLeay scope :-).  I will be doing it for myself soon.
87055714Skris  util/mk1mf.pl takes quite a few options including no-rc, rsaref  and no-sock
87155714Skris  to build without RC2/RC4, to require RSAref for linking, and to
87255714Skris  build with no socket code.
87355714Skris
87455714Skris- Oh yes, the cipher that was reported to be compatible with RSA's RC2 cipher
87555714Skris  that was posted to sci.crypt has been added to the library and SSL.
87655714Skris  I take the view that if RC2 is going to be included in a standard,
87755714Skris  I'll include the cipher to make my package complete.
87855714Skris  There are NO_RC2, NO_RC4 and NO_IDEA macros to remove these ciphers
87955714Skris  at compile time.  I have not tested this recently but it should all work
88055714Skris  and if you are in the USA and don't want RSA threatening to sue you,
88155714Skris  you could probably remove the RC4/RC2 code inside these sections.
88255714Skris  I may in the future include a perl script that does this code
88355714Skris  removal automatically for those in the USA :-).
88455714Skris- I have removed all references to sed in the makefiles.  So basically,
88555714Skris  the development environment requires perl and sh.  The build environment
88655714Skris  does not (use the makefile.one makefile).
88755714Skris  The Configure script still requires perl, this will probably stay that way
88855714Skris  since I have perl for Windows NT :-).
88955714Skris
89055714Skriseric (03-May-1996)
89155714Skris
89255714SkrisPS Have a look in the VERSION file for more details on the changes and
89355714Skris   bug fixes.
89455714SkrisI have fixed a few bugs, added alpha and x86 assembler and generally cleaned
89555714Skristhings up.  This version will be quite stable, mostly because I'm on
89655714Skrisholidays until 10-March-1996.  For any problems in the interum, send email
89755714Skristo Tim Hudson <tjh@mincom.oz.au>.
89855714Skris
89955714SkrisSSLeay 0.5.0
90055714Skris
90155714Skris12-12-95
90255714SkrisThis is going out before it should really be released.
90355714Skris
90455714SkrisI leave for 11 weeks holidays on the 22-12-95 and so I either sit on
90555714Skristhis for 11 weeks or get things out.  It is still going to change a
90655714Skrislot in the next week so if you do grab this version, please test and
90755714Skrisgive me feed back ASAP, inculuding questions on how to do things with
90855714Skristhe library.  This will prompt me to write documentation so I don't
90955714Skrishave to answer the same question again :-).
91055714Skris
91155714SkrisThis 'pre' release version is for people who are interested in the
91255714Skrislibrary.  The applications will have to be changed to use
91355714Skristhe new version of the SSL interface.  I intend to finish more
91455714Skrisdocumentation before I leave but until then, look at the programs in
91555714Skristhe apps directory.  As far as code goes, it is much much nicer than
91655714Skristhe old version.
91755714Skris
91855714SkrisThe current library works, has no memory leaks (as far as I can tell)
91955714Skrisand is far more bug free that 0.4.5d.  There are no global variable of
92055714Skrisconsequence (I believe) and I will produce some documentation that
92155714Skristell where to look for those people that do want to do multi-threaded
92255714Skrisstuff.
92355714Skris
92455714SkrisThere should be more documentation.  Have a look in the
92555714Skrisdoc directory.  I'll be adding more before I leave, it is a start
92655714Skrisby mostly documents the crypto library.  Tim Hudson will update
92755714Skristhe web page ASAP.  The spelling and grammar are crap but
92855714Skrisit is better than nothing :-)
92955714Skris
93055714SkrisReasons to start playing with version 0.5.0
93155714Skris- All the programs in the apps directory build into one ssleay binary.
93255714Skris- There is a new version of the 'req' program that generates certificate
93355714Skris  requests, there is even documentation for this one :-)
93455714Skris- There is a demo certification authorithy program.  Currently it will
93555714Skris  look at the simple database and update it.  It will generate CRL from
93655714Skris  the data base.  You need to edit the database by hand to revoke a
93755714Skris  certificate, it is my aim to use perl5/Tk but I don't have time to do
93855714Skris  this right now.  It will generate the certificates but the management
93955714Skris  scripts still need to be written.  This is not a hard task.
94055714Skris- Things have been cleaned up alot.
94155714Skris- Have a look at the enc and dgst programs in the apps directory.
94255714Skris- It supports v3 of x509 certiticates.
94355714Skris
94455714Skris
94555714SkrisMajor things missing.
94655714Skris- I have been working on (and thinging about) the distributed x509
94755714Skris  hierachy problem.  I have not had time to put my solution in place.
94855714Skris  It will have to wait until I come back.
94955714Skris- I have not put in CRL checking in the certificate verification but
95055714Skris  it would not be hard to do.  I was waiting until I could generate my
95155714Skris  own CRL (which has only been in the last week) and I don't have time
95255714Skris  to put it in correctly.
95355714Skris- Montgomery multiplication need to be implemented.  I know the
95455714Skris  algorithm, just ran out of time.
95555714Skris- PKCS#7.  I can load and write the DER version.  I need to re-work
95655714Skris  things to support BER (if that means nothing, read the ASN1 spec :-).
95755714Skris- Testing of the higher level digital envelope routines.  I have not
95855714Skris  played with the *_seal() and *_open() type functions.  They are
95955714Skris  written but need testing.  The *_sign() and *_verify() functions are
96055714Skris  rock solid. 
96155714Skris- PEM.  Doing this and PKCS#7 have been dependant on the distributed
96255714Skris  x509 heirachy problem.  I started implementing my ideas, got
96355714Skris  distracted writing a CA program and then ran out of time.  I provide
96455714Skris  the functionality of RSAref at least.
96555714Skris- Re work the asm. code for the x86.  I've changed by low level bignum
96655714Skris  interface again, so I really need to tweak the x86 stuff.  gcc is
96755714Skris  good enough for the other boxes.
96855714Skris
969