1. 01 10月, 2015 1 次提交
    • M
      Change the DEFAULT ciphersuites to exclude DES, RC4 and RC2 · c84f7f4a
      Matt Caswell 提交于
      This patch updates the "DEFAULT" cipherstring to be
      "ALL:!COMPLEMENTOFDEFAULT:!eNULL". COMPLEMENTOFDEFAULT is now defined
      internally by a flag on each ciphersuite indicating whether it should be
      excluded from DEFAULT or not. This gives us control at an individual
      ciphersuite level as to exactly what is in DEFAULT and what is not.
      
      Finally all DES, RC4 and RC2 ciphersuites are added to COMPLEMENTOFDEFAULT
      and hence removed from DEFAULT.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      c84f7f4a
  2. 30 9月, 2015 1 次提交
    • D
      Fix no-stdio build · 984d6c60
      David Woodhouse 提交于
      Much related/similar work also done by
      Ivan Nestlerode <ivan.nestlerode@sonos.com>
      
         +Replace FILE BIO's with dummy ops that fail.
         +Include <stdio.h> for sscanf() even with no-stdio (since the declaration
          is there). We rely on sscanf() to parse the OPENSSL_ia32cap environment
          variable, since it can be larger than a 'long'. And we don't rely on the
          availability of strtoull().
         +Remove OPENSSL_stderr(); not used.
         +Make OPENSSL_showfatal() do nothing (currently without stdio there's
          nothing we can do).
         +Remove file-based functionality from ssl/. The function
          prototypes were already gone, but not the functions themselves.
         +Remove unviable conf functionality via SYS_UEFI
         +Add fallback definition of BUFSIZ.
         +Remove functions taking FILE * from header files.
         +Add missing DECLARE_PEM_write_fp_const
         +Disable X509_LOOKUP_hash_dir(). X509_LOOKUP_file() was already compiled out,
          so remove its prototype.
         +Use OPENSSL_showfatal() in CRYPTO_destroy_dynlockid().
         +Eliminate SRP_VBASE_init() and supporting functions. Users will need to
          build the verifier manually instead.
         +Eliminate compiler warning for unused do_pk8pkey_fp().
         +Disable TEST_ENG_OPENSSL_PKEY.
         +Disable GOST engine as is uses [f]printf all over the place.
         +Eliminate compiler warning for unused send_fp_chars().
      Signed-off-by: NRich Salz <rsalz@akamai.com>
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      984d6c60
  3. 25 9月, 2015 1 次提交
  4. 23 9月, 2015 1 次提交
    • M
      DTLSv1_listen rewrite · e3d0dae7
      Matt Caswell 提交于
      The existing implementation of DTLSv1_listen() is fundamentally flawed. This
      function is used in DTLS solutions to listen for new incoming connections
      from DTLS clients. A client will send an initial ClientHello. The server
      will respond with a HelloVerifyRequest containing a unique cookie. The
      client the responds with a second ClientHello - which this time contains the
      cookie.
      
      Once the cookie has been verified then DTLSv1_listen() returns to user code,
      which is typically expected to continue the handshake with a call to (for
      example) SSL_accept().
      
      Whilst listening for incoming ClientHellos, the underlying BIO is usually in
      an unconnected state. Therefore ClientHellos can come in from *any* peer.
      The arrival of the first ClientHello without the cookie, and the second one
      with it, could be interspersed with other intervening messages from
      different clients.
      
      The whole purpose of this mechanism is as a defence against DoS attacks. The
      idea is to avoid allocating state on the server until the client has
      verified that it is capable of receiving messages at the address it claims
      to come from. However the existing DTLSv1_listen() implementation completely
      fails to do this. It attempts to super-impose itself on the standard state
      machine and reuses all of this code. However the standard state machine
      expects to operate in a stateful manner with a single client, and this can
      cause various problems.
      
      A second more minor issue is that the return codes from this function are
      quite confused, with no distinction made between fatal and non-fatal errors.
      Most user code treats all errors as non-fatal, and simply retries the call
      to DTLSv1_listen().
      
      This commit completely rewrites the implementation of DTLSv1_listen() and
      provides a stand alone implementation that does not rely on the existing
      state machine. It also provides more consistent return codes.
      Reviewed-by: NAndy Polyakov <appro@openssl.org>
      e3d0dae7
  5. 11 9月, 2015 1 次提交
  6. 14 8月, 2015 2 次提交
  7. 12 8月, 2015 2 次提交
  8. 03 8月, 2015 2 次提交
    • M
      Fix make errors for the CCS changes · 496dbe18
      Matt Caswell 提交于
      The move of CCS into the state machine was causing make errors to fail. This
      fixes it.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      496dbe18
    • M
      Move TLS CCS processing into the state machine · 657da85e
      Matt Caswell 提交于
      The handling of incoming CCS records is a little strange. Since CCS is not
      a handshake message it is handled differently to normal handshake messages.
      Unfortunately whilst technically it is not a handhshake message the reality
      is that it must be processed in accordance with the state of the handshake.
      Currently CCS records are processed entirely within the record layer. In
      order to ensure that it is handled in accordance with the handshake state
      a flag is used to indicate that it is an acceptable time to receive a CCS.
      
      Previously this flag did not exist (see CVE-2014-0224), but the flag should
      only really be considered a workaround for the problem that CCS is not
      visible to the state machine.
      
      Outgoing CCS messages are already handled within the state machine.
      
      This patch makes CCS visible to the TLS state machine. A separate commit
      will handle DTLS.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      657da85e
  9. 30 7月, 2015 1 次提交
  10. 15 7月, 2015 1 次提交
  11. 29 6月, 2015 1 次提交
  12. 10 6月, 2015 1 次提交
  13. 02 6月, 2015 1 次提交
  14. 28 5月, 2015 4 次提交
  15. 23 5月, 2015 1 次提交
  16. 16 5月, 2015 4 次提交
    • M
      Updates following review comments · d45ba43d
      Matt Caswell 提交于
      Miscellaneous updates following review comments on the version negotiation
      rewrite patches.
      Reviewed-by: NKurt Roeckx <kurt@openssl.org>
      d45ba43d
    • M
      Version negotiation rewrite cleanup · a3680c8f
      Matt Caswell 提交于
      Following the version negotiation rewrite all of the previous code that was
      dedicated to version negotiation can now be deleted - all six source files
      of it!!
      Reviewed-by: NKurt Roeckx <kurt@openssl.org>
      a3680c8f
    • M
      Client side version negotiation rewrite · 13c9bb3e
      Matt Caswell 提交于
      Continuing from the previous commit this changes the way we do client side
      version negotiation. Similarly all of the s23* "up front" state machine code
      has been avoided and again things now work much the same way as they already
      did for DTLS, i.e. we just do most of the work in the
      ssl3_get_server_hello() function.
      Reviewed-by: NKurt Roeckx <kurt@openssl.org>
      13c9bb3e
    • M
      Server side version negotiation rewrite · 32ec4153
      Matt Caswell 提交于
      This commit changes the way that we do server side protocol version
      negotiation. Previously we had a whole set of code that had an "up front"
      state machine dedicated to the negotiating the protocol version. This adds
      significant complexity to the state machine. Historically the justification
      for doing this was the support of SSLv2 which works quite differently to
      SSLv3+. However, we have now removed support for SSLv2 so there is little
      reason to maintain this complexity.
      
      The one slight difficulty is that, although we no longer support SSLv2, we
      do still support an SSLv3+ ClientHello in an SSLv2 backward compatible
      ClientHello format. This is generally only used by legacy clients. This
      commit adds support within the SSLv3 code for these legacy format
      ClientHellos.
      
      Server side version negotiation now works in much the same was as DTLS,
      i.e. we introduce the concept of TLS_ANY_VERSION. If s->version is set to
      that then when a ClientHello is received it will work out the most
      appropriate version to respond with. Also, SSLv23_method and
      SSLv23_server_method have been replaced with TLS_method and
      TLS_server_method respectively. The old SSLv23* names still exist as
      macros pointing at the new name, although they are deprecated.
      
      Subsequent commits will look at client side version negotiation, as well of
      removal of the old s23* code.
      Reviewed-by: NKurt Roeckx <kurt@openssl.org>
      32ec4153
  17. 13 5月, 2015 1 次提交
  18. 12 5月, 2015 1 次提交
    • R
      Make COMP_CTX and COMP_METHOD opaque · 9a555706
      Rich Salz 提交于
      Since COMP_METHOD is now defined in comp_lcl.h, it is no
      longer possible to create new TLS compression methods without
      using the OpenSSL source.  Only ZLIB is supported by default.
      Also, since the types are opaque, #ifdef guards to use "char *"
      instead of the real type aren't necessary.
      
      The changes are actually minor.  Adding missing copyright to some
      files makes the diff misleadingly big.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      9a555706
  19. 09 5月, 2015 1 次提交
  20. 06 5月, 2015 2 次提交
  21. 22 4月, 2015 2 次提交
    • D
      SSL_CIPHER lookup functions. · 98c9ce2f
      Dr. Stephen Henson 提交于
      Add tables to convert between SSL_CIPHER fields and indices for ciphers
      and MACs.
      
      Reorganise ssl_ciph.c to use tables to lookup values and load them.
      
      New functions SSL_CIPHER_get_cipher_nid and SSL_CIPHER_get_digest_nid.
      
      Add documentation.
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      98c9ce2f
    • E
      Repair EAP-FAST session resumption · 6e3d0153
      Emilia Kasper 提交于
      EAP-FAST session resumption relies on handshake message lookahead
      to determine server intentions. Commits
      980bc1ec
      and
      7b3ba508
      removed the lookahead so broke session resumption.
      
      This change partially reverts the commits and brings the lookahead back
      in reduced capacity for TLS + EAP-FAST only. Since EAP-FAST does not
      support regular session tickets, the lookahead now only checks for a
      Finished message.
      
      Regular handshakes are unaffected by this change.
      Reviewed-by: NDavid Benjamin <davidben@chromium.org>
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      6e3d0153
  22. 16 4月, 2015 1 次提交
  23. 01 4月, 2015 1 次提交
  24. 26 3月, 2015 2 次提交
  25. 25 3月, 2015 2 次提交
  26. 24 3月, 2015 1 次提交
  27. 23 3月, 2015 1 次提交