Skip to content
Snippets Groups Projects
  1. Jun 22, 2016
  2. Jun 06, 2016
    • Steve Holme's avatar
      schannel: Disable ALPN on Windows < 8.1 · 34855fee
      Steve Holme authored
      Calling QueryContextAttributes with SECPKG_ATTR_APPLICATION_PROTOCOL
      fails on Windows < 8.1 so we need to disable ALPN on these OS versions.
      
      Inspiration provide by: Daniel Seither
      
      Closes #848
      Fixes #840
      34855fee
  3. Jun 04, 2016
  4. Jun 01, 2016
    • Ivan Avdeev's avatar
      vtls: fix ssl session cache race condition · 31c521b0
      Ivan Avdeev authored
      Sessionid cache management is inseparable from managing individual
      session lifetimes. E.g. for reference-counted sessions (like those in
      SChannel and OpenSSL engines) every session addition and removal
      should be accompanied with refcount increment and decrement
      respectively. Failing to do so synchronously leads to a race condition
      that causes symptoms like use-after-free and memory corruption.
      This commit:
       - makes existing session cache locking explicit, thus allowing
         individual engines to manage lock's scope.
       - fixes OpenSSL and SChannel engines by putting refcount management
         inside this lock's scope in relevant places.
       - adds these explicit locking calls to other engines that use
         sessionid cache to accommodate for this change. Note, however,
         that it is unknown whether any of these engines could also have
         this race.
      
      Bug: https://github.com/curl/curl/issues/815
      Fixes #815
      Closes #847
      31c521b0
    • Andrew Kurushin's avatar
      schannel: add CURLOPT_CERTINFO support · 6cabd785
      Andrew Kurushin authored
      Closes #822
      6cabd785
  5. May 18, 2016
  6. May 09, 2016
    • Daniel Stenberg's avatar
      TLS: move the ALPN/NPN enable bits to the connection · f6767f54
      Daniel Stenberg authored
      Only protocols that actually have a protocol registered for ALPN and NPN
      should try to get that negotiated in the TLS handshake. That is only
      HTTPS (well, http/1.1 and http/2) right now. Previously ALPN and NPN
      would wrongly be used in all handshakes if libcurl was built with it
      enabled.
      
      Reported-by: Jay Satiro
      
      Fixes #789
      f6767f54
  7. Apr 03, 2016
  8. Mar 26, 2016
  9. Mar 24, 2016
    • JDepooter's avatar
      schannel: Add ALPN support · f8d88a49
      JDepooter authored
      Add ALPN support for schannel. This allows cURL to negotiate
      HTTP/2.0 connections when built with schannel.
      
      Closes #724
      f8d88a49
  10. Feb 04, 2016
  11. Feb 02, 2016
  12. Nov 21, 2015
  13. Aug 01, 2015
  14. Jul 22, 2015
  15. Jul 17, 2015
  16. Jun 17, 2015
    • Jay Satiro's avatar
      schannel: schannel_recv overhaul · 3e7ec1e8
      Jay Satiro authored
      This commit is several drafts squashed together. The changes from each
      draft are noted below. If any changes are similar and possibly
      contradictory the change in the latest draft takes precedence.
      
      Bug: https://github.com/bagder/curl/issues/244
      Reported-by: Chris Araman
      
      %%
      %% Draft 1
      %%
      - return 0 if len == 0. that will have to be documented.
      - continue on and process the caches regardless of raw recv
      - if decrypted data will be returned then set the error code to CURLE_OK
      and return its count
      - if decrypted data will not be returned and the connection has closed
      (eg nread == 0) then return 0 and CURLE_OK
      - if decrypted data will not be returned and the connection *hasn't*
      closed then set the error code to CURLE_AGAIN --only if an error code
      isn't already set-- and return -1
      - narrow the Win2k workaround to only Win2k
      
      %%
      %% Draft 2
      %%
      - Trying out a change in flow to handle corner cases.
      
      %%
      %% Draft 3
      %%
      - Back out the lazier decryption change made in draft2.
      
      %%
      %% Draft 4
      %%
      - Some formatting and branching changes
      - Decrypt all encrypted cached data when len == 0
      - Save connection closed state
      - Change special Win2k check to use connection closed state
      
      %%
      %% Draft 5
      %%
      - Default to CURLE_AGAIN in cleanup if an error code wasn't set and the
      connection isn't closed.
      
      %%
      %% Draft 6
      %%
      - Save the last error only if it is an unrecoverable error.
      
      Prior to this I saved the last error state in all cases; unfortunately
      the logic to cover that in all cases would lead to some muddle and I'm
      concerned that could then lead to a bug in the future so I've replaced
      it by only recording an unrecoverable error and that state will persist.
      
      - Do not recurse on renegotiation.
      
      Instead we'll continue on to process any trailing encrypted data
      received during the renegotiation only.
      
      - Move the err checks in cleanup after the check for decrypted data.
      
      In either case decrypted data is always returned but I think it's easier
      to understand when those err checks come after the decrypted data check.
      
      %%
      %% Draft 7
      %%
      - Regardless of len value go directly to cleanup if there is an
      unrecoverable error or a close_notify was already received. Prior to
      this change we only acknowledged those two states if len != 0.
      
      - Fix a bug in connection closed behavior: Set the error state in the
      cleanup, because we don't know for sure it's an error until that time.
      
      - (Related to above) In the case the connection is closed go "greedy"
      with the decryption to make sure all remaining encrypted data has been
      decrypted even if it is not needed at that time by the caller. This is
      necessary because we can only tell if the connection closed gracefully
      (close_notify) once all encrypted data has been decrypted.
      
      - Do not renegotiate when an unrecoverable error is pending.
      
      %%
      %% Draft 8
      %%
      - Don't show 'server closed the connection' info message twice.
      
      - Show an info message if server closed abruptly (missing close_notify).
      3e7ec1e8
  17. Jun 11, 2015
    • Joel Depooter's avatar
      schannel: Add support for optional client certificates · a3e5a437
      Joel Depooter authored
      Some servers will request a client certificate, but not require one.
      This change allows libcurl to connect to such servers when using
      schannel as its ssl/tls backend. When a server requests a client
      certificate, libcurl will now continue the handshake without one,
      rather than terminating the handshake. The server can then decide
      if that is acceptable or not. Prior to this change, libcurl would
      terminate the handshake, reporting a SEC_I_INCOMPLETE_CREDENTIALS
      error.
      a3e5a437
  18. May 02, 2015
  19. May 01, 2015
  20. Apr 30, 2015
  21. Apr 26, 2015
  22. Mar 03, 2015
  23. Feb 07, 2015
  24. Feb 04, 2015
  25. Jan 31, 2015
  26. Jan 12, 2015
    • Marc Hoersken's avatar
      curl_schannel.c: mark session as removed from cache if not freed · e9834808
      Marc Hoersken authored
      If the session is still used by active SSL/TLS connections, it
      cannot be closed yet. Thus we mark the session as not being cached
      any longer so that the reference counting mechanism in
      Curl_schannel_shutdown is used to close and free the session.
      
      Reported-by: Jean-Francois Durand
      e9834808
  27. Dec 25, 2014
  28. Dec 14, 2014
  29. Dec 09, 2014
Loading