Fix some of the command line password stuff. New function
[openssl.git] / CHANGES
1
2  OpenSSL CHANGES
3  _______________
4
5  Changes between 0.9.4 and 0.9.5  [xx XXX 1999]
6
7   *) Add a function 'd2i_AutoPrivateKey()' this will automatically decide
8      if a DER encoded private key is RSA or DSA traditional format. Changed
9      d2i_PrivateKey_bio() to use it. This is only needed for the "traditional"
10      format DER encoded private key. Newer code should use PKCS#8 format which
11      has the key type encoded in the ASN1 structure. Added DER private key
12      support to pkcs8 application.
13      [Steve Henson]
14
15   *) SSL 3/TLS 1 servers now don't request certificates when an anonymous
16      ciphersuites has been selected (as required by the SSL 3/TLS 1
17      specifications).  Exception: When SSL_VERIFY_FAIL_IF_NO_PEER_CERT
18      is set, we interpret this as a request to violate the specification
19      (the worst that can happen is a handshake failure, and 'correct'
20      behaviour would result in a handshake failure anyway).
21      [Bodo Moeller]
22
23   *) In SSL_CTX_add_session, take into account that there might be multiple
24      SSL_SESSION structures with the same session ID (e.g. when two threads
25      concurrently obtain them from an external cache).
26      The internal cache can handle only one SSL_SESSION with a given ID,
27      so if there's a conflict, we now throw out the old one to achieve
28      consistency.
29      [Bodo Moeller]
30
31   *) Add OIDs for idea and blowfish in CBC mode. This will allow both
32      to be used in PKCS#5 v2.0 and S/MIME.  Also add checking to
33      some routines that use cipher OIDs: some ciphers do not have OIDs
34      defined and so they cannot be used for S/MIME and PKCS#5 v2.0 for
35      example.
36      [Steve Henson]
37
38   *) Simplify the trust setting structure and code. Now we just have
39      two sequences of OIDs for trusted and rejected settings. These will
40      typically have values the same as the extended key usage extension
41      and any application specific purposes.
42
43      The trust checking code now has a default behaviour: it will just
44      check for an object with the same NID as the passed id. Functions can
45      be provided to override either the default behaviour or the behaviour
46      for a given id. SSL client, server and email already have functions
47      in place for compatibility: they check the NID and also return "trusted"
48      if the certificate is self signed.
49      [Steve Henson]
50
51   *) Add d2i,i2d bio/fp functions for PrivateKey: these convert the
52      traditional format into an EVP_PKEY structure.
53      [Steve Henson]
54
55   *) Add a password callback function PEM_cb() which either prompts for
56      a password if usr_data is NULL or otherwise assumes it is a null
57      terminated password. Allow passwords to be passed on command line
58      environment or config files in a few more utilities.
59      [Steve Henson]
60
61   *) Add a bunch of DER and PEM functions to handle PKCS#8 format private
62      keys. Add some short names for PKCS#8 PBE algorithms and allow them
63      to be specified on the command line for the pkcs8 and pkcs12 utilities.
64      Update documentation.
65      [Steve Henson]
66
67   *) Support for ASN1 "NULL" type. This could be handled before by using
68      ASN1_TYPE but there wasn't any function that would try to read a NULL
69      and produce an error if it couldn't. For compatibility we also have
70      ASN1_NULL_new() and ASN1_NULL_free() functions but these are faked and
71      don't allocate anything because they don't need to.
72      [Steve Henson]
73
74   *) Initial support for MacOS is now provided. Examine INSTALL.MacOS
75      for details.
76      [Andy Polyakov, Roy Woods <roy@centicsystems.ca>]
77
78   *) Rebuild of the memory allocation routines used by OpenSSL code and
79      possibly others as well.  The purpose is to make an interface that
80      provide hooks so anyone can build a separate set of allocation and
81      deallocation routines to be used by OpenSSL, for example if memory
82      pool implementations, or something else.  The same is provided for
83      memory debugging code.  OpenSSL already comes with code that finds
84      memory leaks, but this gives people a chance to debug other memory
85      problems.
86
87      With these changes, a new set of functions and macros have appeared:
88
89        CRYPTO_set_mem_debug_functions()         [F]
90        CRYPTO_get_mem_debug_functions()         [F]
91        CRYPTO_dbg_set_options()                 [F]
92        CRYPTO_dbg_get_options()                 [F]
93        CRYPTO_melloc_debug_init()               [M]
94
95      The memory debug functions are NULL by default, unless the library
96      is compiled with CRYPTO_MDEBUG or friends is defined.  If someone
97      wants to debug memory anyway, CRYPTO_malloc_debug_init() or
98      CRYPTO_set_mem_debug_functions() must be used.
99
100      Also, things like CRYPTO_set_mem_functions will always give the
101      expected result (the new set of functions is used for allocation
102      and deallocation) at all times, regardless of platform and compiler
103      options.
104
105      To finish it up, some functions that were never use in any other
106      way than through macros have a new API and new semantic:
107
108        CRYPTO_dbg_malloc()
109        CRYPTO_dbg_realloc()
110        CRYPTO_dbg_free()
111
112      All macros of value have retained their old syntax.
113      [Richard Levitte]
114
115   *) Some S/MIME fixes. The OID for SMIMECapabilities was wrong, the
116      ordering of SMIMECapabilities wasn't in "strength order" and there
117      was a missing NULL in the AlgorithmIdentifier for the SHA1 signature
118      algorithm.
119      [Steve Henson]
120
121   *) Some ASN1 types with illegal zero length encoding (INTEGER,
122      ENUMERATED and OBJECT IDENTIFIER) choked the ASN1 routines.
123      [Frans Heymans <fheymans@isaserver.be>, modified by Steve Henson]
124
125   *) Merge in my S/MIME library for OpenSSL. This provides a simple
126      S/MIME API on top of the PKCS#7 code, a MIME parser (with enough
127      functionality to handle multipart/signed properly) and a utility
128      called 'smime' to call all this stuff. This is based on code I
129      originally wrote for Celo who have kindly allowed it to be
130      included in OpenSSL.
131      [Steve Henson]
132
133   *) Add variants des_set_key_checked and des_set_key_unchecked of
134      des_set_key (aka des_key_sched).  Global variable des_check_key
135      decides which of these is called by des_set_key; this way
136      des_check_key behaves as it always did, but applications and
137      the library itself, which was buggy for des_check_key == 1,
138      have a cleaner way to pick the version they need.
139      [Bodo Moeller]
140
141   *) New function PKCS12_newpass() which changes the password of a
142      PKCS12 structure.
143      [Steve Henson]
144
145   *) Modify X509_TRUST and X509_PURPOSE so it also uses a static and
146      dynamic mix. In both cases the ids can be used as an index into the
147      table. Also modified the X509_TRUST_add() and X509_PURPOSE_add()
148      functions so they accept a list of the field values and the
149      application doesn't need to directly manipulate the X509_TRUST
150      structure.
151      [Steve Henson]
152
153   *) Modify the ASN1_STRING_TABLE stuff so it also uses bsearch and doesn't
154      need initialising.
155      [Steve Henson]
156
157   *) Modify the way the V3 extension code looks up extensions. This now
158      works in a similar way to the object code: we have some "standard"
159      extensions in a static table which is searched with OBJ_bsearch()
160      and the application can add dynamic ones if needed. The file
161      crypto/x509v3/ext_dat.h now has the info: this file needs to be
162      updated whenever a new extension is added to the core code and kept
163      in ext_nid order. There is a simple program 'tabtest.c' which checks
164      this. New extensions are not added too often so this file can readily
165      be maintained manually.
166
167      There are two big advantages in doing things this way. The extensions
168      can be looked up immediately and no longer need to be "added" using
169      X509V3_add_standard_extensions(): this function now does nothing.
170      [Side note: I get *lots* of email saying the extension code doesn't
171       work because people forget to call this function]
172      Also no dynamic allocation is done unless new extensions are added:
173      so if we don't add custom extensions there is no need to call
174      X509V3_EXT_cleanup().
175      [Steve Henson]
176
177   *) Modify enc utility's salting as follows: make salting the default. Add a
178      magic header, so unsalted files fail gracefully instead of just decrypting
179      to garbage. This is because not salting is a big security hole, so people
180      should be discouraged from doing it.
181      [Ben Laurie]
182
183   *) Fixes and enhancements to the 'x509' utility. It allowed a message
184      digest to be passed on the command line but it only used this
185      parameter when signing a certificate. Modified so all relevant
186      operations are affected by the digest parameter including the
187      -fingerprint and -x509toreq options. Also -x509toreq choked if a
188      DSA key was used because it didn't fix the digest.
189      [Steve Henson]
190
191   *) Initial certificate chain verify code. Currently tests the untrusted
192      certificates for consistency with the verify purpose (which is set
193      when the X509_STORE_CTX structure is set up) and checks the pathlength.
194
195      There is a NO_CHAIN_VERIFY compilation option to keep the old behaviour:
196      this is because it will reject chains with invalid extensions whereas
197      every previous version of OpenSSL and SSLeay made no checks at all.
198
199      Trust code: checks the root CA for the relevant trust settings. Trust
200      settings have an initial value consistent with the verify purpose: e.g.
201      if the verify purpose is for SSL client use it expects the CA to be
202      trusted for SSL client use. However the default value can be changed to
203      permit custom trust settings: one example of this would be to only trust
204      certificates from a specific "secure" set of CAs.
205
206      Also added X509_STORE_CTX_new() and X509_STORE_CTX_free() functions
207      which should be used for version portability: especially since the
208      verify structure is likely to change more often now.
209
210      SSL integration. Add purpose and trust to SSL_CTX and SSL and functions
211      to set them. If not set then assume SSL clients will verify SSL servers
212      and vice versa.
213
214      Two new options to the verify program: -untrusted allows a set of
215      untrusted certificates to be passed in and -purpose which sets the
216      intended purpose of the certificate. If a purpose is set then the
217      new chain verify code is used to check extension consistency.
218      [Steve Henson]
219
220   *) Support for the authority information access extension.
221      [Steve Henson]
222
223   *) Modify RSA and DSA PEM read routines to transparently handle
224      PKCS#8 format private keys. New *_PUBKEY_* functions that handle
225      public keys in a format compatible with certificate
226      SubjectPublicKeyInfo structures. Unfortunately there were already
227      functions called *_PublicKey_* which used various odd formats so
228      these are retained for compatibility: however the DSA variants were
229      never in a public release so they have been deleted. Changed dsa/rsa
230      utilities to handle the new format: note no releases ever handled public
231      keys so we should be OK.
232
233      The primary motivation for this change is to avoid the same fiasco
234      that dogs private keys: there are several incompatible private key
235      formats some of which are standard and some OpenSSL specific and
236      require various evil hacks to allow partial transparent handling and
237      even then it doesn't work with DER formats. Given the option anything
238      other than PKCS#8 should be dumped: but the other formats have to
239      stay in the name of compatibility.
240
241      With public keys and the benefit of hindsight one standard format 
242      is used which works with EVP_PKEY, RSA or DSA structures: though
243      it clearly returns an error if you try to read the wrong kind of key.
244
245      Added a -pubkey option to the 'x509' utility to output the public key.
246      Also rename the EVP_PKEY_get_*() to EVP_PKEY_rget_*() and add
247      EVP_PKEY_rset_*() functions that do the same as the EVP_PKEY_assign_*()
248      except they up the reference count of the added key (they don't "swallow"
249      the supplied key).
250      [Steve Henson]
251
252   *) Fixes to crypto/x509/by_file.c the code to read in certificates and
253      CRLs would fail if the file contained no certificates or no CRLs:
254      added a new function to read in both types and return the number
255      read: this means that if none are read it will be an error. The
256      DER versions of the certificate and CRL reader would always fail
257      because it isn't possible to mix certificates and CRLs in DER format
258      without choking one or the other routine. Changed this to just read
259      a certificate: this is the best we can do. Also modified the code
260      in apps/verify.c to take notice of return codes: it was previously
261      attempting to read in certificates from NULL pointers and ignoring
262      any errors: this is one reason why the cert and CRL reader seemed
263      to work. It doesn't check return codes from the default certificate
264      routines: these may well fail if the certificates aren't installed.
265      [Steve Henson]
266
267   *) Code to support otherName option in GeneralName.
268      [Steve Henson]
269
270   *) First update to verify code. Change the verify utility
271      so it warns if it is passed a self signed certificate:
272      for consistency with the normal behaviour. X509_verify
273      has been modified to it will now verify a self signed
274      certificate if *exactly* the same certificate appears
275      in the store: it was previously impossible to trust a
276      single self signed certificate. This means that:
277      openssl verify ss.pem
278      now gives a warning about a self signed certificate but
279      openssl verify -CAfile ss.pem ss.pem
280      is OK.
281      [Steve Henson]
282
283   *) For servers, store verify_result in SSL_SESSION data structure
284      (and add it to external session representation).
285      This is needed when client certificate verifications fails,
286      but an application-provided verification callback (set by
287      SSL_CTX_set_cert_verify_callback) allows accepting the session
288      anyway (i.e. leaves x509_store_ctx->error != X509_V_OK
289      but returns 1): When the session is reused, we have to set
290      ssl->verify_result to the appropriate error code to avoid
291      security holes.
292      [Bodo Moeller, problem pointed out by Lutz Jaenicke]
293
294   *) Fix a bug in the new PKCS#7 code: it didn't consider the
295      case in PKCS7_dataInit() where the signed PKCS7 structure
296      didn't contain any existing data because it was being created.
297      [Po-Cheng Chen <pocheng@nst.com.tw>, slightly modified by Steve Henson]
298
299   *) Add a salt to the key derivation routines in enc.c. This
300      forms the first 8 bytes of the encrypted file. Also add a
301      -S option to allow a salt to be input on the command line.
302      [Steve Henson]
303
304   *) New function X509_cmp(). Oddly enough there wasn't a function
305      to compare two certificates. We do this by working out the SHA1
306      hash and comparing that. X509_cmp() will be needed by the trust
307      code.
308      [Steve Henson]
309
310   *) Correctly increment the reference count in the SSL_SESSION pointer 
311      returned from SSL_get_session().
312      [Geoff Thorpe <geoff@eu.c2.net>]
313
314   *) Fix for 'req': it was adding a null to request attributes.
315      Also change the X509_LOOKUP and X509_INFO code to handle
316      certificate auxiliary information.
317      [Steve Henson]
318
319   *) Add support for 40 and 64 bit RC2 and RC4 algorithms: document
320      the 'enc' command.
321      [Steve Henson]
322
323   *) Add the possibility to add extra information to the memory leak
324      detecting output, to form tracebacks, showing from where each
325      allocation was originated.  Also updated sid code to be multi-
326      thread-safe.
327      [Richard Levitte]
328
329   *) Add options -text and -noout to pkcs7 utility and delete the
330      encryption options which never did anything. Update docs.
331      [Steve Henson]
332
333   *) Add options to some of the utilities to allow the pass phrase
334      to be included on either the command line (not recommended on
335      OSes like Unix) or read from the environment. Update the
336      manpages and fix a few bugs.
337      [Steve Henson]
338
339   *) Add a few manpages for some of the openssl commands.
340      [Steve Henson]
341
342   *) Fix the -revoke option in ca. It was freeing up memory twice,
343      leaking and not finding already revoked certificates.
344      [Steve Henson]
345
346   *) Extensive changes to support certificate auxiliary information.
347      This involves the use of X509_CERT_AUX structure and X509_AUX
348      functions. An X509_AUX function such as PEM_read_X509_AUX()
349      can still read in a certificate file in the usual way but it
350      will also read in any additional "auxiliary information". By
351      doing things this way a fair degree of compatibility can be
352      retained: existing certificates can have this information added
353      using the new 'x509' options. 
354
355      Current auxiliary information includes an "alias" and some trust
356      settings. The trust settings will ultimately be used in enhanced
357      certificate chain verification routines: currently a certificate
358      can only be trusted if it is self signed and then it is trusted
359      for all purposes.
360      [Steve Henson]
361
362   *) Fix assembler for Alpha (tested only on DEC OSF not Linux or *BSD).  The
363      problem was that one of the replacement routines had not been working since
364      SSLeay releases.  For now the offending routine has been replaced with
365      non-optimised assembler.  Even so, this now gives around 95% performance
366      improvement for 1024 bit RSA signs.
367      [Mark Cox]
368
369   *) Hack to fix PKCS#7 decryption when used with some unorthodox RC2 
370      handling. Most clients have the effective key size in bits equal to
371      the key length in bits: so a 40 bit RC2 key uses a 40 bit (5 byte) key.
372      A few however don't do this and instead use the size of the decrypted key
373      to determine the RC2 key length and the AlgorithmIdentifier to determine
374      the effective key length. In this case the effective key lenth can still
375      be 40 bits but the key length can be 168 bits for example. This is fixed
376      by manually forcing an RC2 key into the EVP_PKEY structure because the
377      EVP code can't currently handle unusual RC2 key sizes: it always assumes
378      the key length and effective key length are equal.
379      [Steve Henson]
380
381   *) Add a bunch of functions that should simplify the creation of 
382      X509_NAME structures. Now you should be able to do:
383      X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC, "Steve", -1, -1, 0);
384      and have it automatically work out the correct field type and fill in
385      the structures. The more adventurous can try:
386      X509_NAME_add_entry_by_txt(nm, field, MBSTRING_UTF8, str, -1, -1, 0);
387      and it will (hopefully) work out the correct multibyte encoding.
388      [Steve Henson]
389
390   *) Change the 'req' utility to use the new field handling and multibyte
391      copy routines. Before the DN field creation was handled in an ad hoc
392      way in req, ca, and x509 which was rather broken and didn't support
393      BMPStrings or UTF8Strings. Since some software doesn't implement
394      BMPStrings or UTF8Strings yet, they can be enabled using the config file
395      using the dirstring_type option. See the new comment in the default
396      openssl.cnf for more info.
397      [Steve Henson]
398
399   *) Make crypto/rand/md_rand.c more robust:
400      - Assure unique random numbers after fork().
401      - Make sure that concurrent threads access the global counter and
402        md serializably so that we never lose entropy in them
403        or use exactly the same state in multiple threads.
404        Access to the large state is not always serializable because
405        the additional locking could be a performance killer, and
406        md should be large enough anyway.
407      [Bodo Moeller]
408
409   *) New file apps/app_rand.c with commonly needed functionality
410      for handling the random seed file.
411
412      Use the random seed file in some applications that previously did not:
413           ca,
414           dsaparam -genkey (which also ignored its '-rand' option), 
415           s_client,
416           s_server,
417           x509 (when signing).
418      Except on systems with /dev/urandom, it is crucial to have a random
419      seed file at least for key creation, DSA signing, and for DH exchanges;
420      for RSA signatures we could do without one.
421
422      gendh and gendsa (unlike genrsa) used to read only the first byte
423      of each file listed in the '-rand' option.  The function as previously
424      found in genrsa is now in app_rand.c and is used by all programs
425      that support '-rand'.
426      [Bodo Moeller]
427
428   *) In RAND_write_file, use mode 0600 for creating files;
429      don't just chmod when it may be too late.
430      [Bodo Moeller]
431
432   *) Report an error from X509_STORE_load_locations
433      when X509_LOOKUP_load_file or X509_LOOKUP_add_dir failed.
434      [Bill Perry]
435
436   *) New function ASN1_mbstring_copy() this copies a string in either
437      ASCII, Unicode, Universal (4 bytes per character) or UTF8 format
438      into an ASN1_STRING type. A mask of permissible types is passed
439      and it chooses the "minimal" type to use or an error if not type
440      is suitable.
441      [Steve Henson]
442
443   *) Add function equivalents to the various macros in asn1.h. The old
444      macros are retained with an M_ prefix. Code inside the library can
445      use the M_ macros. External code (including the openssl utility)
446      should *NOT* in order to be "shared library friendly".
447      [Steve Henson]
448
449   *) Add various functions that can check a certificate's extensions
450      to see if it usable for various purposes such as SSL client,
451      server or S/MIME and CAs of these types. This is currently 
452      VERY EXPERIMENTAL but will ultimately be used for certificate chain
453      verification. Also added a -purpose flag to x509 utility to
454      print out all the purposes.
455      [Steve Henson]
456
457   *) Add a CRYPTO_EX_DATA to X509 certificate structure and associated
458      functions.
459      [Steve Henson]
460
461   *) New X509V3_{X509,CRL,REVOKED}_get_d2i() functions. These will search
462      for, obtain and decode and extension and obtain its critical flag.
463      This allows all the necessary extension code to be handled in a
464      single function call.
465      [Steve Henson]
466
467   *) RC4 tune-up featuring 30-40% performance improvement on most RISC
468      platforms. See crypto/rc4/rc4_enc.c for further details.
469      [Andy Polyakov]
470
471   *) New -noout option to asn1parse. This causes no output to be produced
472      its main use is when combined with -strparse and -out to extract data
473      from a file (which may not be in ASN.1 format).
474      [Steve Henson]
475
476   *) Fix for pkcs12 program. It was hashing an invalid certificate pointer
477      when producing the local key id.
478      [Richard Levitte <levitte@stacken.kth.se>]
479
480   *) New option -dhparam in s_server. This allows a DH parameter file to be
481      stated explicitly. If it is not stated then it tries the first server
482      certificate file. The previous behaviour hard coded the filename
483      "server.pem".
484      [Steve Henson]
485
486   *) Add -pubin and -pubout options to the rsa and dsa commands. These allow
487      a public key to be input or output. For example:
488      openssl rsa -in key.pem -pubout -out pubkey.pem
489      Also added necessary DSA public key functions to handle this.
490      [Steve Henson]
491
492   *) Fix so PKCS7_dataVerify() doesn't crash if no certificates are contained
493      in the message. This was handled by allowing
494      X509_find_by_issuer_and_serial() to tolerate a NULL passed to it.
495      [Steve Henson, reported by Sampo Kellomaki <sampo@mail.neuronio.pt>]
496
497   *) Fix for bug in d2i_ASN1_bytes(): other ASN1 functions add an extra null
498      to the end of the strings whereas this didn't. This would cause problems
499      if strings read with d2i_ASN1_bytes() were later modified.
500      [Steve Henson, reported by Arne Ansper <arne@ats.cyber.ee>]
501
502   *) Fix for base64 decode bug. When a base64 bio reads only one line of
503      data and it contains EOF it will end up returning an error. This is
504      caused by input 46 bytes long. The cause is due to the way base64
505      BIOs find the start of base64 encoded data. They do this by trying a
506      trial decode on each line until they find one that works. When they
507      do a flag is set and it starts again knowing it can pass all the
508      data directly through the decoder. Unfortunately it doesn't reset
509      the context it uses. This means that if EOF is reached an attempt
510      is made to pass two EOFs through the context and this causes the
511      resulting error. This can also cause other problems as well. As is
512      usual with these problems it takes *ages* to find and the fix is
513      trivial: move one line.
514      [Steve Henson, reported by ian@uns.ns.ac.yu (Ivan Nejgebauer) ]
515
516   *) Ugly workaround to get s_client and s_server working under Windows. The
517      old code wouldn't work because it needed to select() on sockets and the
518      tty (for keypresses and to see if data could be written). Win32 only
519      supports select() on sockets so we select() with a 1s timeout on the
520      sockets and then see if any characters are waiting to be read, if none
521      are present then we retry, we also assume we can always write data to
522      the tty. This isn't nice because the code then blocks until we've
523      received a complete line of data and it is effectively polling the
524      keyboard at 1s intervals: however it's quite a bit better than not
525      working at all :-) A dedicated Windows application might handle this
526      with an event loop for example.
527      [Steve Henson]
528
529   *) Enhance RSA_METHOD structure. Now there are two extra methods, rsa_sign
530      and rsa_verify. When the RSA_FLAGS_SIGN_VER option is set these functions
531      will be called when RSA_sign() and RSA_verify() are used. This is useful
532      if rsa_pub_dec() and rsa_priv_enc() equivalents are not available.
533      For this to work properly RSA_public_decrypt() and RSA_private_encrypt()
534      should *not* be used: RSA_sign() and RSA_verify() must be used instead.
535      This necessitated the support of an extra signature type NID_md5_sha1
536      for SSL signatures and modifications to the SSL library to use it instead
537      of calling RSA_public_decrypt() and RSA_private_encrypt().
538      [Steve Henson]
539
540   *) Add new -verify -CAfile and -CApath options to the crl program, these
541      will lookup a CRL issuers certificate and verify the signature in a
542      similar way to the verify program. Tidy up the crl program so it
543      no longer acesses structures directly. Make the ASN1 CRL parsing a bit
544      less strict. It will now permit CRL extensions even if it is not
545      a V2 CRL: this will allow it to tolerate some broken CRLs.
546      [Steve Henson]
547
548   *) Initialize all non-automatic variables each time one of the openssl
549      sub-programs is started (this is necessary as they may be started
550      multiple times from the "OpenSSL>" prompt).
551      [Lennart Bang, Bodo Moeller]
552
553   *) Preliminary compilation option RSA_NULL which disables RSA crypto without
554      removing all other RSA functionality (this is what NO_RSA does). This
555      is so (for example) those in the US can disable those operations covered
556      by the RSA patent while allowing storage and parsing of RSA keys and RSA
557      key generation.
558      [Steve Henson]
559
560   *) Non-copying interface to BIO pairs.
561      (still largely untested)
562      [Bodo Moeller]
563
564   *) New function ANS1_tag2str() to convert an ASN1 tag to a descriptive
565      ASCII string. This was handled independently in various places before.
566      [Steve Henson]
567
568   *) New functions UTF8_getc() and UTF8_putc() that parse and generate
569      UTF8 strings a character at a time.
570      [Steve Henson]
571
572   *) Use client_version from client hello to select the protocol
573      (s23_srvr.c) and for RSA client key exchange verification
574      (s3_srvr.c), as required by the SSL 3.0/TLS 1.0 specifications.
575      [Bodo Moeller]
576
577   *) Add various utility functions to handle SPKACs, these were previously
578      handled by poking round in the structure internals. Added new function
579      NETSCAPE_SPKI_print() to print out SPKAC and a new utility 'spkac' to
580      print, verify and generate SPKACs. Based on an original idea from
581      Massimiliano Pala <madwolf@comune.modena.it> but extensively modified.
582      [Steve Henson]
583
584   *) RIPEMD160 is operational on all platforms and is back in 'make test'.
585      [Andy Polyakov]
586
587   *) Allow the config file extension section to be overwritten on the
588      command line. Based on an original idea from Massimiliano Pala
589      <madwolf@comune.modena.it>. The new option is called -extensions
590      and can be applied to ca, req and x509. Also -reqexts to override
591      the request extensions in req and -crlexts to override the crl extensions
592      in ca.
593      [Steve Henson]
594
595   *) Add new feature to the SPKAC handling in ca.  Now you can include
596      the same field multiple times by preceding it by "XXXX." for example:
597      1.OU="Unit name 1"
598      2.OU="Unit name 2"
599      this is the same syntax as used in the req config file.
600      [Steve Henson]
601
602   *) Allow certificate extensions to be added to certificate requests. These
603      are specified in a 'req_extensions' option of the req section of the
604      config file. They can be printed out with the -text option to req but
605      are otherwise ignored at present.
606      [Steve Henson]
607
608   *) Fix a horrible bug in enc_read() in crypto/evp/bio_enc.c: if the first
609      data read consists of only the final block it would not decrypted because
610      EVP_CipherUpdate() would correctly report zero bytes had been decrypted.
611      A misplaced 'break' also meant the decrypted final block might not be
612      copied until the next read.
613      [Steve Henson]
614
615   *) Initial support for DH_METHOD. Again based on RSA_METHOD. Also added
616      a few extra parameters to the DH structure: these will be useful if
617      for example we want the value of 'q' or implement X9.42 DH.
618      [Steve Henson]
619
620   *) Initial support for DSA_METHOD. This is based on the RSA_METHOD and
621      provides hooks that allow the default DSA functions or functions on a
622      "per key" basis to be replaced. This allows hardware acceleration and
623      hardware key storage to be handled without major modification to the
624      library. Also added low level modexp hooks and CRYPTO_EX structure and 
625      associated functions.
626      [Steve Henson]
627
628   *) Add a new flag to memory BIOs, BIO_FLAG_MEM_RDONLY. This marks the BIO
629      as "read only": it can't be written to and the buffer it points to will
630      not be freed. Reading from a read only BIO is much more efficient than
631      a normal memory BIO. This was added because there are several times when
632      an area of memory needs to be read from a BIO. The previous method was
633      to create a memory BIO and write the data to it, this results in two
634      copies of the data and an O(n^2) reading algorithm. There is a new
635      function BIO_new_mem_buf() which creates a read only memory BIO from
636      an area of memory. Also modified the PKCS#7 routines to use read only
637      memory BIOSs.
638      [Steve Henson]
639
640   *) Bugfix: ssl23_get_client_hello did not work properly when called in
641      state SSL23_ST_SR_CLNT_HELLO_B, i.e. when the first 7 bytes of
642      a SSLv2-compatible client hello for SSLv3 or TLSv1 could be read,
643      but a retry condition occured while trying to read the rest.
644      [Bodo Moeller]
645
646   *) The PKCS7_ENC_CONTENT_new() function was setting the content type as
647      NID_pkcs7_encrypted by default: this was wrong since this should almost
648      always be NID_pkcs7_data. Also modified the PKCS7_set_type() to handle
649      the encrypted data type: this is a more sensible place to put it and it
650      allows the PKCS#12 code to be tidied up that duplicated this
651      functionality.
652      [Steve Henson]
653
654   *) Changed obj_dat.pl script so it takes its input and output files on
655      the command line. This should avoid shell escape redirection problems
656      under Win32.
657      [Steve Henson]
658
659   *) Initial support for certificate extension requests, these are included
660      in things like Xenroll certificate requests. Included functions to allow
661      extensions to be obtained and added.
662      [Steve Henson]
663
664   *) -crlf option to s_client and s_server for sending newlines as
665      CRLF (as required by many protocols).
666      [Bodo Moeller]
667
668  Changes between 0.9.3a and 0.9.4  [09 Aug 1999]
669   
670   *) Install libRSAglue.a when OpenSSL is built with RSAref.
671      [Ralf S. Engelschall]
672
673   *) A few more ``#ifndef NO_FP_API / #endif'' pairs for consistency.
674      [Andrija Antonijevic <TheAntony2@bigfoot.com>]
675
676   *) Fix -startdate and -enddate (which was missing) arguments to 'ca'
677      program.
678      [Steve Henson]
679
680   *) New function DSA_dup_DH, which duplicates DSA parameters/keys as
681      DH parameters/keys (q is lost during that conversion, but the resulting
682      DH parameters contain its length).
683
684      For 1024-bit p, DSA_generate_parameters followed by DSA_dup_DH is
685      much faster than DH_generate_parameters (which creates parameters
686      where p = 2*q + 1), and also the smaller q makes DH computations
687      much more efficient (160-bit exponentiation instead of 1024-bit
688      exponentiation); so this provides a convenient way to support DHE
689      ciphersuites in SSL/TLS servers (see ssl/ssltest.c).  It is of
690      utter importance to use
691          SSL_CTX_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
692      or
693          SSL_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
694      when such DH parameters are used, because otherwise small subgroup
695      attacks may become possible!
696      [Bodo Moeller]
697
698   *) Avoid memory leak in i2d_DHparams.
699      [Bodo Moeller]
700
701   *) Allow the -k option to be used more than once in the enc program:
702      this allows the same encrypted message to be read by multiple recipients.
703      [Steve Henson]
704
705   *) New function OBJ_obj2txt(buf, buf_len, a, no_name), this converts
706      an ASN1_OBJECT to a text string. If the "no_name" parameter is set then
707      it will always use the numerical form of the OID, even if it has a short
708      or long name.
709      [Steve Henson]
710
711   *) Added an extra RSA flag: RSA_FLAG_EXT_PKEY. Previously the rsa_mod_exp
712      method only got called if p,q,dmp1,dmq1,iqmp components were present,
713      otherwise bn_mod_exp was called. In the case of hardware keys for example
714      no private key components need be present and it might store extra data
715      in the RSA structure, which cannot be accessed from bn_mod_exp.
716      By setting RSA_FLAG_EXT_PKEY rsa_mod_exp will always be called for
717      private key operations.
718      [Steve Henson]
719
720   *) Added support for SPARC Linux.
721      [Andy Polyakov]
722
723   *) pem_password_cb function type incompatibly changed from
724           typedef int pem_password_cb(char *buf, int size, int rwflag);
725      to
726           ....(char *buf, int size, int rwflag, void *userdata);
727      so that applications can pass data to their callbacks:
728      The PEM[_ASN1]_{read,write}... functions and macros now take an
729      additional void * argument, which is just handed through whenever
730      the password callback is called.
731      [Damien Miller <dmiller@ilogic.com.au>; tiny changes by Bodo Moeller]
732
733      New function SSL_CTX_set_default_passwd_cb_userdata.
734
735      Compatibility note: As many C implementations push function arguments
736      onto the stack in reverse order, the new library version is likely to
737      interoperate with programs that have been compiled with the old
738      pem_password_cb definition (PEM_whatever takes some data that
739      happens to be on the stack as its last argument, and the callback
740      just ignores this garbage); but there is no guarantee whatsoever that
741      this will work.
742
743   *) The -DPLATFORM="\"$(PLATFORM)\"" definition and the similar -DCFLAGS=...
744      (both in crypto/Makefile.ssl for use by crypto/cversion.c) caused
745      problems not only on Windows, but also on some Unix platforms.
746      To avoid problematic command lines, these definitions are now in an
747      auto-generated file crypto/buildinf.h (created by crypto/Makefile.ssl
748      for standard "make" builds, by util/mk1mf.pl for "mk1mf" builds).
749      [Bodo Moeller]
750
751   *) MIPS III/IV assembler module is reimplemented.
752      [Andy Polyakov]
753
754   *) More DES library cleanups: remove references to srand/rand and
755      delete an unused file.
756      [Ulf Möller]
757
758   *) Add support for the the free Netwide assembler (NASM) under Win32,
759      since not many people have MASM (ml) and it can be hard to obtain.
760      This is currently experimental but it seems to work OK and pass all
761      the tests. Check out INSTALL.W32 for info.
762      [Steve Henson]
763
764   *) Fix memory leaks in s3_clnt.c: All non-anonymous SSL3/TLS1 connections
765      without temporary keys kept an extra copy of the server key,
766      and connections with temporary keys did not free everything in case
767      of an error.
768      [Bodo Moeller]
769
770   *) New function RSA_check_key and new openssl rsa option -check
771      for verifying the consistency of RSA keys.
772      [Ulf Moeller, Bodo Moeller]
773
774   *) Various changes to make Win32 compile work: 
775      1. Casts to avoid "loss of data" warnings in p5_crpt2.c
776      2. Change unsigned int to int in b_dump.c to avoid "signed/unsigned
777         comparison" warnings.
778      3. Add sk_<TYPE>_sort to DEF file generator and do make update.
779      [Steve Henson]
780
781   *) Add a debugging option to PKCS#5 v2 key generation function: when
782      you #define DEBUG_PKCS5V2 passwords, salts, iteration counts and
783      derived keys are printed to stderr.
784      [Steve Henson]
785
786   *) Copy the flags in ASN1_STRING_dup().
787      [Roman E. Pavlov <pre@mo.msk.ru>]
788
789   *) The x509 application mishandled signing requests containing DSA
790      keys when the signing key was also DSA and the parameters didn't match.
791
792      It was supposed to omit the parameters when they matched the signing key:
793      the verifying software was then supposed to automatically use the CA's
794      parameters if they were absent from the end user certificate.
795
796      Omitting parameters is no longer recommended. The test was also
797      the wrong way round! This was probably due to unusual behaviour in
798      EVP_cmp_parameters() which returns 1 if the parameters match. 
799      This meant that parameters were omitted when they *didn't* match and
800      the certificate was useless. Certificates signed with 'ca' didn't have
801      this bug.
802      [Steve Henson, reported by Doug Erickson <Doug.Erickson@Part.NET>]
803
804   *) Memory leak checking (-DCRYPTO_MDEBUG) had some problems.
805      The interface is as follows:
806      Applications can use
807          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) aka MemCheck_start(),
808          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) aka MemCheck_stop();
809      "off" is now the default.
810      The library internally uses
811          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) aka MemCheck_off(),
812          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) aka MemCheck_on()
813      to disable memory-checking temporarily.
814
815      Some inconsistent states that previously were possible (and were
816      even the default) are now avoided.
817
818      -DCRYPTO_MDEBUG_TIME is new and additionally stores the current time
819      with each memory chunk allocated; this is occasionally more helpful
820      than just having a counter.
821
822      -DCRYPTO_MDEBUG_THREAD is also new and adds the thread ID.
823
824      -DCRYPTO_MDEBUG_ALL enables all of the above, plus any future
825      extensions.
826      [Bodo Moeller]
827
828   *) Introduce "mode" for SSL structures (with defaults in SSL_CTX),
829      which largely parallels "options", but is for changing API behaviour,
830      whereas "options" are about protocol behaviour.
831      Initial "mode" flags are:
832
833      SSL_MODE_ENABLE_PARTIAL_WRITE   Allow SSL_write to report success when
834                                      a single record has been written.
835      SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER  Don't insist that SSL_write
836                                      retries use the same buffer location.
837                                      (But all of the contents must be
838                                      copied!)
839      [Bodo Moeller]
840
841   *) Bugfix: SSL_set_mode ignored its parameter, only SSL_CTX_set_mode
842      worked.
843
844   *) Fix problems with no-hmac etc.
845      [Ulf Möller, pointed out by Brian Wellington <bwelling@tislabs.com>]
846
847   *) New functions RSA_get_default_method(), RSA_set_method() and
848      RSA_get_method(). These allows replacement of RSA_METHODs without having
849      to mess around with the internals of an RSA structure.
850      [Steve Henson]
851
852   *) Fix memory leaks in DSA_do_sign and DSA_is_prime.
853      Also really enable memory leak checks in openssl.c and in some
854      test programs.
855      [Chad C. Mulligan, Bodo Moeller]
856
857   *) Fix a bug in d2i_ASN1_INTEGER() and i2d_ASN1_INTEGER() which can mess
858      up the length of negative integers. This has now been simplified to just
859      store the length when it is first determined and use it later, rather
860      than trying to keep track of where data is copied and updating it to
861      point to the end.
862      [Steve Henson, reported by Brien Wheeler
863       <bwheeler@authentica-security.com>]
864
865   *) Add a new function PKCS7_signatureVerify. This allows the verification
866      of a PKCS#7 signature but with the signing certificate passed to the
867      function itself. This contrasts with PKCS7_dataVerify which assumes the
868      certificate is present in the PKCS#7 structure. This isn't always the
869      case: certificates can be omitted from a PKCS#7 structure and be
870      distributed by "out of band" means (such as a certificate database).
871      [Steve Henson]
872
873   *) Complete the PEM_* macros with DECLARE_PEM versions to replace the
874      function prototypes in pem.h, also change util/mkdef.pl to add the
875      necessary function names. 
876      [Steve Henson]
877
878   *) mk1mf.pl (used by Windows builds) did not properly read the
879      options set by Configure in the top level Makefile, and Configure
880      was not even able to write more than one option correctly.
881      Fixed, now "no-idea no-rc5 -DCRYPTO_MDEBUG" etc. works as intended.
882      [Bodo Moeller]
883
884   *) New functions CONF_load_bio() and CONF_load_fp() to allow a config
885      file to be loaded from a BIO or FILE pointer. The BIO version will
886      for example allow memory BIOs to contain config info.
887      [Steve Henson]
888
889   *) New function "CRYPTO_num_locks" that returns CRYPTO_NUM_LOCKS.
890      Whoever hopes to achieve shared-library compatibility across versions
891      must use this, not the compile-time macro.
892      (Exercise 0.9.4: Which is the minimum library version required by
893      such programs?)
894      Note: All this applies only to multi-threaded programs, others don't
895      need locks.
896      [Bodo Moeller]
897
898   *) Add missing case to s3_clnt.c state machine -- one of the new SSL tests
899      through a BIO pair triggered the default case, i.e.
900      SSLerr(...,SSL_R_UNKNOWN_STATE).
901      [Bodo Moeller]
902
903   *) New "BIO pair" concept (crypto/bio/bss_bio.c) so that applications
904      can use the SSL library even if none of the specific BIOs is
905      appropriate.
906      [Bodo Moeller]
907
908   *) Fix a bug in i2d_DSAPublicKey() which meant it returned the wrong value
909      for the encoded length.
910      [Jeon KyoungHo <khjeon@sds.samsung.co.kr>]
911
912   *) Add initial documentation of the X509V3 functions.
913      [Steve Henson]
914
915   *) Add a new pair of functions PEM_write_PKCS8PrivateKey() and 
916      PEM_write_bio_PKCS8PrivateKey() that are equivalent to
917      PEM_write_PrivateKey() and PEM_write_bio_PrivateKey() but use the more
918      secure PKCS#8 private key format with a high iteration count.
919      [Steve Henson]
920
921   *) Fix determination of Perl interpreter: A perl or perl5
922      _directory_ in $PATH was also accepted as the interpreter.
923      [Ralf S. Engelschall]
924
925   *) Fix demos/sign/sign.c: well there wasn't anything strictly speaking
926      wrong with it but it was very old and did things like calling
927      PEM_ASN1_read() directly and used MD5 for the hash not to mention some
928      unusual formatting.
929      [Steve Henson]
930
931   *) Fix demos/selfsign.c: it used obsolete and deleted functions, changed
932      to use the new extension code.
933      [Steve Henson]
934
935   *) Implement the PEM_read/PEM_write functions in crypto/pem/pem_all.c
936      with macros. This should make it easier to change their form, add extra
937      arguments etc. Fix a few PEM prototypes which didn't have cipher as a
938      constant.
939      [Steve Henson]
940
941   *) Add to configuration table a new entry that can specify an alternative
942      name for unistd.h (for pre-POSIX systems); we need this for NeXTstep,
943      according to Mark Crispin <MRC@Panda.COM>.
944      [Bodo Moeller]
945
946 #if 0
947   *) DES CBC did not update the IV. Weird.
948      [Ben Laurie]
949 #else
950      des_cbc_encrypt does not update the IV, but des_ncbc_encrypt does.
951      Changing the behaviour of the former might break existing programs --
952      where IV updating is needed, des_ncbc_encrypt can be used.
953 #endif
954
955   *) When bntest is run from "make test" it drives bc to check its
956      calculations, as well as internally checking them. If an internal check
957      fails, it needs to cause bc to give a non-zero result or make test carries
958      on without noticing the failure. Fixed.
959      [Ben Laurie]
960
961   *) DES library cleanups.
962      [Ulf Möller]
963
964   *) Add support for PKCS#5 v2.0 PBE algorithms. This will permit PKCS#8 to be
965      used with any cipher unlike PKCS#5 v1.5 which can at most handle 64 bit
966      ciphers. NOTE: although the key derivation function has been verified
967      against some published test vectors it has not been extensively tested
968      yet. Added a -v2 "cipher" option to pkcs8 application to allow the use
969      of v2.0.
970      [Steve Henson]
971
972   *) Instead of "mkdir -p", which is not fully portable, use new
973      Perl script "util/mkdir-p.pl".
974      [Bodo Moeller]
975
976   *) Rewrite the way password based encryption (PBE) is handled. It used to
977      assume that the ASN1 AlgorithmIdentifier parameter was a PBEParameter
978      structure. This was true for the PKCS#5 v1.5 and PKCS#12 PBE algorithms
979      but doesn't apply to PKCS#5 v2.0 where it can be something else. Now
980      the 'parameter' field of the AlgorithmIdentifier is passed to the
981      underlying key generation function so it must do its own ASN1 parsing.
982      This has also changed the EVP_PBE_CipherInit() function which now has a
983      'parameter' argument instead of literal salt and iteration count values
984      and the function EVP_PBE_ALGOR_CipherInit() has been deleted.
985      [Steve Henson]
986
987   *) Support for PKCS#5 v1.5 compatible password based encryption algorithms
988      and PKCS#8 functionality. New 'pkcs8' application linked to openssl.
989      Needed to change the PEM_STRING_EVP_PKEY value which was just "PRIVATE
990      KEY" because this clashed with PKCS#8 unencrypted string. Since this
991      value was just used as a "magic string" and not used directly its
992      value doesn't matter.
993      [Steve Henson]
994
995   *) Introduce some semblance of const correctness to BN. Shame C doesn't
996      support mutable.
997      [Ben Laurie]
998
999   *) "linux-sparc64" configuration (ultrapenguin).
1000      [Ray Miller <ray.miller@oucs.ox.ac.uk>]
1001      "linux-sparc" configuration.
1002      [Christian Forster <fo@hawo.stw.uni-erlangen.de>]
1003
1004   *) config now generates no-xxx options for missing ciphers.
1005      [Ulf Möller]
1006
1007   *) Support the EBCDIC character set (work in progress).
1008      File ebcdic.c not yet included because it has a different license.
1009      [Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>]
1010
1011   *) Support BS2000/OSD-POSIX.
1012      [Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>]
1013
1014   *) Make callbacks for key generation use void * instead of char *.
1015      [Ben Laurie]
1016
1017   *) Make S/MIME samples compile (not yet tested).
1018      [Ben Laurie]
1019
1020   *) Additional typesafe stacks.
1021      [Ben Laurie]
1022
1023   *) New configuration variants "bsdi-elf-gcc" (BSD/OS 4.x).
1024      [Bodo Moeller]
1025
1026
1027  Changes between 0.9.3 and 0.9.3a  [29 May 1999]
1028
1029   *) New configuration variant "sco5-gcc".
1030
1031   *) Updated some demos.
1032      [Sean O Riordain, Wade Scholine]
1033
1034   *) Add missing BIO_free at exit of pkcs12 application.
1035      [Wu Zhigang]
1036
1037   *) Fix memory leak in conf.c.
1038      [Steve Henson]
1039
1040   *) Updates for Win32 to assembler version of MD5.
1041      [Steve Henson]
1042
1043   *) Set #! path to perl in apps/der_chop to where we found it
1044      instead of using a fixed path.
1045      [Bodo Moeller]
1046
1047   *) SHA library changes for irix64-mips4-cc.
1048      [Andy Polyakov]
1049
1050   *) Improvements for VMS support.
1051      [Richard Levitte]
1052
1053
1054  Changes between 0.9.2b and 0.9.3  [24 May 1999]
1055
1056   *) Bignum library bug fix. IRIX 6 passes "make test" now!
1057      This also avoids the problems with SC4.2 and unpatched SC5.  
1058      [Andy Polyakov <appro@fy.chalmers.se>]
1059
1060   *) New functions sk_num, sk_value and sk_set to replace the previous macros.
1061      These are required because of the typesafe stack would otherwise break 
1062      existing code. If old code used a structure member which used to be STACK
1063      and is now STACK_OF (for example cert in a PKCS7_SIGNED structure) with
1064      sk_num or sk_value it would produce an error because the num, data members
1065      are not present in STACK_OF. Now it just produces a warning. sk_set
1066      replaces the old method of assigning a value to sk_value
1067      (e.g. sk_value(x, i) = y) which the library used in a few cases. Any code
1068      that does this will no longer work (and should use sk_set instead) but
1069      this could be regarded as a "questionable" behaviour anyway.
1070      [Steve Henson]
1071
1072   *) Fix most of the other PKCS#7 bugs. The "experimental" code can now
1073      correctly handle encrypted S/MIME data.
1074      [Steve Henson]
1075
1076   *) Change type of various DES function arguments from des_cblock
1077      (which means, in function argument declarations, pointer to char)
1078      to des_cblock * (meaning pointer to array with 8 char elements),
1079      which allows the compiler to do more typechecking; it was like
1080      that back in SSLeay, but with lots of ugly casts.
1081
1082      Introduce new type const_des_cblock.
1083      [Bodo Moeller]
1084
1085   *) Reorganise the PKCS#7 library and get rid of some of the more obvious
1086      problems: find RecipientInfo structure that matches recipient certificate
1087      and initialise the ASN1 structures properly based on passed cipher.
1088      [Steve Henson]
1089
1090   *) Belatedly make the BN tests actually check the results.
1091      [Ben Laurie]
1092
1093   *) Fix the encoding and decoding of negative ASN1 INTEGERS and conversion
1094      to and from BNs: it was completely broken. New compilation option
1095      NEG_PUBKEY_BUG to allow for some broken certificates that encode public
1096      key elements as negative integers.
1097      [Steve Henson]
1098
1099   *) Reorganize and speed up MD5.
1100      [Andy Polyakov <appro@fy.chalmers.se>]
1101
1102   *) VMS support.
1103      [Richard Levitte <richard@levitte.org>]
1104
1105   *) New option -out to asn1parse to allow the parsed structure to be
1106      output to a file. This is most useful when combined with the -strparse
1107      option to examine the output of things like OCTET STRINGS.
1108      [Steve Henson]
1109
1110   *) Make SSL library a little more fool-proof by not requiring any longer
1111      that SSL_set_{accept,connect}_state be called before
1112      SSL_{accept,connect} may be used (SSL_set_..._state is omitted
1113      in many applications because usually everything *appeared* to work as
1114      intended anyway -- now it really works as intended).
1115      [Bodo Moeller]
1116
1117   *) Move openssl.cnf out of lib/.
1118      [Ulf Möller]
1119
1120   *) Fix various things to let OpenSSL even pass ``egcc -pipe -O2 -Wall
1121      -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes
1122      -Wmissing-declarations -Wnested-externs -Winline'' with EGCS 1.1.2+ 
1123      [Ralf S. Engelschall]
1124
1125   *) Various fixes to the EVP and PKCS#7 code. It may now be able to
1126      handle PKCS#7 enveloped data properly.
1127      [Sebastian Akerman <sak@parallelconsulting.com>, modified by Steve]
1128
1129   *) Create a duplicate of the SSL_CTX's CERT in SSL_new instead of
1130      copying pointers.  The cert_st handling is changed by this in
1131      various ways (and thus what used to be known as ctx->default_cert
1132      is now called ctx->cert, since we don't resort to s->ctx->[default_]cert
1133      any longer when s->cert does not give us what we need).
1134      ssl_cert_instantiate becomes obsolete by this change.
1135      As soon as we've got the new code right (possibly it already is?),
1136      we have solved a couple of bugs of the earlier code where s->cert
1137      was used as if it could not have been shared with other SSL structures.
1138
1139      Note that using the SSL API in certain dirty ways now will result
1140      in different behaviour than observed with earlier library versions:
1141      Changing settings for an SSL_CTX *ctx after having done s = SSL_new(ctx)
1142      does not influence s as it used to.
1143      
1144      In order to clean up things more thoroughly, inside SSL_SESSION
1145      we don't use CERT any longer, but a new structure SESS_CERT
1146      that holds per-session data (if available); currently, this is
1147      the peer's certificate chain and, for clients, the server's certificate
1148      and temporary key.  CERT holds only those values that can have
1149      meaningful defaults in an SSL_CTX.
1150      [Bodo Moeller]
1151
1152   *) New function X509V3_EXT_i2d() to create an X509_EXTENSION structure
1153      from the internal representation. Various PKCS#7 fixes: remove some
1154      evil casts and set the enc_dig_alg field properly based on the signing
1155      key type.
1156      [Steve Henson]
1157
1158   *) Allow PKCS#12 password to be set from the command line or the
1159      environment. Let 'ca' get its config file name from the environment
1160      variables "OPENSSL_CONF" or "SSLEAY_CONF" (for consistency with 'req'
1161      and 'x509').
1162      [Steve Henson]
1163
1164   *) Allow certificate policies extension to use an IA5STRING for the
1165      organization field. This is contrary to the PKIX definition but
1166      VeriSign uses it and IE5 only recognises this form. Document 'x509'
1167      extension option.
1168      [Steve Henson]
1169
1170   *) Add PEDANTIC compiler flag to allow compilation with gcc -pedantic,
1171      without disallowing inline assembler and the like for non-pedantic builds.
1172      [Ben Laurie]
1173
1174   *) Support Borland C++ builder.
1175      [Janez Jere <jj@void.si>, modified by Ulf Möller]
1176
1177   *) Support Mingw32.
1178      [Ulf Möller]
1179
1180   *) SHA-1 cleanups and performance enhancements.
1181      [Andy Polyakov <appro@fy.chalmers.se>]
1182
1183   *) Sparc v8plus assembler for the bignum library.
1184      [Andy Polyakov <appro@fy.chalmers.se>]
1185
1186   *) Accept any -xxx and +xxx compiler options in Configure.
1187      [Ulf Möller]
1188
1189   *) Update HPUX configuration.
1190      [Anonymous]
1191   
1192   *) Add missing sk_<type>_unshift() function to safestack.h
1193      [Ralf S. Engelschall]
1194
1195   *) New function SSL_CTX_use_certificate_chain_file that sets the
1196      "extra_cert"s in addition to the certificate.  (This makes sense
1197      only for "PEM" format files, as chains as a whole are not
1198      DER-encoded.)
1199      [Bodo Moeller]
1200
1201   *) Support verify_depth from the SSL API.
1202      x509_vfy.c had what can be considered an off-by-one-error:
1203      Its depth (which was not part of the external interface)
1204      was actually counting the number of certificates in a chain;
1205      now it really counts the depth.
1206      [Bodo Moeller]
1207
1208   *) Bugfix in crypto/x509/x509_cmp.c: The SSLerr macro was used
1209      instead of X509err, which often resulted in confusing error
1210      messages since the error codes are not globally unique
1211      (e.g. an alleged error in ssl3_accept when a certificate
1212      didn't match the private key).
1213
1214   *) New function SSL_CTX_set_session_id_context that allows to set a default
1215      value (so that you don't need SSL_set_session_id_context for each
1216      connection using the SSL_CTX).
1217      [Bodo Moeller]
1218
1219   *) OAEP decoding bug fix.
1220      [Ulf Möller]
1221
1222   *) Support INSTALL_PREFIX for package builders, as proposed by
1223      David Harris.
1224      [Bodo Moeller]
1225
1226   *) New Configure options "threads" and "no-threads".  For systems
1227      where the proper compiler options are known (currently Solaris
1228      and Linux), "threads" is the default.
1229      [Bodo Moeller]
1230
1231   *) New script util/mklink.pl as a faster substitute for util/mklink.sh.
1232      [Bodo Moeller]
1233
1234   *) Install various scripts to $(OPENSSLDIR)/misc, not to
1235      $(INSTALLTOP)/bin -- they shouldn't clutter directories
1236      such as /usr/local/bin.
1237      [Bodo Moeller]
1238
1239   *) "make linux-shared" to build shared libraries.
1240      [Niels Poppe <niels@netbox.org>]
1241
1242   *) New Configure option no-<cipher> (rsa, idea, rc5, ...).
1243      [Ulf Möller]
1244
1245   *) Add the PKCS#12 API documentation to openssl.txt. Preliminary support for
1246      extension adding in x509 utility.
1247      [Steve Henson]
1248
1249   *) Remove NOPROTO sections and error code comments.
1250      [Ulf Möller]
1251
1252   *) Partial rewrite of the DEF file generator to now parse the ANSI
1253      prototypes.
1254      [Steve Henson]
1255
1256   *) New Configure options --prefix=DIR and --openssldir=DIR.
1257      [Ulf Möller]
1258
1259   *) Complete rewrite of the error code script(s). It is all now handled
1260      by one script at the top level which handles error code gathering,
1261      header rewriting and C source file generation. It should be much better
1262      than the old method: it now uses a modified version of Ulf's parser to
1263      read the ANSI prototypes in all header files (thus the old K&R definitions
1264      aren't needed for error creation any more) and do a better job of
1265      translating function codes into names. The old 'ASN1 error code imbedded
1266      in a comment' is no longer necessary and it doesn't use .err files which
1267      have now been deleted. Also the error code call doesn't have to appear all
1268      on one line (which resulted in some large lines...).
1269      [Steve Henson]
1270
1271   *) Change #include filenames from <foo.h> to <openssl/foo.h>.
1272      [Bodo Moeller]
1273
1274   *) Change behaviour of ssl2_read when facing length-0 packets: Don't return
1275      0 (which usually indicates a closed connection), but continue reading.
1276      [Bodo Moeller]
1277
1278   *) Fix some race conditions.
1279      [Bodo Moeller]
1280
1281   *) Add support for CRL distribution points extension. Add Certificate
1282      Policies and CRL distribution points documentation.
1283      [Steve Henson]
1284
1285   *) Move the autogenerated header file parts to crypto/opensslconf.h.
1286      [Ulf Möller]
1287
1288   *) Fix new 56-bit DES export ciphersuites: they were using 7 bytes instead of
1289      8 of keying material. Merlin has also confirmed interop with this fix
1290      between OpenSSL and Baltimore C/SSL 2.0 and J/SSL 2.0.
1291      [Merlin Hughes <merlin@baltimore.ie>]
1292
1293   *) Fix lots of warnings.
1294      [Richard Levitte <levitte@stacken.kth.se>]
1295  
1296   *) In add_cert_dir() in crypto/x509/by_dir.c, break out of the loop if
1297      the directory spec didn't end with a LIST_SEPARATOR_CHAR.
1298      [Richard Levitte <levitte@stacken.kth.se>]
1299  
1300   *) Fix problems with sizeof(long) == 8.
1301      [Andy Polyakov <appro@fy.chalmers.se>]
1302
1303   *) Change functions to ANSI C.
1304      [Ulf Möller]
1305
1306   *) Fix typos in error codes.
1307      [Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>, Ulf Möller]
1308
1309   *) Remove defunct assembler files from Configure.
1310      [Ulf Möller]
1311
1312   *) SPARC v8 assembler BIGNUM implementation.
1313      [Andy Polyakov <appro@fy.chalmers.se>]
1314
1315   *) Support for Certificate Policies extension: both print and set.
1316      Various additions to support the r2i method this uses.
1317      [Steve Henson]
1318
1319   *) A lot of constification, and fix a bug in X509_NAME_oneline() that could
1320      return a const string when you are expecting an allocated buffer.
1321      [Ben Laurie]
1322
1323   *) Add support for ASN1 types UTF8String and VISIBLESTRING, also the CHOICE
1324      types DirectoryString and DisplayText.
1325      [Steve Henson]
1326
1327   *) Add code to allow r2i extensions to access the configuration database,
1328      add an LHASH database driver and add several ctx helper functions.
1329      [Steve Henson]
1330
1331   *) Fix an evil bug in bn_expand2() which caused various BN functions to
1332      fail when they extended the size of a BIGNUM.
1333      [Steve Henson]
1334
1335   *) Various utility functions to handle SXNet extension. Modify mkdef.pl to
1336      support typesafe stack.
1337      [Steve Henson]
1338
1339   *) Fix typo in SSL_[gs]et_options().
1340      [Nils Frostberg <nils@medcom.se>]
1341
1342   *) Delete various functions and files that belonged to the (now obsolete)
1343      old X509V3 handling code.
1344      [Steve Henson]
1345
1346   *) New Configure option "rsaref".
1347      [Ulf Möller]
1348
1349   *) Don't auto-generate pem.h.
1350      [Bodo Moeller]
1351
1352   *) Introduce type-safe ASN.1 SETs.
1353      [Ben Laurie]
1354
1355   *) Convert various additional casted stacks to type-safe STACK_OF() variants.
1356      [Ben Laurie, Ralf S. Engelschall, Steve Henson]
1357
1358   *) Introduce type-safe STACKs. This will almost certainly break lots of code
1359      that links with OpenSSL (well at least cause lots of warnings), but fear
1360      not: the conversion is trivial, and it eliminates loads of evil casts. A
1361      few STACKed things have been converted already. Feel free to convert more.
1362      In the fullness of time, I'll do away with the STACK type altogether.
1363      [Ben Laurie]
1364
1365   *) Add `openssl ca -revoke <certfile>' facility which revokes a certificate
1366      specified in <certfile> by updating the entry in the index.txt file.
1367      This way one no longer has to edit the index.txt file manually for
1368      revoking a certificate. The -revoke option does the gory details now.
1369      [Massimiliano Pala <madwolf@openca.org>, Ralf S. Engelschall]
1370
1371   *) Fix `openssl crl -noout -text' combination where `-noout' killed the
1372      `-text' option at all and this way the `-noout -text' combination was
1373      inconsistent in `openssl crl' with the friends in `openssl x509|rsa|dsa'.
1374      [Ralf S. Engelschall]
1375
1376   *) Make sure a corresponding plain text error message exists for the
1377      X509_V_ERR_CERT_REVOKED/23 error number which can occur when a
1378      verify callback function determined that a certificate was revoked.
1379      [Ralf S. Engelschall]
1380
1381   *) Bugfix: In test/testenc, don't test "openssl <cipher>" for
1382      ciphers that were excluded, e.g. by -DNO_IDEA.  Also, test
1383      all available cipers including rc5, which was forgotten until now.
1384      In order to let the testing shell script know which algorithms
1385      are available, a new (up to now undocumented) command
1386      "openssl list-cipher-commands" is used.
1387      [Bodo Moeller]
1388
1389   *) Bugfix: s_client occasionally would sleep in select() when
1390      it should have checked SSL_pending() first.
1391      [Bodo Moeller]
1392
1393   *) New functions DSA_do_sign and DSA_do_verify to provide access to
1394      the raw DSA values prior to ASN.1 encoding.
1395      [Ulf Möller]
1396
1397   *) Tweaks to Configure
1398      [Niels Poppe <niels@netbox.org>]
1399
1400   *) Add support for PKCS#5 v2.0 ASN1 PBES2 structures. No other support,
1401      yet...
1402      [Steve Henson]
1403
1404   *) New variables $(RANLIB) and $(PERL) in the Makefiles.
1405      [Ulf Möller]
1406
1407   *) New config option to avoid instructions that are illegal on the 80386.
1408      The default code is faster, but requires at least a 486.
1409      [Ulf Möller]
1410   
1411   *) Got rid of old SSL2_CLIENT_VERSION (inconsistently used) and
1412      SSL2_SERVER_VERSION (not used at all) macros, which are now the
1413      same as SSL2_VERSION anyway.
1414      [Bodo Moeller]
1415
1416   *) New "-showcerts" option for s_client.
1417      [Bodo Moeller]
1418
1419   *) Still more PKCS#12 integration. Add pkcs12 application to openssl
1420      application. Various cleanups and fixes.
1421      [Steve Henson]
1422
1423   *) More PKCS#12 integration. Add new pkcs12 directory with Makefile.ssl and
1424      modify error routines to work internally. Add error codes and PBE init
1425      to library startup routines.
1426      [Steve Henson]
1427
1428   *) Further PKCS#12 integration. Added password based encryption, PKCS#8 and
1429      packing functions to asn1 and evp. Changed function names and error
1430      codes along the way.
1431      [Steve Henson]
1432
1433   *) PKCS12 integration: and so it begins... First of several patches to
1434      slowly integrate PKCS#12 functionality into OpenSSL. Add PKCS#12
1435      objects to objects.h
1436      [Steve Henson]
1437
1438   *) Add a new 'indent' option to some X509V3 extension code. Initial ASN1
1439      and display support for Thawte strong extranet extension.
1440      [Steve Henson]
1441
1442   *) Add LinuxPPC support.
1443      [Jeff Dubrule <igor@pobox.org>]
1444
1445   *) Get rid of redundant BN file bn_mulw.c, and rename bn_div64 to
1446      bn_div_words in alpha.s.
1447      [Hannes Reinecke <H.Reinecke@hw.ac.uk> and Ben Laurie]
1448
1449   *) Make sure the RSA OAEP test is skipped under -DRSAref because
1450      OAEP isn't supported when OpenSSL is built with RSAref.
1451      [Ulf Moeller <ulf@fitug.de>]
1452
1453   *) Move definitions of IS_SET/IS_SEQUENCE inside crypto/asn1/asn1.h 
1454      so they no longer are missing under -DNOPROTO. 
1455      [Soren S. Jorvang <soren@t.dk>]
1456
1457
1458  Changes between 0.9.1c and 0.9.2b  [22 Mar 1999]
1459
1460   *) Make SSL_get_peer_cert_chain() work in servers. Unfortunately, it still
1461      doesn't work when the session is reused. Coming soon!
1462      [Ben Laurie]
1463
1464   *) Fix a security hole, that allows sessions to be reused in the wrong
1465      context thus bypassing client cert protection! All software that uses
1466      client certs and session caches in multiple contexts NEEDS PATCHING to
1467      allow session reuse! A fuller solution is in the works.
1468      [Ben Laurie, problem pointed out by Holger Reif, Bodo Moeller (and ???)]
1469
1470   *) Some more source tree cleanups (removed obsolete files
1471      crypto/bf/asm/bf586.pl, test/test.txt and crypto/sha/asm/f.s; changed
1472      permission on "config" script to be executable) and a fix for the INSTALL
1473      document.
1474      [Ulf Moeller <ulf@fitug.de>]
1475
1476   *) Remove some legacy and erroneous uses of malloc, free instead of
1477      Malloc, Free.
1478      [Lennart Bang <lob@netstream.se>, with minor changes by Steve]
1479
1480   *) Make rsa_oaep_test return non-zero on error.
1481      [Ulf Moeller <ulf@fitug.de>]
1482
1483   *) Add support for native Solaris shared libraries. Configure
1484      solaris-sparc-sc4-pic, make, then run shlib/solaris-sc4.sh. It'd be nice
1485      if someone would make that last step automatic.
1486      [Matthias Loepfe <Matthias.Loepfe@AdNovum.CH>]
1487
1488   *) ctx_size was not built with the right compiler during "make links". Fixed.
1489      [Ben Laurie]
1490
1491   *) Change the meaning of 'ALL' in the cipher list. It now means "everything
1492      except NULL ciphers". This means the default cipher list will no longer
1493      enable NULL ciphers. They need to be specifically enabled e.g. with
1494      the string "DEFAULT:eNULL".
1495      [Steve Henson]
1496
1497   *) Fix to RSA private encryption routines: if p < q then it would
1498      occasionally produce an invalid result. This will only happen with
1499      externally generated keys because OpenSSL (and SSLeay) ensure p > q.
1500      [Steve Henson]
1501
1502   *) Be less restrictive and allow also `perl util/perlpath.pl
1503      /path/to/bin/perl' in addition to `perl util/perlpath.pl /path/to/bin',
1504      because this way one can also use an interpreter named `perl5' (which is
1505      usually the name of Perl 5.xxx on platforms where an Perl 4.x is still
1506      installed as `perl').
1507      [Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
1508
1509   *) Let util/clean-depend.pl work also with older Perl 5.00x versions.
1510      [Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
1511
1512   *) Fix Makefile.org so CC,CFLAG etc are passed to 'make links' add
1513      advapi32.lib to Win32 build and change the pem test comparision
1514      to fc.exe (thanks to Ulrich Kroener <kroneru@yahoo.com> for the
1515      suggestion). Fix misplaced ASNI prototypes and declarations in evp.h
1516      and crypto/des/ede_cbcm_enc.c.
1517      [Steve Henson]
1518
1519   *) DES quad checksum was broken on big-endian architectures. Fixed.
1520      [Ben Laurie]
1521
1522   *) Comment out two functions in bio.h that aren't implemented. Fix up the
1523      Win32 test batch file so it (might) work again. The Win32 test batch file
1524      is horrible: I feel ill....
1525      [Steve Henson]
1526
1527   *) Move various #ifdefs around so NO_SYSLOG, NO_DIRENT etc are now selected
1528      in e_os.h. Audit of header files to check ANSI and non ANSI
1529      sections: 10 functions were absent from non ANSI section and not exported
1530      from Windows DLLs. Fixed up libeay.num for new functions.
1531      [Steve Henson]
1532
1533   *) Make `openssl version' output lines consistent.
1534      [Ralf S. Engelschall]
1535
1536   *) Fix Win32 symbol export lists for BIO functions: Added
1537      BIO_get_ex_new_index, BIO_get_ex_num, BIO_get_ex_data and BIO_set_ex_data
1538      to ms/libeay{16,32}.def.
1539      [Ralf S. Engelschall]
1540
1541   *) Second round of fixing the OpenSSL perl/ stuff. It now at least compiled
1542      fine under Unix and passes some trivial tests I've now added. But the
1543      whole stuff is horribly incomplete, so a README.1ST with a disclaimer was
1544      added to make sure no one expects that this stuff really works in the
1545      OpenSSL 0.9.2 release.  Additionally I've started to clean the XS sources
1546      up and fixed a few little bugs and inconsistencies in OpenSSL.{pm,xs} and
1547      openssl_bio.xs.
1548      [Ralf S. Engelschall]
1549
1550   *) Fix the generation of two part addresses in perl.
1551      [Kenji Miyake <kenji@miyake.org>, integrated by Ben Laurie]
1552
1553   *) Add config entry for Linux on MIPS.
1554      [John Tobey <jtobey@channel1.com>]
1555
1556   *) Make links whenever Configure is run, unless we are on Windoze.
1557      [Ben Laurie]
1558
1559   *) Permit extensions to be added to CRLs using crl_section in openssl.cnf.
1560      Currently only issuerAltName and AuthorityKeyIdentifier make any sense
1561      in CRLs.
1562      [Steve Henson]
1563
1564   *) Add a useful kludge to allow package maintainers to specify compiler and
1565      other platforms details on the command line without having to patch the
1566      Configure script everytime: One now can use ``perl Configure
1567      <id>:<details>'', i.e. platform ids are allowed to have details appended
1568      to them (seperated by colons). This is treated as there would be a static
1569      pre-configured entry in Configure's %table under key <id> with value
1570      <details> and ``perl Configure <id>'' is called.  So, when you want to
1571      perform a quick test-compile under FreeBSD 3.1 with pgcc and without
1572      assembler stuff you can use ``perl Configure "FreeBSD-elf:pgcc:-O6:::"''
1573      now, which overrides the FreeBSD-elf entry on-the-fly.
1574      [Ralf S. Engelschall]
1575
1576   *) Disable new TLS1 ciphersuites by default: they aren't official yet.
1577      [Ben Laurie]
1578
1579   *) Allow DSO flags like -fpic, -fPIC, -KPIC etc. to be specified
1580      on the `perl Configure ...' command line. This way one can compile
1581      OpenSSL libraries with Position Independent Code (PIC) which is needed
1582      for linking it into DSOs.
1583      [Ralf S. Engelschall]
1584
1585   *) Remarkably, export ciphers were totally broken and no-one had noticed!
1586      Fixed.
1587      [Ben Laurie]
1588
1589   *) Cleaned up the LICENSE document: The official contact for any license
1590      questions now is the OpenSSL core team under openssl-core@openssl.org.
1591      And add a paragraph about the dual-license situation to make sure people
1592      recognize that _BOTH_ the OpenSSL license _AND_ the SSLeay license apply
1593      to the OpenSSL toolkit.
1594      [Ralf S. Engelschall]
1595
1596   *) General source tree makefile cleanups: Made `making xxx in yyy...'
1597      display consistent in the source tree and replaced `/bin/rm' by `rm'.
1598      Additonally cleaned up the `make links' target: Remove unnecessary
1599      semicolons, subsequent redundant removes, inline point.sh into mklink.sh
1600      to speed processing and no longer clutter the display with confusing
1601      stuff. Instead only the actually done links are displayed.
1602      [Ralf S. Engelschall]
1603
1604   *) Permit null encryption ciphersuites, used for authentication only. It used
1605      to be necessary to set the preprocessor define SSL_ALLOW_ENULL to do this.
1606      It is now necessary to set SSL_FORBID_ENULL to prevent the use of null
1607      encryption.
1608      [Ben Laurie]
1609
1610   *) Add a bunch of fixes to the PKCS#7 stuff. It used to sometimes reorder
1611      signed attributes when verifying signatures (this would break them), 
1612      the detached data encoding was wrong and public keys obtained using
1613      X509_get_pubkey() weren't freed.
1614      [Steve Henson]
1615
1616   *) Add text documentation for the BUFFER functions. Also added a work around
1617      to a Win95 console bug. This was triggered by the password read stuff: the
1618      last character typed gets carried over to the next fread(). If you were 
1619      generating a new cert request using 'req' for example then the last
1620      character of the passphrase would be CR which would then enter the first
1621      field as blank.
1622      [Steve Henson]
1623
1624   *) Added the new `Includes OpenSSL Cryptography Software' button as
1625      doc/openssl_button.{gif,html} which is similar in style to the old SSLeay
1626      button and can be used by applications based on OpenSSL to show the
1627      relationship to the OpenSSL project.  
1628      [Ralf S. Engelschall]
1629
1630   *) Remove confusing variables in function signatures in files
1631      ssl/ssl_lib.c and ssl/ssl.h.
1632      [Lennart Bong <lob@kulthea.stacken.kth.se>]
1633
1634   *) Don't install bss_file.c under PREFIX/include/
1635      [Lennart Bong <lob@kulthea.stacken.kth.se>]
1636
1637   *) Get the Win32 compile working again. Modify mkdef.pl so it can handle
1638      functions that return function pointers and has support for NT specific
1639      stuff. Fix mk1mf.pl and VC-32.pl to support NT differences also. Various
1640      #ifdef WIN32 and WINNTs sprinkled about the place and some changes from
1641      unsigned to signed types: this was killing the Win32 compile.
1642      [Steve Henson]
1643
1644   *) Add new certificate file to stack functions,
1645      SSL_add_dir_cert_subjects_to_stack() and
1646      SSL_add_file_cert_subjects_to_stack().  These largely supplant
1647      SSL_load_client_CA_file(), and can be used to add multiple certs easily
1648      to a stack (usually this is then handed to SSL_CTX_set_client_CA_list()).
1649      This means that Apache-SSL and similar packages don't have to mess around
1650      to add as many CAs as they want to the preferred list.
1651      [Ben Laurie]
1652
1653   *) Experiment with doxygen documentation. Currently only partially applied to
1654      ssl/ssl_lib.c.
1655      See http://www.stack.nl/~dimitri/doxygen/index.html, and run doxygen with
1656      openssl.doxy as the configuration file.
1657      [Ben Laurie]
1658   
1659   *) Get rid of remaining C++-style comments which strict C compilers hate.
1660      [Ralf S. Engelschall, pointed out by Carlos Amengual]
1661
1662   *) Changed BN_RECURSION in bn_mont.c to BN_RECURSION_MONT so it is not
1663      compiled in by default: it has problems with large keys.
1664      [Steve Henson]
1665
1666   *) Add a bunch of SSL_xxx() functions for configuring the temporary RSA and
1667      DH private keys and/or callback functions which directly correspond to
1668      their SSL_CTX_xxx() counterparts but work on a per-connection basis. This
1669      is needed for applications which have to configure certificates on a
1670      per-connection basis (e.g. Apache+mod_ssl) instead of a per-context basis
1671      (e.g. s_server). 
1672         For the RSA certificate situation is makes no difference, but
1673      for the DSA certificate situation this fixes the "no shared cipher"
1674      problem where the OpenSSL cipher selection procedure failed because the
1675      temporary keys were not overtaken from the context and the API provided
1676      no way to reconfigure them. 
1677         The new functions now let applications reconfigure the stuff and they
1678      are in detail: SSL_need_tmp_RSA, SSL_set_tmp_rsa, SSL_set_tmp_dh,
1679      SSL_set_tmp_rsa_callback and SSL_set_tmp_dh_callback.  Additionally a new
1680      non-public-API function ssl_cert_instantiate() is used as a helper
1681      function and also to reduce code redundancy inside ssl_rsa.c.
1682      [Ralf S. Engelschall]
1683
1684   *) Move s_server -dcert and -dkey options out of the undocumented feature
1685      area because they are useful for the DSA situation and should be
1686      recognized by the users.
1687      [Ralf S. Engelschall]
1688
1689   *) Fix the cipher decision scheme for export ciphers: the export bits are
1690      *not* within SSL_MKEY_MASK or SSL_AUTH_MASK, they are within
1691      SSL_EXP_MASK.  So, the original variable has to be used instead of the
1692      already masked variable.
1693      [Richard Levitte <levitte@stacken.kth.se>]
1694
1695   *) Fix 'port' variable from `int' to `unsigned int' in crypto/bio/b_sock.c
1696      [Richard Levitte <levitte@stacken.kth.se>]
1697
1698   *) Change type of another md_len variable in pk7_doit.c:PKCS7_dataFinal()
1699      from `int' to `unsigned int' because it's a length and initialized by
1700      EVP_DigestFinal() which expects an `unsigned int *'.
1701      [Richard Levitte <levitte@stacken.kth.se>]
1702
1703   *) Don't hard-code path to Perl interpreter on shebang line of Configure
1704      script. Instead use the usual Shell->Perl transition trick.
1705      [Ralf S. Engelschall]
1706
1707   *) Make `openssl x509 -noout -modulus' functional also for DSA certificates
1708      (in addition to RSA certificates) to match the behaviour of `openssl dsa
1709      -noout -modulus' as it's already the case for `openssl rsa -noout
1710      -modulus'.  For RSA the -modulus is the real "modulus" while for DSA
1711      currently the public key is printed (a decision which was already done by
1712      `openssl dsa -modulus' in the past) which serves a similar purpose.
1713      Additionally the NO_RSA no longer completely removes the whole -modulus
1714      option; it now only avoids using the RSA stuff. Same applies to NO_DSA
1715      now, too.
1716      [Ralf S.  Engelschall]
1717
1718   *) Add Arne Ansper's reliable BIO - this is an encrypted, block-digested
1719      BIO. See the source (crypto/evp/bio_ok.c) for more info.
1720      [Arne Ansper <arne@ats.cyber.ee>]
1721
1722   *) Dump the old yucky req code that tried (and failed) to allow raw OIDs
1723      to be added. Now both 'req' and 'ca' can use new objects defined in the
1724      config file.
1725      [Steve Henson]
1726
1727   *) Add cool BIO that does syslog (or event log on NT).
1728      [Arne Ansper <arne@ats.cyber.ee>, integrated by Ben Laurie]
1729
1730   *) Add support for new TLS ciphersuites, TLS_RSA_EXPORT56_WITH_RC4_56_MD5,
1731      TLS_RSA_EXPORT56_WITH_RC2_CBC_56_MD5 and
1732      TLS_RSA_EXPORT56_WITH_DES_CBC_SHA, as specified in "56-bit Export Cipher
1733      Suites For TLS", draft-ietf-tls-56-bit-ciphersuites-00.txt.
1734      [Ben Laurie]
1735
1736   *) Add preliminary config info for new extension code.
1737      [Steve Henson]
1738
1739   *) Make RSA_NO_PADDING really use no padding.
1740      [Ulf Moeller <ulf@fitug.de>]
1741
1742   *) Generate errors when private/public key check is done.
1743      [Ben Laurie]
1744
1745   *) Overhaul for 'crl' utility. New function X509_CRL_print. Partial support
1746      for some CRL extensions and new objects added.
1747      [Steve Henson]
1748
1749   *) Really fix the ASN1 IMPLICIT bug this time... Partial support for private
1750      key usage extension and fuller support for authority key id.
1751      [Steve Henson]
1752
1753   *) Add OAEP encryption for the OpenSSL crypto library. OAEP is the improved
1754      padding method for RSA, which is recommended for new applications in PKCS
1755      #1 v2.0 (RFC 2437, October 1998).
1756      OAEP (Optimal Asymmetric Encryption Padding) has better theoretical
1757      foundations than the ad-hoc padding used in PKCS #1 v1.5. It is secure
1758      against Bleichbacher's attack on RSA.
1759      [Ulf Moeller <ulf@fitug.de>, reformatted, corrected and integrated by
1760       Ben Laurie]
1761
1762   *) Updates to the new SSL compression code
1763      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
1764
1765   *) Fix so that the version number in the master secret, when passed
1766      via RSA, checks that if TLS was proposed, but we roll back to SSLv3
1767      (because the server will not accept higher), that the version number
1768      is 0x03,0x01, not 0x03,0x00
1769      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
1770
1771   *) Run extensive memory leak checks on SSL apps. Fixed *lots* of memory
1772      leaks in ssl/ relating to new X509_get_pubkey() behaviour. Also fixes
1773      in apps/ and an unrelated leak in crypto/dsa/dsa_vrf.c
1774      [Steve Henson]
1775
1776   *) Support for RAW extensions where an arbitrary extension can be
1777      created by including its DER encoding. See apps/openssl.cnf for
1778      an example.
1779      [Steve Henson]
1780
1781   *) Make sure latest Perl versions don't interpret some generated C array
1782      code as Perl array code in the crypto/err/err_genc.pl script.
1783      [Lars Weber <3weber@informatik.uni-hamburg.de>]
1784
1785   *) Modify ms/do_ms.bat to not generate assembly language makefiles since
1786      not many people have the assembler. Various Win32 compilation fixes and
1787      update to the INSTALL.W32 file with (hopefully) more accurate Win32
1788      build instructions.
1789      [Steve Henson]
1790
1791   *) Modify configure script 'Configure' to automatically create crypto/date.h
1792      file under Win32 and also build pem.h from pem.org. New script
1793      util/mkfiles.pl to create the MINFO file on environments that can't do a
1794      'make files': perl util/mkfiles.pl >MINFO should work.
1795      [Steve Henson]
1796
1797   *) Major rework of DES function declarations, in the pursuit of correctness
1798      and purity. As a result, many evil casts evaporated, and some weirdness,
1799      too. You may find this causes warnings in your code. Zapping your evil
1800      casts will probably fix them. Mostly.
1801      [Ben Laurie]
1802
1803   *) Fix for a typo in asn1.h. Bug fix to object creation script
1804      obj_dat.pl. It considered a zero in an object definition to mean
1805      "end of object": none of the objects in objects.h have any zeros
1806      so it wasn't spotted.
1807      [Steve Henson, reported by Erwann ABALEA <eabalea@certplus.com>]
1808
1809   *) Add support for Triple DES Cipher Block Chaining with Output Feedback
1810      Masking (CBCM). In the absence of test vectors, the best I have been able
1811      to do is check that the decrypt undoes the encrypt, so far. Send me test
1812      vectors if you have them.
1813      [Ben Laurie]
1814
1815   *) Correct calculation of key length for export ciphers (too much space was
1816      allocated for null ciphers). This has not been tested!
1817      [Ben Laurie]
1818
1819   *) Modifications to the mkdef.pl for Win32 DEF file creation. The usage
1820      message is now correct (it understands "crypto" and "ssl" on its
1821      command line). There is also now an "update" option. This will update
1822      the util/ssleay.num and util/libeay.num files with any new functions.
1823      If you do a: 
1824      perl util/mkdef.pl crypto ssl update
1825      it will update them.
1826      [Steve Henson]
1827
1828   *) Overhauled the Perl interface (perl/*):
1829      - ported BN stuff to OpenSSL's different BN library
1830      - made the perl/ source tree CVS-aware
1831      - renamed the package from SSLeay to OpenSSL (the files still contain
1832        their history because I've copied them in the repository)
1833      - removed obsolete files (the test scripts will be replaced
1834        by better Test::Harness variants in the future)
1835      [Ralf S. Engelschall]
1836
1837   *) First cut for a very conservative source tree cleanup:
1838      1. merge various obsolete readme texts into doc/ssleay.txt
1839      where we collect the old documents and readme texts.
1840      2. remove the first part of files where I'm already sure that we no
1841      longer need them because of three reasons: either they are just temporary
1842      files which were left by Eric or they are preserved original files where
1843      I've verified that the diff is also available in the CVS via "cvs diff
1844      -rSSLeay_0_8_1b" or they were renamed (as it was definitely the case for
1845      the crypto/md/ stuff).
1846      [Ralf S. Engelschall]
1847
1848   *) More extension code. Incomplete support for subject and issuer alt
1849      name, issuer and authority key id. Change the i2v function parameters
1850      and add an extra 'crl' parameter in the X509V3_CTX structure: guess
1851      what that's for :-) Fix to ASN1 macro which messed up
1852      IMPLICIT tag and add f_enum.c which adds a2i, i2a for ENUMERATED.
1853      [Steve Henson]
1854
1855   *) Preliminary support for ENUMERATED type. This is largely copied from the
1856      INTEGER code.
1857      [Steve Henson]
1858
1859   *) Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy.
1860      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
1861
1862   *) Make sure `make rehash' target really finds the `openssl' program.
1863      [Ralf S. Engelschall, Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
1864
1865   *) Squeeze another 7% of speed out of MD5 assembler, at least on a P2. I'd
1866      like to hear about it if this slows down other processors.
1867      [Ben Laurie]
1868
1869   *) Add CygWin32 platform information to Configure script.
1870      [Alan Batie <batie@aahz.jf.intel.com>]
1871
1872   *) Fixed ms/32all.bat script: `no_asm' -> `no-asm'
1873      [Rainer W. Gerling <gerling@mpg-gv.mpg.de>]
1874   
1875   *) New program nseq to manipulate netscape certificate sequences
1876      [Steve Henson]
1877
1878   *) Modify crl2pkcs7 so it supports multiple -certfile arguments. Fix a
1879      few typos.
1880      [Steve Henson]
1881
1882   *) Fixes to BN code.  Previously the default was to define BN_RECURSION
1883      but the BN code had some problems that would cause failures when
1884      doing certificate verification and some other functions.
1885      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
1886
1887   *) Add ASN1 and PEM code to support netscape certificate sequences.
1888      [Steve Henson]
1889
1890   *) Add ASN1 and PEM code to support netscape certificate sequences.
1891      [Steve Henson]
1892
1893   *) Add several PKIX and private extended key usage OIDs.
1894      [Steve Henson]
1895
1896   *) Modify the 'ca' program to handle the new extension code. Modify
1897      openssl.cnf for new extension format, add comments.
1898      [Steve Henson]
1899
1900   *) More X509 V3 changes. Fix typo in v3_bitstr.c. Add support to 'req'
1901      and add a sample to openssl.cnf so req -x509 now adds appropriate
1902      CA extensions.
1903      [Steve Henson]
1904
1905   *) Continued X509 V3 changes. Add to other makefiles, integrate with the
1906      error code, add initial support to X509_print() and x509 application.
1907      [Steve Henson]
1908
1909   *) Takes a deep breath and start addding X509 V3 extension support code. Add
1910      files in crypto/x509v3. Move original stuff to crypto/x509v3/old. All this
1911      stuff is currently isolated and isn't even compiled yet.
1912      [Steve Henson]
1913
1914   *) Continuing patches for GeneralizedTime. Fix up certificate and CRL
1915      ASN1 to use ASN1_TIME and modify print routines to use ASN1_TIME_print.
1916      Removed the versions check from X509 routines when loading extensions:
1917      this allows certain broken certificates that don't set the version
1918      properly to be processed.
1919      [Steve Henson]
1920
1921   *) Deal with irritating shit to do with dependencies, in YAAHW (Yet Another
1922      Ad Hoc Way) - Makefile.ssls now all contain local dependencies, which
1923      can still be regenerated with "make depend".
1924      [Ben Laurie]
1925
1926   *) Spelling mistake in C version of CAST-128.
1927      [Ben Laurie, reported by Jeremy Hylton <jeremy@cnri.reston.va.us>]
1928
1929   *) Changes to the error generation code. The perl script err-code.pl 
1930      now reads in the old error codes and retains the old numbers, only
1931      adding new ones if necessary. It also only changes the .err files if new
1932      codes are added. The makefiles have been modified to only insert errors
1933      when needed (to avoid needlessly modifying header files). This is done
1934      by only inserting errors if the .err file is newer than the auto generated
1935      C file. To rebuild all the error codes from scratch (the old behaviour)
1936      either modify crypto/Makefile.ssl to pass the -regen flag to err_code.pl
1937      or delete all the .err files.
1938      [Steve Henson]
1939
1940   *) CAST-128 was incorrectly implemented for short keys. The C version has
1941      been fixed, but is untested. The assembler versions are also fixed, but
1942      new assembler HAS NOT BEEN GENERATED FOR WIN32 - the Makefile needs fixing
1943      to regenerate it if needed.
1944      [Ben Laurie, reported (with fix for C version) by Jun-ichiro itojun
1945       Hagino <itojun@kame.net>]
1946
1947   *) File was opened incorrectly in randfile.c.
1948      [Ulf Möller <ulf@fitug.de>]
1949
1950   *) Beginning of support for GeneralizedTime. d2i, i2d, check and print
1951      functions. Also ASN1_TIME suite which is a CHOICE of UTCTime or
1952      GeneralizedTime. ASN1_TIME is the proper type used in certificates et
1953      al: it's just almost always a UTCTime. Note this patch adds new error
1954      codes so do a "make errors" if there are problems.
1955      [Steve Henson]
1956
1957   *) Correct Linux 1 recognition in config.
1958      [Ulf Möller <ulf@fitug.de>]
1959
1960   *) Remove pointless MD5 hash when using DSA keys in ca.
1961      [Anonymous <nobody@replay.com>]
1962
1963   *) Generate an error if given an empty string as a cert directory. Also
1964      generate an error if handed NULL (previously returned 0 to indicate an
1965      error, but didn't set one).
1966      [Ben Laurie, reported by Anonymous <nobody@replay.com>]
1967
1968   *) Add prototypes to SSL methods. Make SSL_write's buffer const, at last.
1969      [Ben Laurie]
1970
1971   *) Fix the dummy function BN_ref_mod_exp() in rsaref.c to have the correct
1972      parameters. This was causing a warning which killed off the Win32 compile.
1973      [Steve Henson]
1974
1975   *) Remove C++ style comments from crypto/bn/bn_local.h.
1976      [Neil Costigan <neil.costigan@celocom.com>]
1977
1978   *) The function OBJ_txt2nid was broken. It was supposed to return a nid
1979      based on a text string, looking up short and long names and finally
1980      "dot" format. The "dot" format stuff didn't work. Added new function
1981      OBJ_txt2obj to do the same but return an ASN1_OBJECT and rewrote 
1982      OBJ_txt2nid to use it. OBJ_txt2obj can also return objects even if the
1983      OID is not part of the table.
1984      [Steve Henson]
1985
1986   *) Add prototypes to X509 lookup/verify methods, fixing a bug in
1987      X509_LOOKUP_by_alias().
1988      [Ben Laurie]
1989
1990   *) Sort openssl functions by name.
1991      [Ben Laurie]
1992
1993   *) Get the gendsa program working (hopefully) and add it to app list. Remove
1994      encryption from sample DSA keys (in case anyone is interested the password
1995      was "1234").
1996      [Steve Henson]
1997
1998   *) Make _all_ *_free functions accept a NULL pointer.
1999      [Frans Heymans <fheymans@isaserver.be>]
2000
2001   *) If a DH key is generated in s3_srvr.c, don't blow it by trying to use
2002      NULL pointers.
2003      [Anonymous <nobody@replay.com>]
2004
2005   *) s_server should send the CAfile as acceptable CAs, not its own cert.
2006      [Bodo Moeller <3moeller@informatik.uni-hamburg.de>]
2007
2008   *) Don't blow it for numeric -newkey arguments to apps/req.
2009      [Bodo Moeller <3moeller@informatik.uni-hamburg.de>]
2010
2011   *) Temp key "for export" tests were wrong in s3_srvr.c.
2012      [Anonymous <nobody@replay.com>]
2013
2014   *) Add prototype for temp key callback functions
2015      SSL_CTX_set_tmp_{rsa,dh}_callback().
2016      [Ben Laurie]
2017
2018   *) Make DH_free() tolerate being passed a NULL pointer (like RSA_free() and
2019      DSA_free()). Make X509_PUBKEY_set() check for errors in d2i_PublicKey().
2020      [Steve Henson]
2021
2022   *) X509_name_add_entry() freed the wrong thing after an error.
2023      [Arne Ansper <arne@ats.cyber.ee>]
2024
2025   *) rsa_eay.c would attempt to free a NULL context.
2026      [Arne Ansper <arne@ats.cyber.ee>]
2027
2028   *) BIO_s_socket() had a broken should_retry() on Windoze.
2029      [Arne Ansper <arne@ats.cyber.ee>]
2030
2031   *) BIO_f_buffer() didn't pass on BIO_CTRL_FLUSH.
2032      [Arne Ansper <arne@ats.cyber.ee>]
2033
2034   *) Make sure the already existing X509_STORE->depth variable is initialized
2035      in X509_STORE_new(), but document the fact that this variable is still
2036      unused in the certificate verification process.
2037      [Ralf S. Engelschall]
2038
2039   *) Fix the various library and apps files to free up pkeys obtained from
2040      X509_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions.
2041      [Steve Henson]
2042
2043   *) Fix reference counting in X509_PUBKEY_get(). This makes
2044      demos/maurice/example2.c work, amongst others, probably.
2045      [Steve Henson and Ben Laurie]
2046
2047   *) First cut of a cleanup for apps/. First the `ssleay' program is now named
2048      `openssl' and second, the shortcut symlinks for the `openssl <command>'
2049      are no longer created. This way we have a single and consistent command
2050      line interface `openssl <command>', similar to `cvs <command>'.
2051      [Ralf S. Engelschall, Paul Sutton and Ben Laurie]
2052
2053   *) ca.c: move test for DSA keys inside #ifndef NO_DSA. Make pubkey
2054      BIT STRING wrapper always have zero unused bits.
2055      [Steve Henson]
2056
2057   *) Add CA.pl, perl version of CA.sh, add extended key usage OID.
2058      [Steve Henson]
2059
2060   *) Make the top-level INSTALL documentation easier to understand.
2061      [Paul Sutton]
2062
2063   *) Makefiles updated to exit if an error occurs in a sub-directory
2064      make (including if user presses ^C) [Paul Sutton]
2065
2066   *) Make Montgomery context stuff explicit in RSA data structure.
2067      [Ben Laurie]
2068
2069   *) Fix build order of pem and err to allow for generated pem.h.
2070      [Ben Laurie]
2071
2072   *) Fix renumbering bug in X509_NAME_delete_entry().
2073      [Ben Laurie]
2074
2075   *) Enhanced the err-ins.pl script so it makes the error library number 
2076      global and can add a library name. This is needed for external ASN1 and
2077      other error libraries.
2078      [Steve Henson]
2079
2080   *) Fixed sk_insert which never worked properly.
2081      [Steve Henson]
2082
2083   *) Fix ASN1 macros so they can handle indefinite length construted 
2084      EXPLICIT tags. Some non standard certificates use these: they can now
2085      be read in.
2086      [Steve Henson]
2087
2088   *) Merged the various old/obsolete SSLeay documentation files (doc/xxx.doc)
2089      into a single doc/ssleay.txt bundle. This way the information is still
2090      preserved but no longer messes up this directory. Now it's new room for
2091      the new set of documenation files.
2092      [Ralf S. Engelschall]
2093
2094   *) SETs were incorrectly DER encoded. This was a major pain, because they
2095      shared code with SEQUENCEs, which aren't coded the same. This means that
2096      almost everything to do with SETs or SEQUENCEs has either changed name or
2097      number of arguments.
2098      [Ben Laurie, based on a partial fix by GP Jayan <gp@nsj.co.jp>]
2099
2100   *) Fix test data to work with the above.
2101      [Ben Laurie]
2102
2103   *) Fix the RSA header declarations that hid a bug I fixed in 0.9.0b but
2104      was already fixed by Eric for 0.9.1 it seems.
2105      [Ben Laurie - pointed out by Ulf Möller <ulf@fitug.de>]
2106
2107   *) Autodetect FreeBSD3.
2108      [Ben Laurie]
2109
2110   *) Fix various bugs in Configure. This affects the following platforms:
2111      nextstep
2112      ncr-scde
2113      unixware-2.0
2114      unixware-2.0-pentium
2115      sco5-cc.
2116      [Ben Laurie]
2117
2118   *) Eliminate generated files from CVS. Reorder tests to regenerate files
2119      before they are needed.
2120      [Ben Laurie]
2121
2122   *) Generate Makefile.ssl from Makefile.org (to keep CVS happy).
2123      [Ben Laurie]
2124
2125
2126  Changes between 0.9.1b and 0.9.1c  [23-Dec-1998]
2127
2128   *) Added OPENSSL_VERSION_NUMBER to crypto/crypto.h and 
2129      changed SSLeay to OpenSSL in version strings.
2130      [Ralf S. Engelschall]
2131   
2132   *) Some fixups to the top-level documents.
2133      [Paul Sutton]
2134
2135   *) Fixed the nasty bug where rsaref.h was not found under compile-time
2136      because the symlink to include/ was missing.
2137      [Ralf S. Engelschall]
2138
2139   *) Incorporated the popular no-RSA/DSA-only patches 
2140      which allow to compile a RSA-free SSLeay.
2141      [Andrew Cooke / Interrader Ldt., Ralf S. Engelschall]
2142
2143   *) Fixed nasty rehash problem under `make -f Makefile.ssl links'
2144      when "ssleay" is still not found.
2145      [Ralf S. Engelschall]
2146
2147   *) Added more platforms to Configure: Cray T3E, HPUX 11, 
2148      [Ralf S. Engelschall, Beckmann <beckman@acl.lanl.gov>]
2149
2150   *) Updated the README file.
2151      [Ralf S. Engelschall]
2152
2153   *) Added various .cvsignore files in the CVS repository subdirs
2154      to make a "cvs update" really silent.
2155      [Ralf S. Engelschall]
2156
2157   *) Recompiled the error-definition header files and added
2158      missing symbols to the Win32 linker tables.
2159      [Ralf S. Engelschall]
2160
2161   *) Cleaned up the top-level documents;
2162      o new files: CHANGES and LICENSE
2163      o merged VERSION, HISTORY* and README* files a CHANGES.SSLeay 
2164      o merged COPYRIGHT into LICENSE
2165      o removed obsolete TODO file
2166      o renamed MICROSOFT to INSTALL.W32
2167      [Ralf S. Engelschall]
2168
2169   *) Removed dummy files from the 0.9.1b source tree: 
2170      crypto/asn1/x crypto/bio/cd crypto/bio/fg crypto/bio/grep crypto/bio/vi
2171      crypto/bn/asm/......add.c crypto/bn/asm/a.out crypto/dsa/f crypto/md5/f
2172      crypto/pem/gmon.out crypto/perlasm/f crypto/pkcs7/build crypto/rsa/f
2173      crypto/sha/asm/f crypto/threads/f ms/zzz ssl/f ssl/f.mak test/f
2174      util/f.mak util/pl/f util/pl/f.mak crypto/bf/bf_locl.old apps/f
2175      [Ralf S. Engelschall]
2176
2177   *) Added various platform portability fixes.
2178      [Mark J. Cox]
2179
2180   *) The Genesis of the OpenSSL rpject:
2181      We start with the latest (unreleased) SSLeay version 0.9.1b which Eric A.
2182      Young and Tim J. Hudson created while they were working for C2Net until
2183      summer 1998.
2184      [The OpenSSL Project]
2185  
2186
2187  Changes between 0.9.0b and 0.9.1b  [not released]
2188
2189   *) Updated a few CA certificates under certs/
2190      [Eric A. Young]
2191
2192   *) Changed some BIGNUM api stuff.
2193      [Eric A. Young]
2194
2195   *) Various platform ports: OpenBSD, Ultrix, IRIX 64bit, NetBSD, 
2196      DGUX x86, Linux Alpha, etc.
2197      [Eric A. Young]
2198
2199   *) New COMP library [crypto/comp/] for SSL Record Layer Compression: 
2200      RLE (dummy implemented) and ZLIB (really implemented when ZLIB is
2201      available).
2202      [Eric A. Young]
2203
2204   *) Add -strparse option to asn1pars program which parses nested 
2205      binary structures 
2206      [Dr Stephen Henson <shenson@bigfoot.com>]
2207
2208   *) Added "oid_file" to ssleay.cnf for "ca" and "req" programs.
2209      [Eric A. Young]
2210
2211   *) DSA fix for "ca" program.
2212      [Eric A. Young]
2213
2214   *) Added "-genkey" option to "dsaparam" program.
2215      [Eric A. Young]
2216
2217   *) Added RIPE MD160 (rmd160) message digest.
2218      [Eric A. Young]
2219
2220   *) Added -a (all) option to "ssleay version" command.
2221      [Eric A. Young]
2222
2223   *) Added PLATFORM define which is the id given to Configure.
2224      [Eric A. Young]
2225
2226   *) Added MemCheck_XXXX functions to crypto/mem.c for memory checking.
2227      [Eric A. Young]
2228
2229   *) Extended the ASN.1 parser routines.
2230      [Eric A. Young]
2231
2232   *) Extended BIO routines to support REUSEADDR, seek, tell, etc.
2233      [Eric A. Young]
2234
2235   *) Added a BN_CTX to the BN library.
2236      [Eric A. Young]
2237
2238   *) Fixed the weak key values in DES library
2239      [Eric A. Young]
2240
2241   *) Changed API in EVP library for cipher aliases.
2242      [Eric A. Young]
2243
2244   *) Added support for RC2/64bit cipher.
2245      [Eric A. Young]
2246
2247   *) Converted the lhash library to the crypto/mem.c functions.
2248      [Eric A. Young]
2249
2250   *) Added more recognized ASN.1 object ids.
2251      [Eric A. Young]
2252
2253   *) Added more RSA padding checks for SSL/TLS.
2254      [Eric A. Young]
2255
2256   *) Added BIO proxy/filter functionality.
2257      [Eric A. Young]
2258
2259   *) Added extra_certs to SSL_CTX which can be used
2260      send extra CA certificates to the client in the CA cert chain sending
2261      process. It can be configured with SSL_CTX_add_extra_chain_cert().
2262      [Eric A. Young]
2263
2264   *) Now Fortezza is denied in the authentication phase because
2265      this is key exchange mechanism is not supported by SSLeay at all.
2266      [Eric A. Young]
2267
2268   *) Additional PKCS1 checks.
2269      [Eric A. Young]
2270
2271   *) Support the string "TLSv1" for all TLS v1 ciphers.
2272      [Eric A. Young]
2273
2274   *) Added function SSL_get_ex_data_X509_STORE_CTX_idx() which gives the
2275      ex_data index of the SSL context in the X509_STORE_CTX ex_data.
2276      [Eric A. Young]
2277
2278   *) Fixed a few memory leaks.
2279      [Eric A. Young]
2280
2281   *) Fixed various code and comment typos.
2282      [Eric A. Young]
2283
2284   *) A minor bug in ssl/s3_clnt.c where there would always be 4 0 
2285      bytes sent in the client random.
2286      [Edward Bishop <ebishop@spyglass.com>]
2287