1. 04 12月, 2017 2 次提交
    • M
      Replace some usage of SSLerr with SSLfatal() · 4752c5de
      Matt Caswell 提交于
      This is an initial step towards using SSLfatal() everywhere. Initially in
      this commit and in subsequent commits we focus on the state machine code.
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4778)
      4752c5de
    • M
      Provide an SSLfatal() macro · 1f359471
      Matt Caswell 提交于
      Typically if a fatal error occurs three things need to happen:
      
      - Put an error on the error queue
      - Send an alert
      - Put the state machine into the error state
      
      Although all 3 of these things need to be done every time we hit a fatal
      error the responsibilities for doing this are distributed throughout the
      code. The place where the error goes on the queue, where the alert gets
      sent and where the state machine goes into the error state are almost
      invariably different. It has been a common pattern to pass alert codes up
      and down the stack to get the alert information from the point in the code
      where the error is detected to the point in the code where the alert gets
      sent.
      
      This commit provides an SSLfatal() macro (backed by an ossl_statem_fatal
      function) that does all 3 of the above error tasks. This is largely a drop
      in replacement for SSLerr, but takes a couple of extra parameters (the SSL
      object, and an alert code).
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4778)
      1f359471
  2. 22 11月, 2017 2 次提交
  3. 13 11月, 2017 1 次提交
  4. 06 11月, 2017 1 次提交
  5. 30 10月, 2017 3 次提交
    • B
      Provide SSL_CTX.stats.sess_accept for switched ctxs · 3be08e30
      Benjamin Kaduk 提交于
      We currently increment the SSL_CTX stats.sess_accept field in
      tls_setup_handshake(), which is invoked from the state machine well
      before ClientHello processing would have had a chance to switch
      the SSL_CTX attached to the SSL object due to a provided SNI value.
      However, stats.sess_accept_good is incremented in tls_finish_handshake(),
      and uses the s->ctx.stats field (i.e., the new SSL_CTX that was switched
      to as a result of SNI processing).  This leads to the confusing
      (nonsensical) situation where stats.sess_accept_good is larger than
      stats.sess_accept, as the "sess_accept" value was counted on the
      s->session_ctx.
      
      In order to provide some more useful numbers, increment
      s->ctx.stats.sess_accept after SNI processing if the SNI processing
      changed s->ctx to differ from s->session_ctx.  To preserve the
      property that any given accept is counted only once, make the
      corresponding decrement to s->session_ctx.stats.sess_accept when
      doing so.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NPaul Dale <paul.dale@oracle.com>
      (Merged from https://github.com/openssl/openssl/pull/4549)
      3be08e30
    • B
      Normalize on session_ctx for stats where possible · 0e6161bc
      Benjamin Kaduk 提交于
      For client SSL objects and before any callbacks have had a chance
      to be called, we can write the stats accesses using the session_ctx,
      which makes sense given that these values are all prefixed with
      "sess_".
      
      For servers after a client_hello or servername callback has been
      called, retain the existing behavior of modifying the statistics
      for the current (non-session) context.  This has some value,
      in that it allows the statistics to be viewed on a per-vhost level.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NPaul Dale <paul.dale@oracle.com>
      (Merged from https://github.com/openssl/openssl/pull/4549)
      0e6161bc
    • B
      Use atomics for SSL_CTX statistics · 1fcb4e4d
      Benjamin Kaduk 提交于
      It is expected that SSL_CTX objects are shared across threads,
      and as such we are responsible for ensuring coherent data accesses.
      Aligned integer accesses ought to be atomic already on all supported
      architectures, but we can be formally correct.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NPaul Dale <paul.dale@oracle.com>
      (Merged from https://github.com/openssl/openssl/pull/4549)
      1fcb4e4d
  6. 18 10月, 2017 1 次提交
  7. 16 10月, 2017 2 次提交
  8. 12 10月, 2017 1 次提交
  9. 10 10月, 2017 1 次提交
  10. 09 10月, 2017 1 次提交
  11. 07 10月, 2017 1 次提交
  12. 06 10月, 2017 2 次提交
  13. 04 10月, 2017 2 次提交
  14. 26 9月, 2017 4 次提交
  15. 23 9月, 2017 1 次提交
  16. 14 9月, 2017 1 次提交
  17. 09 9月, 2017 2 次提交
  18. 07 9月, 2017 1 次提交
    • B
      Restore historical behavior for absent ServerHello extensions · 1c259bb5
      Benjamin Kaduk 提交于
      In OpenSSL 1.1.0, when there were no extensions added to the ServerHello,
      we did not write the extension data length bytes to the end of the
      ServerHello; this is needed for compatibility with old client implementations
      that do not support TLS extensions (such as the default configuration of
      OpenSSL 0.9.8).  When ServerHello extension construction was converted
      to the new extensions framework in commit
      7da160b0, this behavior was inadvertently
      limited to cases when SSLv3 was negotiated (and similarly for ClientHellos),
      presumably since extensions are not defined at all for SSLv3.  However,
      extensions for TLS prior to TLS 1.3 have been defined in separate
      RFCs (6066, 4366, and 3546) from the TLS protocol specifications, and as such
      should be considered an optional protocol feature in those cases.
      
      Accordingly, be conservative in what we send, and skip the extensions block
      when there are no extensions to be sent, regardless of the TLS/SSL version.
      (TLS 1.3 requires extensions and can safely be treated differently.)
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NPaul Dale <paul.dale@oracle.com>
      (Merged from https://github.com/openssl/openssl/pull/4296)
      1c259bb5
  19. 04 9月, 2017 1 次提交
  20. 01 9月, 2017 3 次提交
  21. 31 8月, 2017 7 次提交