(linenum→info "unix/slp.c:2238")

openssl/0.9.8g/CHANGES.SSLeay

    1: This file contains the changes for the SSLeay library up to version
    2: 0.9.0b. For later changes, see the file "CHANGES".
    3: 
    4:   SSLeay CHANGES
    5:   ______________
    6: 
    7: Changes between 0.8.x and 0.9.0b
    8: 
    9: 10-Apr-1998
   10: 
   11: I said the next version would go out at easter, and so it shall.
   12: I expect a 0.9.1 will follow with portability fixes in the next few weeks.
   13: 
   14: This is a quick, meet the deadline.  Look to ssl-users for comments on what
   15: is new etc.
   16: 
   17: eric (about to go bushwalking for the 4 day easter break :-)
   18: 
   19: 16-Mar-98
   20:     - Patch for Cray T90 from Wayne Schroeder <schroede@SDSC.EDU>
   21:     - Lots and lots of changes
   22: 
   23: 29-Jan-98
   24:     - ASN1_BIT_STRING_set_bit()/ASN1_BIT_STRING_get_bit() from
   25:       Goetz Babin-Ebell <babinebell@trustcenter.de>.
   26:     - SSL_version() now returns SSL2_VERSION, SSL3_VERSION or
   27:       TLS1_VERSION.
   28: 
   29: 7-Jan-98
   30:     - Finally reworked the cipher string to ciphers again, so it
   31:       works correctly
   32:     - All the app_data stuff is now ex_data with funcion calls to access.
   33:       The index is supplied by a function and 'methods' can be setup
   34:       for the types that are called on XXX_new/XXX_free.  This lets
   35:       applications get notified on creation and destruction.  Some of
   36:       the RSA methods could be implemented this way and I may do so.
   37:     - Oh yes, SSL under perl5 is working at the basic level.
   38: 
   39: 15-Dec-97
   40:     - Warning - the gethostbyname cache is not fully thread safe,
   41:       but it should work well enough.
   42:     - Major internal reworking of the app_data stuff.  More functions
   43:       but if you were accessing ->app_data directly, things will
   44:       stop working.
   45:     - The perlv5 stuff is working.  Currently on message digests,
   46:       ciphers and the bignum library.
   47: 
   48: 9-Dec-97
   49:     - Modified re-negotiation so that server initated re-neg
   50:       will cause a SSL_read() to return -1 should retry.
   51:       The danger otherwise was that the server and the
   52:       client could end up both trying to read when using non-blocking
   53:       sockets.
   54: 
   55: 4-Dec-97
   56:     - Lots of small changes
   57:     - Fix for binaray mode in Windows for the FILE BIO, thanks to
   58:       Bob Denny <rdenny@dc3.com>
   59: 
   60: 17-Nov-97
   61:     - Quite a few internal cleanups, (removal of errno, and using macros
   62:       defined in e_os.h).
   63:     - A bug in ca.c, pointed out by yasuyuki-ito@d-cruise.co.jp, where
   64:       the automactic naming out output files was being stuffed up.
   65: 
   66: 29-Oct-97
   67:     - The Cast5 cipher has been added.  MD5 and SHA-1 are now in assember
   68:       for x86.
   69: 
   70: 21-Oct-97
   71:     - Fixed a bug in the BIO_gethostbyname() cache.
   72: 
   73: 15-Oct-97
   74:     - cbc mode for blowfish/des/3des is now in assember.  Blowfish asm
   75:       has also been improved.  At this point in time, on the pentium,
   76:       md5 is %80 faster, the unoptimesed sha-1 is %79 faster,
   77:       des-cbc is %28 faster, des-ede3-cbc is %9 faster and blowfish-cbc
   78:       is %62 faster.
   79: 
   80: 12-Oct-97
   81:     - MEM_BUF_grow() has been fixed so that it always sets the buf->length
   82:       to the value we are 'growing' to.  Think of MEM_BUF_grow() as the
   83:       way to set the length value correctly.
   84: 
   85: 10-Oct-97
   86:     - I now hash for certificate lookup on the raw DER encoded RDN (md5).
   87:       This breaks things again :-(.  This is efficent since I cache
   88:       the DER encoding of the RDN.
   89:     - The text DN now puts in the numeric OID instead of UNKNOWN.
   90:     - req can now process arbitary OIDs in the config file.
   91:     - I've been implementing md5 in x86 asm, much faster :-).
   92:     - Started sha1 in x86 asm, needs more work.
   93:     - Quite a few speedups in the BN stuff.  RSA public operation
   94:       has been made faster by caching the BN_MONT_CTX structure.
   95:       The calulating of the Ai where A*Ai === 1 mod m was rather
   96:       expensive.  Basically a 40-50% speedup on public operations.
   97:       The RSA speedup is now 15% on pentiums and %20 on pentium
   98:       pro.
   99: 
  100: 30-Sep-97
  101:     - After doing some profiling, I added x86 adm for bn_add_words(),
  102:       which just adds 2 arrays of longs together.  A %10 speedup
  103:       for 512 and 1024 bit RSA on the pentium pro.
  104: 
  105: 29-Sep-97
  106:     - Converted the x86 bignum assembler to us the perl scripts
  107:       for generation.
  108: 
  109: 23-Sep-97
  110:     - If SSL_set_session() is passed a NULL session, it now clears the
  111:       current session-id.
  112: 
  113: 22-Sep-97
  114:     - Added a '-ss_cert file' to apps/ca.c.  This will sign selfsigned
  115:       certificates.
  116:     - Bug in crypto/evp/encode.c where by decoding of 65 base64
  117:       encoded lines, one line at a time (via a memory BIO) would report
  118:       EOF after the first line was decoded.
  119:     - Fix in X509_find_by_issuer_and_serial() from
  120:       Dr Stephen Henson <shenson@bigfoot.com>
  121: 
  122: 19-Sep-97
  123:     - NO_FP_API and NO_STDIO added.
  124:     - Put in sh config command.  It auto runs Configure with the correct
  125:       parameters.
  126: 
  127: 18-Sep-97
  128:     - Fix x509.c so if a DSA cert has different parameters to its parent,
  129:       they are left in place.  Not tested yet.
  130: 
  131: 16-Sep-97
  132:     - ssl_create_cipher_list() had some bugs, fixes from
  133:       Patrick Eisenacher <eisenach@stud.uni-frankfurt.de>
  134:     - Fixed a bug in the Base64 BIO, where it would return 1 instead
  135:       of -1 when end of input was encountered but should retry.
  136:       Basically a Base64/Memory BIO interaction problem.
  137:     - Added a HMAC set of functions in preporarion for TLS work.
  138: 
  139: 15-Sep-97
  140:     - Top level makefile tweak - Cameron Simpson <cs@zip.com.au>
  141:     - Prime generation spead up %25 (512 bit prime, pentium pro linux)
  142:       by using montgomery multiplication in the prime number test.
  143: 
  144: 11-Sep-97
  145:     - Ugly bug in ssl3_write_bytes().  Basically if application land
  146:       does a SSL_write(ssl,buf,len) where len > 16k, the SSLv3 write code
  147:       did not check the size and tried to copy the entire buffer.
  148:       This would tend to cause memory overwrites since SSLv3 has
  149:       a maximum packet size of 16k.  If your program uses
  150:       buffers <= 16k, you would probably never see this problem.
  151:     - Fixed a new errors that were cause by malloc() not returning
  152:       0 initialised memory..
  153:     - SSL_OP_NETSCAPE_CA_DN_BUG was being switched on when using
  154:       SSL_CTX_set_options(ssl_ctx,SSL_OP_ALL); which was a bad thing
  155:       since this flags stops SSLeay being able to handle client
  156:       cert requests correctly.
  157: 
  158: 08-Sep-97
  159:     - SSL_SESS_CACHE_NO_INTERNAL_LOOKUP option added.  When switched
  160:       on, the SSL server routines will not use a SSL_SESSION that is
  161:       held in it's cache.  This in intended to be used with the session-id
  162:       callbacks so that while the session-ids are still stored in the
  163:       cache, the decision to use them and how to look them up can be
  164:       done by the callbacks.  The are the 'new', 'get' and 'remove'
  165:       callbacks.  This can be used to determine the session-id
  166:       to use depending on information like which port/host the connection
  167:       is coming from.  Since the are also SSL_SESSION_set_app_data() and
  168:       SSL_SESSION_get_app_data() functions, the application can hold
  169:       information against the session-id as well.
  170: 
  171: 03-Sep-97
  172:     - Added lookup of CRLs to the by_dir method,
  173:       X509_load_crl_file() also added.  Basically it means you can
  174:       lookup CRLs via the same system used to lookup certificates.
  175:     - Changed things so that the X509_NAME structure can contain
  176:       ASN.1 BIT_STRINGS which is required for the unique
  177:       identifier OID.
  178:     - Fixed some problems with the auto flushing of the session-id
  179:       cache.  It was not occuring on the server side.
  180: 
  181: 02-Sep-97
  182:     - Added SSL_CTX_sess_cache_size(SSL_CTX *ctx,unsigned long size)
  183:       which is the maximum number of entries allowed in the
  184:       session-id cache.  This is enforced with a simple FIFO list.
  185:       The default size is 20*1024 entries which is rather large :-).
  186:       The Timeout code is still always operating.
  187: 
  188: 01-Sep-97
  189:     - Added an argument to all the 'generate private key/prime`
  190:       callbacks.  It is the last parameter so this should not
  191:       break existing code but it is needed for C++.
  192:     - Added the BIO_FLAGS_BASE64_NO_NL flag for the BIO_f_base64()
  193:       BIO.  This lets the BIO read and write base64 encoded data
  194:       without inserting or looking for '\n' characters.  The '-A'
  195:       flag turns this on when using apps/enc.c.
  196:     - RSA_NO_PADDING added to help BSAFE functionality.  This is a
  197:       very dangerous thing to use, since RSA private key
  198:       operations without random padding bytes (as PKCS#1 adds) can
  199:       be attacked such that the private key can be revealed.
  200:     - ASN.1 bug and rc2-40-cbc and rc4-40 added by
  201:       Dr Stephen Henson <shenson@bigfoot.com>
  202: 
  203: 31-Aug-97 (stuff added while I was away)    
  204:     - Linux pthreads by Tim Hudson (tjh@cryptsoft.com).
  205:     - RSA_flags() added allowing bypass of pub/priv match check
  206:       in ssl/ssl_rsa.c - Tim Hudson.
  207:     - A few minor bugs.
  208: 
  209: SSLeay 0.8.1 released.
  210: 
  211: 19-Jul-97
  212:     - Server side initated dynamic renegotiation is broken.  I will fix
  213:       it when I get back from holidays.
  214: 
  215: 15-Jul-97
  216:     - Quite a few small changes.
  217:     - INVALID_SOCKET usage cleanups from Alex Kiernan <alex@hisoft.co.uk>
  218: 
  219: 09-Jul-97
  220:     - Added 2 new values to the SSL info callback.
  221:       SSL_CB_START which is passed when the SSL protocol is started
  222:       and SSL_CB_DONE when it has finished sucsessfully.
  223: 
  224: 08-Jul-97
  225:     - Fixed a few bugs problems in apps/req.c and crypto/asn1/x_pkey.c
  226:       that related to DSA public/private keys.
  227:     - Added all the relevent PEM and normal IO functions to support
  228:       reading and writing RSAPublic keys.
  229:     - Changed makefiles to use ${AR} instead of 'ar r'
  230: 
  231: 07-Jul-97
  232:     - Error in ERR_remove_state() that would leave a dangling reference
  233:       to a free()ed location - thanks to Alex Kiernan <alex@hisoft.co.uk>
  234:     - s_client now prints the X509_NAMEs passed from the server
  235:       when requesting a client cert.
  236:     - Added a ssl->type, which is one of SSL_ST_CONNECT or
  237:       SSL_ST_ACCEPT.  I had to add it so I could tell if I was
  238:       a connect or an accept after the handshake had finished.
  239:     - SSL_get_client_CA_list(SSL *s) now returns the CA names
  240:       passed by the server if called by a client side SSL.
  241: 
  242: 05-Jul-97
  243:     - Bug in X509_NAME_get_text_by_OBJ(), looking starting at index
  244:       0, not -1 :-(  Fix from Tim Hudson (tjh@cryptsoft.com).
  245: 
  246: 04-Jul-97
  247:     - Fixed some things in X509_NAME_add_entry(), thanks to
  248:       Matthew Donald <matthew@world.net>.
  249:     - I had a look at the cipher section and though that it was a
  250:       bit confused, so I've changed it.
  251:     - I was not setting up the RC4-64-MD5 cipher correctly.  It is
  252:       a MS special that appears in exported MS Money.
  253:     - Error in all my DH ciphers.  Section 7.6.7.3 of the SSLv3
  254:       spec.  I was missing the two byte length header for the
  255:       ClientDiffieHellmanPublic value.  This is a packet sent from
  256:       the client to the server.  The SSL_OP_SSLEAY_080_CLIENT_DH_BUG
  257:       option will enable SSLeay server side SSLv3 accept either
  258:       the correct or my 080 packet format.
  259:     - Fixed a few typos in crypto/pem.org.
  260: 
  261: 02-Jul-97
  262:     - Alias mapping for EVP_get_(digest|cipher)byname is now
  263:       performed before a lookup for actual cipher.  This means
  264:       that an alias can be used to 're-direct' a cipher or a
  265:       digest.
  266:     - ASN1_read_bio() had a bug that only showed up when using a
  267:       memory BIO.  When EOF is reached in the memory BIO, it is
  268:       reported as a -1 with BIO_should_retry() set to true.
  269: 
  270: 01-Jul-97
  271:     - Fixed an error in X509_verify_cert() caused by my
  272:       miss-understanding how 'do { contine } while(0);' works.
  273:       Thanks to Emil Sit <sit@mit.edu> for educating me :-)
  274: 
  275: 30-Jun-97
  276:     - Base64 decoding error.  If the last data line did not end with
  277:       a '=', sometimes extra data would be returned.
  278:     - Another 'cut and paste' bug in x509.c related to setting up the
  279:       STDout BIO.
  280: 
  281: 27-Jun-97
  282:     - apps/ciphers.c was not printing due to an editing error.
  283:     - Alex Kiernan <alex@hisoft.co.uk> send in a nice fix for
  284:       a library build error in util/mk1mf.pl
  285: 
  286: 26-Jun-97
  287:     - Still did not have the auto 'experimental' code removal
  288:       script correct.
  289:     - A few header tweaks for Watcom 11.0 under Win32 from
  290:       Rolf Lindemann <Lindemann@maz-hh.de>
  291:     - 0 length OCTET_STRING bug in asn1_parse
  292:     - A minor fix with an non-existent function in the MS .def files.
  293:     - A few changes to the PKCS7 stuff.
  294: 
  295: 25-Jun-97
  296:     SSLeay 0.8.0 finally it gets released.
  297: 
  298: 24-Jun-97
  299:     Added a SSL_OP_EPHEMERAL_RSA option which causes all SSLv3 RSA keys to
  300:     use a temporary RSA key.  This is experimental and needs some more work.
  301:     Fixed a few Win16 build problems.
  302: 
  303: 23-Jun-97
  304:     SSLv3 bug. I was not doing the 'lookup' of the CERT structure
  305:     correctly. I was taking the SSL->ctx->default_cert when I should
  306:     have been using SSL->cert. The bug was in ssl/s3_srvr.c
  307: 
  308: 20-Jun-97
  309:     X509_ATTRIBUTES were being encoded wrongly by apps/reg.c and the
  310:     rest of the library. Even though I had the code required to do
  311:     it correctly, apps/req.c was doing the wrong thing.  I have fixed
  312:     and tested everything.
  313: 
  314:     Missing a few #ifdef FIONBIO sections in crypto/bio/bss_acpt.c.
  315: 
  316: 19-Jun-97
  317:     Fixed a bug in the SSLv2 server side first packet handling. When
  318:     using the non-blocking test BIO, the ssl->s2->first_packet flag
  319:     was being reset when a would-block failure occurred when reading
  320:     the first 5 bytes of the first packet. This caused the checking
  321:     logic to run at the wrong time and cause an error.
  322: 
  323:     Fixed a problem with specifying cipher. If RC4-MD5 were used,
  324:     only the SSLv3 version would be picked up.  Now this will pick
  325:     up both SSLv2 and SSLv3 versions. This required changing the
  326:     SSL_CIPHER->mask values so that they only mask the ciphers,
  327:     digests, authentication, export type and key-exchange algorithms.
  328: 
  329:     I found that when a SSLv23 session is established, a reused
  330:     session, of type SSLv3 was attempting to write the SSLv2 
  331:     ciphers, which were invalid. The SSL_METHOD->put_cipher_by_char 
  332:     method has been modified so it will only write out cipher which
  333:     that method knows about.  
  334: 
  335: 
  336:  Changes between 0.8.0 and 0.8.1
  337: 
  338:   *) Mostly bug fixes. 
  339:      There is an Ephemeral DH cipher problem which is fixed.
  340: 
  341:  SSLeay 0.8.0
  342: 
  343: This version of SSLeay has quite a lot of things different from the
  344: previous version.
  345: 
  346: Basically check all callback parameters, I will be producing documentation
  347: about how to use things in th future.  Currently I'm just getting 080 out
  348: the door.  Please not that there are several ways to do everything, and
  349: most of the applications in the apps directory are hybrids, some using old
  350: methods and some using new methods.
  351: 
  352: Have a look in demos/bio for some very simple programs and
  353: apps/s_client.c and apps/s_server.c for some more advanced versions.
  354: Notes are definitly needed but they are a week or so away.
  355: 
  356: Anyway, some quick nots from Tim Hudson (tjh@cryptsoft.com)
  357: ---
  358: Quick porting notes for moving from SSLeay-0.6.x to SSLeay-0.8.x to
  359: get those people that want to move to using the new code base off to
  360: a quick start.
  361: 
  362: Note that Eric has tidied up a lot of the areas of the API that were
  363: less than desirable and renamed quite a few things (as he had to break
  364: the API in lots of places anyrate). There are a whole pile of additional
  365: functions for making dealing with (and creating) certificates a lot
  366: cleaner.
  367: 
  368: 01-Jul-97
  369: Tim Hudson
  370: tjh@cryptsoft.com
  371: 
  372: ---8<---
  373: 
  374: To maintain code that uses both SSLeay-0.6.x and SSLeay-0.8.x you could
  375: use something like the following (assuming you #include "crypto.h" which
  376: is something that you really should be doing).
  377: 
  378: #if SSLEAY_VERSION_NUMBER >= 0x0800
  379: #define SSLEAY8
  380: #endif
  381: 
  382: buffer.h -> splits into buffer.h and bio.h so you need to include bio.h
  383:             too if you are working with BIO internal stuff (as distinct
  384:         from simply using the interface in an opaque manner)
  385: 
  386: #include "bio.h"    - required along with "buffer.h" if you write
  387:               your own BIO routines as the buffer and bio
  388:               stuff that was intermixed has been separated
  389:               out 
  390:             
  391: envelope.h -> evp.h  (which should have been done ages ago)
  392: 
  393: Initialisation ... don't forget these or you end up with code that
  394: is missing the bits required to do useful things (like ciphers):
  395: 
  396: SSLeay_add_ssl_algorithms()
  397: (probably also want SSL_load_error_strings() too but you should have
  398:  already had that call in place)
  399: 
  400: SSL_CTX_new()   - requires an extra method parameter
  401:               SSL_CTX_new(SSLv23_method()) 
  402:               SSL_CTX_new(SSLv2_method()) 
  403:               SSL_CTX_new(SSLv3_method()) 
  404: 
  405:           OR to only have the server or the client code
  406:               SSL_CTX_new(SSLv23_server_method()) 
  407:               SSL_CTX_new(SSLv2_server_method()) 
  408:               SSL_CTX_new(SSLv3_server_method()) 
  409:           or  
  410:               SSL_CTX_new(SSLv23_client_method()) 
  411:               SSL_CTX_new(SSLv2_client_method()) 
  412:               SSL_CTX_new(SSLv3_client_method()) 
  413: 
  414: SSL_set_default_verify_paths() ... renamed to the more appropriate
  415: SSL_CTX_set_default_verify_paths()
  416: 
  417: If you want to use client certificates then you have to add in a bit
  418: of extra stuff in that a SSLv3 server sends a list of those CAs that
  419: it will accept certificates from ... so you have to provide a list to
  420: SSLeay otherwise certain browsers will not send client certs.
  421: 
  422: SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(s_cert_file));
  423: 
  424: 
  425: X509_NAME_oneline(X)    -> X509_NAME_oneline(X,NULL,0)  
  426:                or provide a buffer and size to copy the
  427:                result into
  428: 
  429: X509_add_cert ->  X509_STORE_add_cert (and you might want to read the
  430:           notes on X509_NAME structure changes too)
  431: 
  432: 
  433: VERIFICATION CODE
  434: =================
  435: 
  436: The codes have all be renamed from VERIFY_ERR_* to X509_V_ERR_* to
  437: more accurately reflect things.
  438: 
  439: The verification callback args are now packaged differently so that
  440: extra fields for verification can be added easily in future without
  441: having to break things by adding extra parameters each release :-)
  442: 
  443: X509_cert_verify_error_string -> X509_verify_cert_error_string
  444: 
  445: 
  446: BIO INTERNALS
  447: =============
  448: 
  449: Eric has fixed things so that extra flags can be introduced in
  450: the BIO layer in future without having to play with all the BIO
  451: modules by adding in some macros.
  452: 
  453: The ugly stuff using 
  454:     b->flags ~= (BIO_FLAGS_RW|BIO_FLAGS_SHOULD_RETRY)
  455: becomes
  456:     BIO_clear_retry_flags(b)
  457: 
  458:     b->flags |= (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)
  459: becomes
  460:     BIO_set_retry_read(b)
  461: 
  462: Also ... BIO_get_retry_flags(b), BIO_set_flags(b)
  463: 
  464: 
  465: 
  466: OTHER THINGS
  467: ============
  468: 
  469: X509_NAME has been altered so that it isn't just a STACK ... the STACK
  470: is now in the "entries" field ... and there are a pile of nice functions
  471: for getting at the details in a much cleaner manner.
  472: 
  473: SSL_CTX has been altered ... "cert" is no longer a direct member of this
  474: structure ... things are now down under "cert_store" (see x509_vfy.h) and
  475: things are no longer in a CERTIFICATE_CTX but instead in a X509_STORE.
  476: If your code "knows" about this level of detail then it will need some 
  477: surgery.
  478: 
  479: If you depending on the incorrect spelling of a number of the error codes
  480: then you will have to change your code as these have been fixed.
  481: 
  482: ENV_CIPHER "type" got renamed to "nid" and as that is what it actually
  483: has been all along so this makes things clearer.
  484: ify_cert_error_string(ctx->error));
  485: 
  486: SSL_R_NO_CIPHER_WE_TRUST -> SSL_R_NO_CIPHER_LIST
  487:             and SSL_R_REUSE_CIPHER_LIST_NOT_ZERO
  488: 
  489: 
  490: 
  491:  Changes between 0.7.x and 0.8.0
  492:   
  493:   *) There have been lots of changes, mostly the addition of SSLv3.
  494:      There have been many additions from people and amongst
  495:      others, C2Net has assisted greatly.
  496:  
  497:  Changes between 0.7.x and 0.7.x
  498: 
  499:   *) Internal development version only
  500: 
  501: SSLeay 0.6.6 13-Jan-1997
  502: 
  503: The main additions are
  504: 
  505: - assember for x86 DES improvments.
  506:   From 191,000 per second on a pentium 100, I now get 281,000.  The inner
  507:   loop and the IP/FP modifications are from
  508:   Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>.  Many thanks for his
  509:   contribution.
  510: - The 'DES macros' introduced in 0.6.5 now have 3 types.
  511:   DES_PTR1, DES_PTR2 and 'normal'.  As per before, des_opts reports which
  512:   is best and there is a summery of mine in crypto/des/options.txt
  513: - A few bug fixes.
  514: - Added blowfish.  It is not used by SSL but all the other stuff that
  515:   deals with ciphers can use it in either ecb, cbc, cfb64 or ofb64 modes.
  516:   There are 3 options for optimising Blowfish.  BF_PTR, BF_PTR2 and 'normal'.
  517:   BF_PTR2 is pentium/x86 specific.  The correct option is setup in
  518:   the 'Configure' script.
  519: - There is now a 'get client certificate' callback which can be
  520:   'non-blocking'.  If more details are required, let me know.  It will
  521:   documented more in SSLv3 when I finish it.
  522: - Bug fixes from 0.6.5 including the infamous 'ca' bug.  The 'make test'
  523:   now tests the ca program.
  524: - Lots of little things modified and tweaked.
  525: 
  526:  SSLeay 0.6.5
  527: 
  528: After quite some time (3 months), the new release.  I have been very busy
  529: for the last few months and so this is mostly bug fixes and improvments.
  530: 
  531: The main additions are
  532: 
  533: - assember for x86 DES.  For all those gcc based systems, this is a big
  534:   improvement.  From 117,000 DES operation a second on a pentium 100,
  535:   I now get 191,000.  I have also reworked the C version so it
  536:   now gives 148,000 DESs per second.  
  537: - As mentioned above, the inner DES macros now have some more variant that
  538:   sometimes help, sometimes hinder performance.  There are now 3 options
  539:   DES_PTR (ptr vs array lookup), DES_UNROLL (full vs partial loop unrolling)
  540:   and DES_RISC (a more register intensive version of the inner macro).
  541:   The crypto/des/des_opts.c program, when compiled and run, will give
  542:   an indication of the correct options to use.
  543: - The BIO stuff has been improved.  Read doc/bio.doc.  There are now
  544:   modules for encryption and base64 encoding and a BIO_printf() function.
  545: - The CA program will accept simple one line X509v3 extensions in the
  546:   ssleay.cnf file.  Have a look at the example.  Currently this just
  547:   puts the text into the certificate as an OCTET_STRING so currently
  548:   the more advanced X509v3 data types are not handled but this is enough
  549:   for the netscape extensions.
  550: - There is the start of a nicer higher level interface to the X509
  551:   strucutre.
  552: - Quite a lot of bug fixes.
  553: - CRYPTO_malloc_init()  (or CRYPTO_set_mem_functions()) can be used
  554:   to define the malloc(), free() and realloc() routines to use
  555:   (look in crypto/crypto.h).  This is mostly needed for Windows NT/95 when
  556:   using DLLs and mixing CRT libraries.
  557: 
  558: In general, read the 'VERSION' file for changes and be aware that some of
  559: the new stuff may not have been tested quite enough yet, so don't just plonk
  560: in SSLeay 0.6.5 when 0.6.4 used to work and expect nothing to break.
  561: 
  562: SSLeay 0.6.4 30/08/96 eay
  563: 
  564: I've just finished some test builds on Windows NT, Windows 3.1, Solaris 2.3,
  565: Solaris 2.5, Linux, IRIX, HPUX 10 and everthing seems to work :-).
  566: 
  567: The main changes in this release
  568: 
  569: - Thread safe.  have a read of doc/threads.doc and play in the mt directory.
  570:   For anyone using 0.6.3 with threads, I found 2 major errors so consider
  571:   moving to 0.6.4.  I have a test program that builds under NT and
  572:   solaris.
  573: - The get session-id callback has changed.  Have a read of doc/callback.doc.
  574: - The X509_cert_verify callback (the SSL_verify callback) now
  575:   has another argument.  Have a read of doc/callback.doc
  576: - 'ca -preserve', sign without re-ordering the DN.  Not tested much.
  577: - VMS support.
  578: - Compile time memory leak detection can now be built into SSLeay.
  579:   Read doc/memory.doc
  580: - CONF routines now understand '\', '\n', '\r' etc.  What this means is that
  581:   the  SPKAC object mentioned in doc/ns-ca.doc can be on multiple lines.
  582: - 'ssleay ciphers' added, lists the default cipher list for SSLeay.
  583: - RC2 key setup is now compatable with Netscape.
  584: - Modifed server side of SSL implementation, big performance difference when
  585:       using session-id reuse.
  586: 
  587: 0.6.3
  588: 
  589: Bug fixes and the addition of some nice stuff to the 'ca' program.
  590: Have a read of doc/ns-ca.doc for how hit has been modified so
  591: it can be driven from a CGI script.  The CGI script is not provided,
  592: but that is just being left as an excersize for the reader :-).
  593: 
  594: 0.6.2
  595: 
  596: This is most bug fixes and functionality improvements.
  597: 
  598: Additions are
  599: - More thread debugging patches, the thread stuff is still being
  600:   tested, but for those keep to play with stuff, have a look in
  601:   crypto/cryptlib.c.  The application needs to define 1 (or optionaly
  602:   a second) callback that is used to implement locking.  Compiling
  603:   with LOCK_DEBUG spits out lots of locking crud :-).
  604:   This is what I'm currently working on.
  605: - SSL_CTX_set_default_passwd_cb() can be used to define the callback
  606:   function used in the SSL*_file() functions used to load keys.  I was
  607:   always of the opinion that people should call
  608:   PEM_read_RSAPrivateKey() and pass the callback they want to use, but
  609:   it appears they just want to use the SSL_*_file() function() :-(.
  610: - 'enc' now has a -kfile so a key can be read from a file.  This is
  611:   mostly used so that the passwd does not appear when using 'ps',
  612:   which appears imposible to stop under solaris.
  613: - X509v3 certificates now work correctly.  I even have more examples
  614:   in my tests :-).  There is now a X509_EXTENSION type that is used in
  615:   X509v3 certificates and CRLv2.
  616: - Fixed that signature type error :-(
  617: - Fixed quite a few potential memory leaks and problems when reusing
  618:   X509, CRL and REQ structures.
  619: - EVP_set_pw_prompt() now sets the library wide default password
  620:   prompt.
  621: - The 'pkcs7' command will now, given the -print_certs flag, output in
  622:   pem format, all certificates and CRL contained within.  This is more
  623:   of a pre-emtive thing for the new verisign distribution method.  I
  624:   should also note, that this also gives and example in code, of how
  625:   to do this :-), or for that matter, what is involved in going the
  626:   other way (list of certs and crl -> pkcs7).
  627: - Added RSA's DESX to the DES library.  It is also available via the
  628:   EVP_desx_cbc() method and via 'enc desx'. 
  629: 
  630: SSLeay 0.6.1
  631: 
  632: The main functional changes since 0.6.0 are as follows
  633: - Bad news, the Microsoft 060 DLL's are not compatable, but the good news is
  634:   that from now on, I'll keep the .def numbers the same so they will be.
  635: - RSA private key operations are about 2 times faster that 0.6.0
  636: - The SSL_CTX now has more fields so default values can be put against
  637:   it.  When an SSL structure is created, these default values are used
  638:   but can be overwritten.  There are defaults for cipher, certificate,
  639:   private key, verify mode and callback.  This means SSL session
  640:   creation can now be
  641:   ssl=SSL_new()
  642:   SSL_set_fd(ssl,sock);
  643:   SSL_accept(ssl)
  644:   ....
  645:   All the other uglyness with having to keep a global copy of the
  646:   private key and certificate/verify mode in the server is now gone.
  647: - ssl/ssltest.c - one process talking SSL to its self for testing.
  648: - Storage of Session-id's can be controled via a session_cache_mode
  649:   flag.  There is also now an automatic default flushing of 
  650:   old session-id's.
  651: - The X509_cert_verify() function now has another parameter, this
  652:   should not effect most people but it now means that the reason for
  653:   the failure to verify is now available via SSL_get_verify_result(ssl).
  654:   You don't have to use a global variable.
  655: - SSL_get_app_data() and SSL_set_app_data() can be used to keep some
  656:   application data against the SSL structure.  It is upto the application
  657:   to free the data.  I don't use it, but it is available.
  658: - SSL_CTX_set_cert_verify_callback() can be used to specify a
  659:   verify callback function that completly replaces my certificate
  660:   verification code.  Xcert should be able to use this :-).
  661:   The callback is of the form int app_verify_callback(arg,ssl,cert).
  662:   This needs to be documented more.
  663: - I have started playing with shared library builds, have a look in
  664:   the shlib directory.  It is very simple.  If you need a numbered
  665:   list of functions, have a look at misc/crypto.num and misc/ssl.num.
  666: - There is some stuff to do locking to make the library thread safe.
  667:   I have only started this stuff and have not finished.  If anyone is
  668:   keen to do so, please send me the patches when finished.
  669: 
  670: So I have finally made most of the additions to the SSL interface that
  671: I thought were needed.
  672: 
  673: There will probably be a pause before I make any non-bug/documentation
  674: related changes to SSLeay since I'm feeling like a bit of a break.
  675: 
  676: eric - 12 Jul 1996
  677: I saw recently a comment by some-one that we now seem to be entering
  678: the age of perpetual Beta software.
  679: Pioneered by packages like linux but refined to an art form by
  680: netscape.
  681: 
  682: I too wish to join this trend with the anouncement of SSLeay 0.6.0 :-).
  683: 
  684: There are quite a large number of sections that are 'works in
  685: progress' in this package.  I will also list the major changes and
  686: what files you should read.
  687: 
  688: BIO - this is the new IO structure being used everywhere in SSLeay.  I
  689: started out developing this because of microsoft, I wanted a mechanism
  690: to callback to the application for all IO, so Windows 3.1 DLL
  691: perversion could be hidden from me and the 15 different ways to write
  692: to a file under NT would also not be dictated by me at library build
  693: time.  What the 'package' is is an API for a data structure containing
  694: functions.  IO interfaces can be written to conform to the
  695: specification.  This in not intended to hide the underlying data type
  696: from the application, but to hide it from SSLeay :-).
  697: I have only really finished testing the FILE * and socket/fd modules.
  698: There are also 'filter' BIO's.  Currently I have only implemented
  699: message digests, and it is in use in the dgst application.  This
  700: functionality will allow base64/encrypto/buffering modules to be
  701: 'push' into a BIO without it affecting the semantics.  I'm also
  702: working on an SSL BIO which will hide the SSL_accept()/SLL_connet()
  703: from an event loop which uses the interface.
  704: It is also possible to 'attach' callbacks to a BIO so they get called
  705: before and after each operation, alowing extensive debug output
  706: to be generated (try running dgst with -d).
  707: 
  708: Unfortunaly in the conversion from 0.5.x to 0.6.0, quite a few
  709: functions that used to take FILE *, now take BIO *.
  710: The wrappers are easy to write
  711: 
  712: function_fp(fp,x)
  713: FILE *fp;
  714:     {
  715:     BIO *b;
  716:     int ret;
  717: 
  718:     if ((b=BIO_new(BIO_s_file())) == NULL) error.....
  719:     BIO_set_fp(b,fp,BIO_NOCLOSE);
  720:     ret=function_bio(b,x);
  721:     BIO_free(b);
  722:     return(ret);
  723:     }
  724: Remember, there are no functions that take FILE * in SSLeay when
  725: compiled for Windows 3.1 DLL's.
  726: 
  727: --
  728: I have added a general EVP_PKEY type that can hold a public/private
  729: key.  This is now what is used by the EVP_ functions and is passed
  730: around internally.  I still have not done the PKCS#8 stuff, but
  731: X509_PKEY is defined and waiting :-)
  732: 
  733: --
  734: For a full function name listings, have a look at ms/crypt32.def and
  735: ms/ssl32.def.  These are auto-generated but are complete.
  736: Things like ASN1_INTEGER_get() have been added and are in here if you
  737: look.  I have renamed a few things, again, have a look through the</