1. 29 8月, 2017 1 次提交
  2. 25 8月, 2017 2 次提交
  3. 23 8月, 2017 1 次提交
  4. 22 8月, 2017 1 次提交
  5. 18 8月, 2017 1 次提交
  6. 15 8月, 2017 2 次提交
    • B
      Add SSL_get_pending_cipher() · 0aed6e44
      Benjamin Kaduk 提交于
      The existing function SSL_get_current_cipher() queries the
      current session for the ciphersuite in use, but there is no way
      for application code to determine what ciphersuite has been
      negotiated and will be used in the future, prior to ChangeCipherState
      (or the TLS 1.3 equivalent) causing the new cipher to take effect and
      become visible in the session information.  Expose this information
      to appropriate application callbacks to use during the handshake.
      
      The name SSL_get_pending_cipher() was chosen for compatibility with
      BoringSSL's routine of that name.
      
      Improve the note on macro implementations in SSL_get_current_cipher.pod
      while here.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4070)
      0aed6e44
    • B
      Move ALPN handling from finalizer to delayed call · 5626f634
      Benjamin Kaduk 提交于
      Commit 02f0274e moved ALPN processing
      into an extension finalization function, as the only documented ordering
      requirement from previous commits was that ALPN processing occur after
      SNI processing, and SNI processing is performed before the extension
      finalization step.  However, it is useful for applications'
      alpn_select callbacks to run after ciphersuite selection as well -- at
      least one application protocol specification (HTTP/2) imposes restrictions
      on which ciphersuites are usable with that protocol.  Since it is generally
      more preferrable to have a successful TLS connection with a default application
      protocol than to fail the TLS connection and not be able to have the preferred
      application protocol, it is good to give the alpn_select callback information
      about the ciphersuite to be used, so that appropriate restrctions can be
      enforced in application code.
      
      Accordingly, split the ALPN handling out into a separate tls_handl_alpn()
      function akin to tls_handle_status_request(), called from
      tls_post_process_client_hello().  This is an alternative to resuscitating
      ssl_check_clienthello_tlsext_late(), something of an awkwward name itself.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4070)
      5626f634
  7. 11 8月, 2017 1 次提交
  8. 10 8月, 2017 1 次提交
    • B
      Don't modify resumed session objects · e3743355
      Benjamin Kaduk 提交于
      If s->hit is set, s->session corresponds to a session created on
      a previous connection, and is a data structure that is potentially
      shared across other SSL objects.  As such, there are thread-safety
      issues with modifying the structure without taking its lock (and
      of course all corresponding read accesses would also need to take
      the lock as well), which have been observed to cause double-frees.
      
      Regardless of thread-safety, the resumed session object is intended
      to reflect parameters of the connection that created the session,
      and modifying it to reflect the parameters from the current connection
      is confusing.  So, modifications to the session object during
      ClientHello processing should only be performed on new connections,
      i.e., those where s->hit is not set.
      
      The code mostly got this right, providing such checks when processing
      SNI and EC point formats, but the supported groups (formerly
      supported curves) extension was missing it, which is fixed by this commit.
      
      However, TLS 1.3 makes the suppported_groups extension mandatory
      (when using (EC)DHE, which is the normal case), checking for the group
      list in the key_share extension processing.  But, TLS 1.3 only [0] supports
      session tickets for session resumption, so the session object in question
      is the output of d2i_SSL_SESSION(), and will not be shared across SSL
      objects.  Thus, it is safe to modify s->session for TLS 1.3 connections.
      
      [0] A psk_find_session callback can also be used, but the restriction that
      each callback execution must produce a distinct SSL_SESSION structure
      can be documented when the psk_find_session callback documentation is
      completed.
      Reviewed-by: NAndy Polyakov <appro@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4123)
      e3743355
  9. 09 8月, 2017 1 次提交
  10. 07 8月, 2017 1 次提交
  11. 03 8月, 2017 5 次提交
  12. 01 8月, 2017 2 次提交
  13. 31 7月, 2017 6 次提交
  14. 28 7月, 2017 1 次提交
  15. 26 7月, 2017 1 次提交
  16. 21 7月, 2017 1 次提交
  17. 19 7月, 2017 2 次提交
  18. 18 7月, 2017 2 次提交
  19. 17 7月, 2017 1 次提交
  20. 13 7月, 2017 7 次提交