1. 15 2月, 2014 1 次提交
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 13 6月, 2013 1 次提交
  10. 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
  11. 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
  12. 28 3月, 2013 1 次提交
  13. 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
  14. 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
  15. 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
  16. 08 2月, 2013 1 次提交
  17. 06 2月, 2013 3 次提交
    • 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
    • B
      Make CBC decoding constant time. · 2acc020b
      Ben Laurie 提交于
      This patch makes the decoding of SSLv3 and TLS CBC records constant
      time. Without this, a timing side-channel can be used to build a padding
      oracle and mount Vaudenay's attack.
      
      This patch also disables the stitched AESNI+SHA mode pending a similar
      fix to that code.
      
      In order to be easy to backport, this change is implemented in ssl/,
      rather than as a generic AEAD mode. In the future this should be changed
      around so that HMAC isn't in ssl/, but crypto/ as FIPS expects.
      (cherry picked from commit e130841bccfc0bb9da254dc84e23bc6a1c78a64e)
      2acc020b
  18. 12 9月, 2012 1 次提交
  19. 11 9月, 2012 1 次提交
  20. 31 8月, 2012 1 次提交
  21. 15 8月, 2012 1 次提交
  22. 27 7月, 2012 1 次提交
  23. 25 7月, 2012 1 次提交
  24. 24 7月, 2012 2 次提交
    • D
      check EC tmp key matches preferences · d18b716d
      Dr. Stephen Henson 提交于
      d18b716d
    • D
      Add support for certificate stores in CERT structure. This makes it · 74ecfab4
      Dr. Stephen Henson 提交于
      possible to have different stores per SSL structure or one store in
      the parent SSL_CTX. Include distint stores for certificate chain
      verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
      to build and store a certificate chain in CERT structure: returing
      an error if the chain cannot be built: this will allow applications
      to test if a chain is correctly configured.
      
      Note: if the CERT based stores are not set then the parent SSL_CTX
      store is used to retain compatibility with existing behaviour.
      74ecfab4
  25. 18 7月, 2012 1 次提交
  26. 08 7月, 2012 1 次提交
    • D
      Add new ctrl to retrieve client certificate types, print out · 9f27b1ee
      Dr. Stephen Henson 提交于
      details in s_client.
      
      Also add ctrl to set client certificate types. If not used sensible values
      will be included based on supported signature algorithms: for example if
      we don't include any DSA signing algorithms the DSA certificate type is
      omitted.
      
      Fix restriction in old code where certificate types would be truncated
      if it exceeded TLS_CT_NUMBER.
      9f27b1ee
  27. 03 7月, 2012 1 次提交
  28. 29 6月, 2012 1 次提交
    • D
      Add certificate callback. If set this is called whenever a certificate · 18d71588
      Dr. Stephen Henson 提交于
      is required by client or server. An application can decide which
      certificate chain to present based on arbitrary criteria: for example
      supported signature algorithms. Add very simple example to s_server.
      This fixes many of the problems and restrictions of the existing client
      certificate callback: for example you can now clear existing certificates
      and specify the whole chain.
      18d71588
  29. 28 6月, 2012 2 次提交
  30. 25 6月, 2012 1 次提交
  31. 22 6月, 2012 1 次提交
  32. 18 6月, 2012 1 次提交