Skip to content
CHANGES 381 KiB
Newer Older
 OpenSSL CHANGES
 Changes between 0.9.8i and 0.9.9  [xx XXX xxxx]
  *) Delta CRL support. New use deltas option which will attempt to locate
     and search any appropriate delta CRLs available.

     This work was sponsored by Google.
     [Steve Henson]

  *) Support for CRLs partitioned by reason code. Reorganise CRL processing
     code and add additional score elements. Validate alternate CRL paths
     as part of the CRL checking and indicate a new error "CRL path validation
     error" in this case. Applications wanting additional details can use
     the verify callback and check the new "parent" field. If this is not
     NULL CRL path validation is taking place. Existing applications wont
     see this because it requires extended CRL support which is off by
     default.

     This work was sponsored by Google.
     [Steve Henson]

  *) Support for freshest CRL extension.

     This work was sponsored by Google.
     [Steve Henson]

  *) Initial indirect CRL support. Currently only supported in the CRLs
     passed directly and not via lookup. Process certificate issuer
     CRL entry extension and lookup CRL entries by bother issuer name
     and serial number. Check and process CRL issuer entry in IDP extension.

     This work was sponsored by Google.
     [Steve Henson]

  *) Add support for distinct certificate and CRL paths. The CRL issuer
     certificate is validated separately in this case. Only enabled if
     an extended CRL support flag is set: this flag will enable additional
     CRL functionality in future.

     This work was sponsored by Google.
     [Steve Henson]

  *) Add support for policy mappings extension.

     This work was sponsored by Google.
     [Steve Henson]

  *) Fixes to pathlength constraint, self issued certificate handling,
     policy processing to align with RFC3280 and PKITS tests.

     This work was sponsored by Google.
     [Steve Henson]

  *) Support for name constraints certificate extension. DN, email, DNS
     and URI types are currently supported.

     This work was sponsored by Google.
     [Steve Henson]

  *) To cater for systems that provide a pointer-based thread ID rather
     than numeric, deprecate the current numeric thread ID mechanism and
     replace it with a structure and associated callback type. This
     mechanism allows a numeric "hash" to be extracted from a thread ID in
     either case, and on platforms where pointers are larger than 'long',
     mixing is done to help ensure the numeric 'hash' is usable even if it
     can't be guaranteed unique. The default mechanism is to use "&errno"
     as a pointer-based thread ID to distinguish between threads.

     Applications that want to provide their own thread IDs should now use
     CRYPTO_THREADID_set_callback() to register a callback that will call
     either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().

     Note that ERR_remove_state() is now deprecated, because it is tied
     to the assumption that thread IDs are numeric.  ERR_remove_state(0)
     to free the current thread's error state should be replaced by
     ERR_remove_thread_state(NULL).

     (This new approach replaces the functions CRYPTO_set_idptr_callback(),
     CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
     OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
     application was previously providing a numeric thread callback that
     was inappropriate for distinguishing threads, then uniqueness might
     have been obtained with &errno that happened immediately in the
     intermediate development versions of OpenSSL; this is no longer the
     case, the numeric thread callback will now override the automatic use
     of &errno.)
     [Geoff Thorpe, with help from Bodo Moeller]

  *) Initial support for different CRL issuing certificates. This covers a
     simple case where the self issued certificates in the chain exist and
     the real CRL issuer is higher in the existing chain.

     This work was sponsored by Google.
Ben Laurie's avatar
Ben Laurie committed
  *) Removed effectively defunct crypto/store from the build.
     [Ben Laurie]

  *) Revamp of STACK to provide stronger type-checking. Still to come:
     TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
     ASN1_STRING, CONF_VALUE.
     [Ben Laurie]

Ben Laurie's avatar
Ben Laurie committed
  *) Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
     RAM on SSL connections.  This option can save about 34k per idle SSL.
     [Nick Mathewson]

Ben Laurie's avatar
Ben Laurie committed
  *) Revamp of LHASH to provide stronger type-checking. Still to come:
     STACK, TXT_DB, bsearch, qsort.
     [Ben Laurie]

Dr. Stephen Henson's avatar
Dr. Stephen Henson committed
  *) Initial support for Cryptographic Message Syntax (aka CMS) based
     on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
     support for data, signedData, compressedData, digestedData and
     encryptedData, envelopedData types included. Scripts to check against
     RFC4134 examples draft and interop and consistency checks of many
     content types and variants.
Dr. Stephen Henson's avatar
Dr. Stephen Henson committed
     [Steve Henson]

Dr. Stephen Henson's avatar
Dr. Stephen Henson committed
  *) Add options to enc utility to support use of zlib compression BIO.
Dr. Stephen Henson's avatar
Dr. Stephen Henson committed
     [Steve Henson]

  *) Extend mk1mf to support importing of options and assembly language
     files from Configure script, currently only included in VC-WIN32.
     The assembly language rules can now optionally generate the source
     files from the associated perl scripts.
     [Steve Henson]

  *) Implement remaining functionality needed to support GOST ciphersuites.
     Interop testing has been performed using CryptoPro implementations.
     [Victor B. Wagner <vitus@cryptocom.ru>]

Andy Polyakov's avatar
Andy Polyakov committed
  *) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
     "family."
     [Andy Polyakov]

  *) Implement Opaque PRF Input TLS extension as specified in
     draft-rescorla-tls-opaque-prf-input-00.txt.  Since this is not an
     official specification yet and no extension type assignment by
     IANA exists, this extension (for now) will have to be explicitly
     enabled when building OpenSSL by providing the extension number
     to use.  For example, specify an option

         -DTLSEXT_TYPE_opaque_prf_input=0x9527

     to the "config" or "Configure" script to enable the extension,
     assuming extension number 0x9527 (which is a completely arbitrary
     and unofficial assignment based on the MD5 hash of the Internet
     Draft).  Note that by doing so, you potentially lose
     interoperability with other TLS implementations since these might
     be using the same extension number for other purposes.

     SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
     opaque PRF input value to use in the handshake.  This will create
     an interal copy of the length-'len' string at 'src', and will
     return non-zero for success.

     To get more control and flexibility, provide a callback function
     by using

          SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
          SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)

     where

          int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
          void *arg;

     Callback function 'cb' will be called in handshakes, and is
     expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
     Argument 'arg' is for application purposes (the value as given to
     SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
     be provided to the callback function).  The callback function
     has to return non-zero to report success: usually 1 to use opaque
     PRF input just if possible, or 2 to enforce use of the opaque PRF
     input.  In the latter case, the library will abort the handshake
     if opaque PRF input is not successfully negotiated.

     Arguments 'peerinput' and 'len' given to the callback function
     will always be NULL and 0 in the case of a client.  A server will
     see the client's opaque PRF input through these variables if
     available (NULL and 0 otherwise).  Note that if the server
     provides an opaque PRF input, the length must be the same as the
     length of the client's opaque PRF input.

     Note that the callback function will only be called when creating
     a new session (session resumption can resume whatever was
     previously negotiated), and will not be called in SSL 2.0
     handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
     SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
     for applications that need to enforce opaque PRF input.

     [Bodo Moeller]

Loading full blame...