1. 19 11月, 2014 1 次提交
  2. 24 10月, 2014 1 次提交
  3. 29 8月, 2014 4 次提交
    • D
      New extension callback features. · 33f653ad
      Dr. Stephen Henson 提交于
      Support separate parse and add callback arguments.
      Add new callback so an application can free extension data.
      Change return value for send functions so < 0 is an error 0
      omits extension and > 0 includes it. This is more consistent
      with the behaviour of other functions in OpenSSL.
      
      Modify parse_cb handling so <= 0 is an error.
      
      Make SSL_CTX_set_custom_cli_ext and SSL_CTX_set_custom_cli_ext argument
      order consistent.
      
      NOTE: these changes WILL break existing code.
      
      Remove (now inaccurate) in line documentation.
      Reviewed-by: NEmilia Käsper <emilia@openssl.org>
      33f653ad
    • D
      Callback revision. · de2a9e38
      Dr. Stephen Henson 提交于
      Use "parse" and "add" for function and callback names instead of
      "first" and "second".
      
      Change arguments to callback so the extension type is unsigned int
      and the buffer length is size_t. Note: this *will* break existing code.
      Reviewed-by: NEmilia Käsper <emilia@openssl.org>
      de2a9e38
    • D
      Add custom extension sanity checks. · 28ea0a0c
      Dr. Stephen Henson 提交于
      Reject attempts to use extensions handled internally.
      
      Add flags to each extension structure to indicate if an extension
      has been sent or received. Enforce RFC5246 compliance by rejecting
      duplicate extensions and unsolicited extensions and only send a
      server extension if we have sent the corresponding client extension.
      Reviewed-by: NEmilia Käsper <emilia@openssl.org>
      28ea0a0c
    • D
      Custom extension revision. · ecf4d660
      Dr. Stephen Henson 提交于
      Use the same structure for client and server custom extensions.
      
      Add utility functions in new file t1_ext.c.
      Use new utility functions to handle custom server and client extensions
      and remove a lot of code duplication.
      Reviewed-by: NEmilia Käsper <emilia@openssl.org>
      ecf4d660
  4. 15 8月, 2014 1 次提交
  5. 07 8月, 2014 1 次提交
  6. 25 7月, 2014 1 次提交
    • D
      Add conditional unit testing interface. · e0fc7961
      Dr. Stephen Henson 提交于
      Don't call internal functions directly call them through
      SSL_test_functions(). This also makes unit testing work on
      Windows and platforms that don't export internal functions
      from shared libraries.
      
      By default unit testing is not enabled: it requires the compile
      time option "enable-unit-test".
      Reviewed-by: NGeoff Thorpe <geoff@openssl.org>
      e0fc7961
  7. 04 7月, 2014 1 次提交
  8. 02 7月, 2014 1 次提交
  9. 30 6月, 2014 2 次提交
  10. 09 6月, 2014 1 次提交
    • D
      SRP ciphersuite correction. · 447280ca
      Dr. Stephen Henson 提交于
      SRP ciphersuites do not have no authentication. They have authentication
      based on SRP. Add new SRP authentication flag and cipher string.
      447280ca
  11. 28 3月, 2014 3 次提交
    • D
      Security framework. · b362ccab
      Dr. Stephen Henson 提交于
      Security callback: selects which parameters are permitted including
      sensible defaults based on bits of security.
      
      The "parameters" which can be selected include: ciphersuites,
      curves, key sizes, certificate signature algorithms, supported
      signature algorithms, DH parameters, SSL/TLS version, session tickets
      and compression.
      
      In some cases prohibiting the use of a parameters will mean they are
      not advertised to the peer: for example cipher suites and ECC curves.
      In other cases it will abort the handshake: e.g DH parameters or the
      peer key size.
      
      Documentation to follow...
      b362ccab
    • D
      Allow return of supported ciphers. · 8b8e5bed
      Dr. Stephen Henson 提交于
      New function ssl_cipher_disabled.
      
      Check for disabled client ciphers using ssl_cipher_disabled.
      
      New function to return only supported ciphers.
      
      New option to ciphers utility to print only supported ciphers.
      8b8e5bed
    • D
      Auto DH support. · 09599b52
      Dr. Stephen Henson 提交于
      Add auto DH parameter support. This is roughly equivalent to the
      ECDH auto curve selection but for DH. An application can just call
      
      SSL_CTX_set_auto_dh(ctx, 1);
      
      and appropriate DH parameters will be used based on the size of the
      server key.
      
      Unlike ECDH there is no way a peer can indicate the range of DH parameters
      it supports. Some peers cannot handle DH keys larger that 1024 bits for
      example. In this case if you call:
      
      SSL_CTX_set_auto_dh(ctx, 2);
      
      Only 1024 bit DH parameters will be used.
      
      If the server key is 7680 bits or more in size then 8192 bit DH parameters
      will be used: these will be *very* slow.
      
      The old export ciphersuites aren't supported but those are very
      insecure anyway.
      09599b52
  12. 25 2月, 2014 1 次提交
  13. 15 2月, 2014 1 次提交
  14. 06 2月, 2014 1 次提交
    • S
      Update custom TLS extension and supplemental data 'generate' callbacks to support sending an alert. · ac20719d
      Scott Deboy 提交于
      If multiple TLS extensions are expected but not received, the TLS extension and supplemental data 'generate' callbacks are the only chance for the receive-side to trigger a specific TLS alert during the handshake.
      
      Removed logic which no-op'd TLS extension generate callbacks (as the generate callbacks need to always be called in order to trigger alerts), and updated the serverinfo-specific custom TLS extension callbacks to track which custom TLS extensions were received by the client, where no-ops for 'generate' callbacks are appropriate.
      ac20719d
  15. 03 2月, 2014 1 次提交
    • D
      New ctrl to set current certificate. · 0f78819c
      Dr. Stephen Henson 提交于
      New ctrl sets current certificate based on certain criteria. Currently
      two options: set the first valid certificate as current and set the
      next valid certificate as current. Using these an application can
      iterate over all certificates in an SSL_CTX or SSL structure.
      0f78819c
  16. 09 1月, 2014 2 次提交
    • D
      use SSL_kDHE throughout instead of SSL_kEDH · 5a21cadb
      Daniel Kahn Gillmor 提交于
      DHE is the standard term used by the RFCs and by other TLS
      implementations.  It's useful to have the internal variables use the
      standard terminology.
      
      This patch leaves a synonym SSL_kEDH in place, though, so that older
      code can still be built against it, since that has been the
      traditional API.  SSL_kEDH should probably be deprecated at some
      point, though.
      5a21cadb
    • D
      use SSL_kECDHE throughout instead of SSL_kEECDH · 4082fea8
      Daniel Kahn Gillmor 提交于
      ECDHE is the standard term used by the RFCs and by other TLS
      implementations.  It's useful to have the internal variables use the
      standard terminology.
      
      This patch leaves a synonym SSL_kEECDH in place, though, so that older
      code can still be built against it, since that has been the
      traditional API.  SSL_kEECDH should probably be deprecated at some
      point, though.
      4082fea8
  17. 14 11月, 2013 1 次提交
    • R
      Additional "chain_cert" functions. · 7b6b246f
      Rob Stradling 提交于
      PR#3169
      
      This patch, which currently applies successfully against master and
      1_0_2, adds the following functions:
      
      SSL_[CTX_]select_current_cert() - set the current certificate without
      disturbing the existing structure.
      
      SSL_[CTX_]get0_chain_certs() - get the current certificate's chain.
      
      SSL_[CTX_]clear_chain_certs() - clear the current certificate's chain.
      
      The patch also adds these functions to, and fixes some existing errors
      in, SSL_CTX_add1_chain_cert.pod.
      7b6b246f
  18. 21 10月, 2013 1 次提交
    • N
      Do not include a timestamp in the Client/ServerHello Random field. · 2016265d
      Nick Mathewson 提交于
      Instead, send random bytes, unless SSL_SEND_{CLIENT,SERVER}RANDOM_MODE
      is set.
      
      This is a forward-port of commits:
        4af793036f6ef4f0a1078e5d7155426a98d50e37
        f4c93b46edb51da71f09eda99e83eaf193a33c08
        3da721dac9382c48812c8eba455528fd59af2eef
        2583270191a8b27eed303c03ece1da97b9b69fd3
      
      While the gmt_unix_time record was added in an ostensible attempt to
      mitigate the dangers of a bad RNG, its presence leaks the host's view
      of the current time in the clear.  This minor leak can help
      fingerprint TLS instances across networks and protocols... and what's
      worse, it's doubtful thet the gmt_unix_time record does any good at
      all for its intended purpose, since:
      
          * It's quite possible to open two TLS connections in one second.
      
          * If the PRNG output is prone to repeat itself, ephemeral
            handshakes (and who knows what else besides) are broken.
      2016265d
  19. 08 9月, 2013 1 次提交
    • D
      Experimental encrypt-then-mac support. · 5e3ff62c
      Dr. Stephen Henson 提交于
      Experimental support for encrypt then mac from
      draft-gutmann-tls-encrypt-then-mac-02.txt
      
      To enable it set the appropriate extension number (0x10 for the test server)
      using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x10
      
      For non-compliant peers (i.e. just about everything) this should have no
      effect.
      5e3ff62c
  20. 06 9月, 2013 1 次提交
    • S
      Add callbacks supporting generation and retrieval of supplemental data... · 36086186
      Scott Deboy 提交于
      Add callbacks supporting generation and retrieval of supplemental data entries, facilitating RFC 5878 (TLS auth extensions)
      Removed prior audit proof logic - audit proof support was implemented using the generic TLS extension API
      Tests exercising the new supplemental data registration and callback api can be found in ssltest.c.
      Implemented changes to s_server and s_client to exercise supplemental data callbacks via the -auth argument, as well as additional flags to exercise supplemental data being sent only during renegotiation.
      36086186
  21. 13 6月, 2013 1 次提交
  22. 09 4月, 2013 1 次提交
    • D
      Suite B support for DTLS 1.2 · 4544f0a6
      Dr. Stephen Henson 提交于
      Check for Suite B support using method flags instead of version numbers:
      anything supporting TLS 1.2 cipher suites will also support Suite B.
      
      Return an error if an attempt to use DTLS 1.0 is made in Suite B mode.
      4544f0a6
  23. 05 4月, 2013 1 次提交
    • D
      Make TLS 1.2 ciphers work again. · 1e2d4cb0
      Dr. Stephen Henson 提交于
      Since s->method does not reflect the final client version when a client
      hello is sent for SSLv23_client_method it can't be relied on to indicate
      if TLS 1.2 ciphers should be used. So use the client version instead.
      1e2d4cb0
  24. 28 3月, 2013 1 次提交
  25. 26 3月, 2013 2 次提交
    • D
      Provisional DTLS 1.2 support. · c3b344e3
      Dr. Stephen Henson 提交于
      Add correct flags for DTLS 1.2, update s_server and s_client to handle
      DTLS 1.2 methods.
      
      Currently no support for version negotiation: i.e. if client/server selects
      DTLS 1.2 it is that or nothing.
      c3b344e3
    • D
      Extend DTLS method macros. · cfd298b7
      Dr. Stephen Henson 提交于
      Extend DTLS method creation macros to support version numbers and encryption
      methods. Update existing code.
      cfd298b7
  26. 18 3月, 2013 3 次提交
    • D
      Use enc_flags when deciding protocol variations. · cbd64894
      Dr. Stephen Henson 提交于
      Use the enc_flags field to determine whether we should use explicit IV,
      signature algorithms or SHA256 default PRF instead of hard coding which
      versions support each requirement.
      cbd64894
    • D
      Use appropriate versions of SSL3_ENC_METHOD · 6de2649a
      Dr. Stephen Henson 提交于
      6de2649a
    • D
      DTLS revision. · 173e72e6
      Dr. Stephen Henson 提交于
      Revise DTLS code. There was a *lot* of code duplication in the
      DTLS code that generates records. This makes it harder to maintain and
      sometimes a TLS update is omitted by accident from the DTLS code.
      
      Specifically almost all of the record generation functions have code like
      this:
      
      some_pointer = buffer + HANDSHAKE_HEADER_LENGTH;
      ... Record creation stuff ...
      set_handshake_header(ssl, SSL_MT_SOMETHING, message_len);
      
      ...
      
      write_handshake_message(ssl);
      
      Where the "Record creation stuff" is identical between SSL/TLS and DTLS or
      in some cases has very minor differences.
      
      By adding a few fields to SSL3_ENC to include the header length, some flags
      and function pointers for handshake header setting and handshake writing the
      code can cope with both cases.
      
      Note: although this passes "make test" and some simple DTLS tests there may
      be some minor differences in the DTLS code that have to be accounted for.
      173e72e6
  27. 11 3月, 2013 1 次提交
    • D
      DTLS trace support. · 890f2f8b
      Dr. Stephen Henson 提交于
      Add DTLS record header parsing, different client hello format and add
      HelloVerifyRequest message type.
      
      Add code to d1_pkt.c to send message headers to the message callback.
      890f2f8b
  28. 08 2月, 2013 1 次提交
  29. 06 2月, 2013 2 次提交
    • A
      ssl/*: remove SSL3_RECORD->orig_len to restore binary compatibility. · 2aec073a
      Andy Polyakov 提交于
      Kludge alert. This is arranged by passing padding length in unused
      bits of SSL3_RECORD->type, so that orig_len can be reconstructed.
      (cherry picked from commit 8bfd4c659f180a6ce34f21c0e62956b362067fba)
      2aec073a
    • D
      Timing fix mitigation for FIPS mode. · c4e6fb15
      Dr. Stephen Henson 提交于
      We have to use EVP in FIPS mode so we can only partially mitigate
      timing differences.
      
      Make an extra call to EVP_DigestSignUpdate to hash additonal blocks
      to cover any timing differences caused by removal of padding.
      (cherry picked from commit b908e88ec15aa0a74805e3f2236fc4f83f2789c2)
      c4e6fb15