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