1. 22 5月, 2017 1 次提交
  2. 17 5月, 2017 1 次提交
  3. 10 5月, 2017 1 次提交
    • M
      Copy custom extension flags in a call to SSL_set_SSL_CTX() · 21181889
      Matt Caswell 提交于
      The function SSL_set_SSL_CTX() can be used to swap the SSL_CTX used for
      a connection as part of an SNI callback. One result of this is that the
      s->cert structure is replaced. However this structure contains information
      about any custom extensions that have been loaded. In particular flags are
      set indicating whether a particular extension has been received in the
      ClientHello. By replacing the s->cert structure we lose the custom
      extension flag values, and it appears as if a client has not sent those
      extensions.
      
      SSL_set_SSL_CTX() should copy any flags for custom extensions that appear
      in both the old and the new cert structure.
      
      Fixes #2180
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/3425)
      21181889
  4. 02 5月, 2017 1 次提交
  5. 26 4月, 2017 1 次提交
  6. 24 4月, 2017 1 次提交
  7. 07 4月, 2017 3 次提交
  8. 04 4月, 2017 1 次提交
  9. 24 3月, 2017 3 次提交
  10. 18 3月, 2017 1 次提交
  11. 16 3月, 2017 2 次提交
  12. 05 3月, 2017 1 次提交
  13. 03 3月, 2017 14 次提交
  14. 01 3月, 2017 2 次提交
  15. 28 2月, 2017 2 次提交
  16. 24 2月, 2017 5 次提交
    • D
      Tidy up certificate type handling. · 75c13e78
      Dr. Stephen Henson 提交于
      The certificate types used to be held in a fixed length array or (if
      it was too long) a malloced buffer. This was done to retain binary
      compatibility. The code can be simplified now SSL is opaque by always
      using a malloced buffer.
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/2733)
      75c13e78
    • K
      Implement SSL_read_ex() and SSL_write_ex() as documented. · 4ee7d3f9
      Kurt Roeckx 提交于
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      GH: #1964
      4ee7d3f9
    • B
      Add SSL_CTX early callback · 6b1bb98f
      Benjamin Kaduk 提交于
      Provide a callback interface that gives the application the ability
      to adjust the nascent SSL object at the earliest stage of ClientHello
      processing, immediately after extensions have been collected but
      before they have been processed.
      
      This is akin to BoringSSL's "select_certificate_cb" (though it is not
      API compatible), and as the name indicates, one major use is to examine
      the supplied server name indication and select what certificate to
      present to the client.  However, it can also be used to make more
      sweeping configuration changes to the SSL object according to the
      selected server identity and configuration.  That may include adjusting
      the permitted TLS versions, swapping out the SSL_CTX object (as is
      traditionally done in a tlsext_servername_callback), changing the
      server's cipher list, and more.
      
      We also wish to allow an early callback to indicate that it needs to perform
      additional work asynchronously and resume processing later.  To that effect,
      refactor the second half of tls_process_client_hello() into a subroutine to be
      called at the post-processing stage (including the early callback itself), to
      allow the callback to result in remaining in the same work stage for a later
      call to succeed.  This requires allocating for and storing the CLIENTHELLO_MSG
      in the SSL object to be preserved across such calls, but the storage is
      reclaimed after ClientHello processing finishes.
      
      Information about the CliehtHello is available to the callback by means of
      accessor functions that can only be used from the early callback.  This allows
      extensions to make use of the existing internal parsing machinery without
      exposing structure internals (e.g., of PACKET), so that applications do not
      have to write fragile parsing code.
      
      Applications are encouraged to utilize an early callback and not use
      a servername_callback, in order to avoid unexpected behavior that
      occurs due to the relative order of processing between things like
      session resumption and the historical servername callback.
      
      Also tidy up nearby style by removing unnecessary braces around one-line
      conditional bodies.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/2279)
      6b1bb98f
    • B
      Refactor SSL_bytes_to_cipher_list() · 90134d98
      Benjamin Kaduk 提交于
      Split off the portions that mutate the SSL object into a separate
      function that the state machine calls, so that the public API can
      be a pure function.  (It still needs the SSL parameter in order
      to determine what SSL_METHOD's get_cipher_by_char() routine to use,
      though.)
      
      Instead of returning the stack of ciphers (functionality that was
      not used internally), require using the output parameter, and add
      a separate output parameter for the SCSVs contained in the supplied
      octets, if desired.  This lets us move to the standard return value
      convention.  Also make both output stacks optional parameters.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/2279)
      90134d98
    • B
      Export SSL_bytes_to_cipher_list() · ccb8e6e0
      Benjamin Kaduk 提交于
      Move ssl_bytes_to_cipher_list() to ssl_lib.c and create a public
      wrapper around it.  This lets application early callbacks easily get
      SSL_CIPHER objects from the raw ciphers bytes without having to
      reimplement the parsing code.  In particular, they do not need to
      know the details of the sslv2 format ClientHello's ciphersuite
      specifications.
      
      Document the new public function, including the arguably buggy behavior
      of modifying the supplied SSL object.  On the face of it, such a function
      should be able to be pure, just a direct translation of wire octets to
      internal data structures.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/2279)
      ccb8e6e0