Jay Satiro
49a6642f01
openssl: Use TLS_client_method for OpenSSL 1.1.0+
...
SSLv23_client_method is deprecated starting in OpenSSL 1.1.0. The
equivalent is TLS_client_method.
https://github.com/openssl/openssl/commit/13c9bb3#diff-708d3ae0f2c2973b272b811315381557
2015-05-27 01:30:30 -04:00
Dmitry Eremin-Solenikov
d5aab55b33
gtls: don't fail on non-fatal alerts during handshake
...
Stop curl from failing when non-fatal alert is received during
handshake. This e.g. fixes lots of problems when working with https
sites through proxies.
2015-05-20 22:41:30 +02:00
Brian Prodoehl
a393d64456
openssl: Use SSL_CTX_set_msg_callback and SSL_CTX_set_msg_callback_arg
...
BoringSSL removed support for direct callers of SSL_CTX_callback_ctrl
and SSL_CTX_ctrl, so move to a way that should work on BoringSSL and
OpenSSL.
re #275
2015-05-19 22:54:42 +02:00
Alessandro Ghedini
a5e09e9eea
gtls: properly retrieve certificate status
...
Also print the revocation reason if appropriate.
2015-05-04 13:42:45 +02:00
Daniel Stenberg
86bc654532
OpenSSL: conditional check for SSL3_RT_HEADER
...
The symbol is fairly new.
Reported-by: Kamil Dudka
2015-05-04 13:29:34 +02:00
Daniel Stenberg
690317aae2
openssl: skip trace outputs for ssl_ver == 0
...
The OpenSSL trace callback is wonderfully undocumented but given a
journey in the source code, it seems the cases were ssl_ver is zero
doesn't follow the same pattern and thus turned out confusing and
misleading. For now, we skip doing any CURLINFO_TEXT logging on those
but keep sending them as CURLINFO_SSL_DATA_OUT/IN.
Also, I added direction to the text info and I edited some functions
slightly.
Bug: https://github.com/bagder/curl/issues/219
Reported-by: Jay Satiro, Ashish Shukla
2015-05-04 12:27:59 +02:00
Marc Hoersken
3c104448d6
schannel.c: Small changes
2015-05-02 22:21:25 +02:00
Marc Hoersken
ae8387b91c
schannel.c: Improve code path and readability
2015-05-02 20:14:53 +02:00
Marc Hoersken
d93619ca5d
schannel.c: Improve error and return code handling upon aa99a63f03
2015-05-02 20:05:22 +02:00
Chris Araman
aa99a63f03
schannel: fix regression in schannel_recv
...
https://github.com/bagder/curl/issues/244
Commit 145c263
changed the behavior when Curl_read_plain returns
CURLE_AGAIN. We now handle CURLE_AGAIN and SEC_I_CONTEXT_EXPIRED
correctly.
2015-05-02 18:54:13 +02:00
Marc Hoersken
4bb8bad964
Bug born in changes made several days ago 9a91e80
.
...
Commit: https://github.com/bagder/curl/commit/926cb9f
Reported-by: Ray Satiro
2015-05-01 09:39:34 +02:00
Jay Satiro
926cb9ff65
schannel: Fix out of bounds array
...
Bug born in changes made several days ago 9a91e80
.
Bug: http://curl.haxx.se/mail/lib-2015-04/0199.html
Reported-by: Brian Chrisman
2015-04-30 01:44:45 -04:00
Paul Howarth
d4f62f6c5d
nss: fix compilation failure with old versions of NSS
...
Bug: http://curl.haxx.se/mail/lib-2015-04/0095.html
2015-04-27 15:37:16 +02:00
Marc Hoersken
92e754de78
schannel.c: Fix typo introduced with 3447c973d0
2015-04-26 19:57:05 +02:00
Marc Hoersken
9a91e8059b
schannel.c: Fix possible SEC_E_BUFFER_TOO_SMALL error
...
Reported-by: Brian Chrisman
2015-04-26 17:59:01 +02:00
Daniel Stenberg
3447c973d0
schannel: re-indented file to follow curl style better
...
white space changes only
2015-04-26 17:40:40 +02:00
Daniel Stenberg
cae43a10cb
Curl_ossl_init: load builtin modules
...
To have engine modules work, we must tell openssl to load builtin
modules first.
Bug: https://github.com/bagder/curl/pull/206
2015-04-26 17:26:31 +02:00
Daniel Stenberg
aff153f83a
openssl: fix serial number output
...
The code extracting the cert serial number was broken and didn't display
it properly.
Bug: https://github.com/bagder/curl/issues/235
Reported-by: dkjjr89
2015-04-26 16:36:19 +02:00
Jay Satiro
0675abbc75
cyassl: Implement public key pinning
...
Also add public key extraction example to CURLOPT_PINNEDPUBLICKEY doc.
2015-04-22 17:07:19 -04:00
Kamil Dudka
b47c17d67c
nss: implement public key pinning for NSS backend
...
Bug: https://bugzilla.redhat.com/1195771
2015-04-22 13:21:31 +02:00
byronhe
6088fbce06
openssl: add OPENSSL_NO_SSL3_METHOD check
2015-04-21 15:25:21 -04:00
Viktor Szakáts
3a87bdebd1
vtls/openssl: use https in URLs and a comment typo fixed
2015-04-19 19:52:37 +02:00
Jay Satiro
f70112522f
cyassl: Fix include order
...
Prior to this change CyaSSL's build options could redefine some generic
build symbols.
http://curl.haxx.se/mail/lib-2015-04/0069.html
2015-04-17 15:24:04 -04:00
Jay Satiro
9430dd583e
cyassl: Add support for TLS extension SNI
2015-04-14 02:05:25 -04:00
Matthew Hall
a471a9f3b6
vtls_openssl: improve PKCS#12 load failure error message
2015-04-13 22:25:04 +02:00
Matthew Hall
27ac643455
vtls_openssl: fix minor typo in PKCS#12 load routine
2015-04-13 22:25:04 +02:00
Matthew Hall
b3175a767d
vtls_openssl: improve client certificate load failure error messages
2015-04-13 22:25:04 +02:00
Matthew Hall
58b0a8b059
vtls_openssl: remove ambiguous SSL_CLIENT_CERT_ERR constant
2015-04-13 22:25:04 +02:00
Jay Satiro
72bea7cc65
cyassl: Include the CyaSSL build config
...
CyaSSL >= 2.6.0 may have an options.h that was generated during
its build by configure.
2015-04-11 23:58:42 -04:00
Jay Satiro
d363c07912
cyassl: Use CYASSL_MAX_ERROR_SZ for error buffer size
...
Also fix it so that all ERR_error_string calls use an error buffer.
CyaSSL's implementation of ERR_error_string only writes the error when
an error buffer is passed.
http://www.yassl.com/forums/topic599-openssl-compatibility-and-errerrorstring.html
2015-04-06 17:54:14 +02:00
Jay Satiro
a30be951d6
cyassl: Remove 'Connecting to' message from cyassl_connect_step2
...
Prior to this change libcurl could show multiple 'CyaSSL: Connecting to'
messages since cyassl_connect_step2 is called multiple times, typically.
The message is superfluous even once since libcurl already informs the
user elsewhere in code that it is connecting.
2015-04-05 18:18:11 +02:00
Jay Satiro
f203edc544
cyassl: Set minimum protocol version before CTX callback
...
This change is to allow the user's CTX callback to change the minimum
protocol version in the CTX without us later overriding it, as we did
prior to this change.
2015-04-03 10:51:58 +02:00
Jay Satiro
0b5efa57ad
cyassl: Fix certificate load check
...
SSL_CTX_load_verify_locations can return negative values on fail,
therefore to check for failure we check if load is != 1 (success)
instead of if load is == 0 (failure), the latter being incorrect given
that behavior.
2015-04-02 17:18:42 +02:00
Jay Satiro
b121633402
cyassl: Fix library initialization return value
...
(Curl_cyassl_init)
- Return 1 on success, 0 in failure.
Prior to this change the fail path returned an incorrect value and the
evaluation to determine whether CyaSSL_Init had succeeded was incorrect.
Ironically that combined with the way curl_global_init tests SSL library
initialization (!Curl_ssl_init()) meant that CyaSSL having been
successfully initialized would be seen as that even though the code path
and return value in Curl_cyassl_init were wrong.
2015-04-01 08:10:58 +02:00
Dan Fandrich
049fe7fb53
axtls: add timeout within Curl_axtls_connect
...
This allows test 405 to pass on axTLS.
2015-03-31 02:04:22 +02:00
Jay Satiro
fcdc597b1a
cyassl: CTX callback cosmetic changes and doc fix
...
- More descriptive fail message for NO_FILESYSTEM builds.
- Cosmetic changes.
- Change more of CURLOPT_SSL_CTX_* doc to not be OpenSSL specific.
2015-03-28 16:41:51 +01:00
Kyle L. Huff
d2feb71752
cyassl: add SSL context callback support for CyaSSL
...
Adds support for CURLOPT_SSL_CTX_FUNCTION when using CyaSSL, and better
handles CyaSSL instances using NO_FILESYSTEM.
2015-03-27 23:32:14 +01:00
Kyle L. Huff
211f1e3c6b
cyassl: remove undefined reference to CyaSSL_no_filesystem_verify
...
CyaSSL_no_filesystem_verify is not (or no longer) defined by cURL or
CyaSSL. This reference causes build errors when compiling with
NO_FILESYSTEM.
2015-03-27 23:31:12 +01:00
Jay Satiro
e7a289ebb9
vtls: Don't accept unknown CURLOPT_SSLVERSION values
2015-03-27 09:32:23 +01:00
Daniel Stenberg
5b58bface3
polarssl: called mbedTLS in 1.3.10 and later
2015-03-25 09:19:57 +01:00
Daniel Stenberg
83b29e43cd
polarssl: remove dead code
...
and simplify code by changing if-elses to a switch()
CID 1291706: Logically dead code. Execution cannot reach this statement
2015-03-25 09:01:11 +01:00
Daniel Stenberg
24908c12d7
polarssl: remove superfluous for(;;) loop
...
"unreachable: Since the loop increment is unreachable, the loop body
will never execute more than once."
Coverity CID 1291707
2015-03-25 08:49:34 +01:00
Daniel Stenberg
4e299192ed
Curl_ssl_md5sum: return CURLcode
...
... since the funciton can fail on OOM. Check this return code.
Coverity CID 1291705.
2015-03-25 08:32:12 +01:00
Jay Satiro
e35f2e61ec
cyassl: default to highest possible TLS version
...
(cyassl_connect_step1)
- Use TLS 1.0-1.2 by default when available.
CyaSSL/wolfSSL >= v3.3.0 supports setting a minimum protocol downgrade
version.
cyassl/cyassl@322f79f
2015-03-25 08:10:24 +01:00
Jay Satiro
d29f8b460c
cyassl: Check for invalid length parameter in Curl_cyassl_random
2015-03-25 08:08:12 +01:00
Jay Satiro
ec31962640
cyassl: If wolfSSL then identify as such in version string
2015-03-25 08:08:12 +01:00
Dan Fandrich
35648f2e79
curl_memory: make curl_memory.h the second-last header file loaded
...
This header file must be included after all header files except
memdebug.h, as it does similar memory function redefinitions and can be
similarly affected by conflicting definitions in system or dependent
library headers.
2015-03-24 23:47:01 +01:00
Daniel Stenberg
ac2827ac09
openssl: do the OCSP work-around for libressl too
...
I tested with libressl git master now (v2.1.4-27-g34bf96c) and it seems to
still require the work-around for stapling to work.
2015-03-24 23:39:52 +01:00
Daniel Stenberg
bd9ac3cff2
openssl: verifystatus: only use the OCSP work-around <= 1.0.2a
...
URL: http://curl.haxx.se/mail/lib-2015-03/0205.html
Reported-by: Alessandro Ghedini
2015-03-24 23:06:37 +01:00
Daniel Stenberg
7e6ca87a72
openssl: adapt to ASN1/X509 things gone opaque in 1.1
2015-03-24 22:59:33 +01:00
Dan Fandrich
56ae66d518
vtls: fix compile with --disable-crypto-auth but with SSL
...
This is a strange combination of options, but is allowed.
2015-03-24 21:41:22 +01:00
Dan Fandrich
430006c5e2
cyassl: include version.h to ensure the version macros are defined
2015-03-23 10:10:03 +01:00
Nick Zitzmann
7f5a170442
darwinsssl: add support for TLS False Start
...
TLS False Start support requires iOS 7.0 or later, or OS X 10.9 or later.
2015-03-21 12:22:56 -05:00
Daniel Stenberg
ed429b72d7
gtls: add check of return code
...
Coverity CID 1291167 pointed out that 'rc' was received but never used when
gnutls_credentials_set() was used. Added return code check now.
2015-03-21 16:53:43 +01:00
Daniel Stenberg
fea13a17d8
gtls: dereferencing NULL pointer
...
Coverity CID 1291165 pointed out 'chainp' could be dereferenced when
NULL if gnutls_certificate_get_peers() had previously failed.
2015-03-21 16:53:23 +01:00
Daniel Stenberg
5f6f9e8b59
gtls: avoid uninitialized variable.
...
Coverity CID 1291166 pointed out that we could read this variable
uninitialized.
2015-03-21 16:53:09 +01:00
Daniel Stenberg
b734518371
nss: error: unused variable 'connssl'
2015-03-21 15:47:03 +01:00
Dan Fandrich
6779c50e26
cyassl: use new library version macro when available
2015-03-20 23:49:53 +01:00
Alessandro Ghedini
185914fd31
nss: add support for TLS False Start
2015-03-20 20:14:35 +01:00
Alessandro Ghedini
4dcd25e138
url: add CURLOPT_SSL_FALSESTART option
...
This option can be used to enable/disable TLS False Start defined in the RFC
draft-bmoeller-tls-falsestart.
2015-03-20 20:14:33 +01:00
Alessandro Ghedini
a332922a52
gtls: implement CURLOPT_CERTINFO
2015-03-20 19:03:53 +01:00
Alessandro Ghedini
8854f8d45a
openssl: try to avoid accessing OCSP structs when possible
2015-03-20 15:36:05 +01:00
Dan Fandrich
9e66d3f4d3
axtls: version 1.5.2 now requires that config.h be manually included
2015-03-19 10:11:17 +01:00
Kamil Dudka
e3fbdc7c8a
nss: explicitly tell NSS to disable NPN/ALPN
...
... if disabled at libcurl level. Otherwise, we would allow to
negotiate NPN despite curl was invoked with the --no-npn option.
2015-03-18 19:43:14 +01:00
Daniel Stenberg
2dc1a5ce93
checksrc: detect and remove space before trailing semicolons
2015-03-17 14:06:48 +01:00
Daniel Stenberg
9395999543
checksrc: use space after comma
2015-03-17 13:57:37 +01:00
Markus Elfring
29c655c0a6
Bug #149 : Deletion of unnecessary checks before calls of the function "free"
...
The function "free" is documented in the way that no action shall occur for
a passed null pointer. It is therefore not needed that a function caller
repeats a corresponding check.
http://stackoverflow.com/questions/18775608/free-a-null-pointer-anyway-or-check-first
This issue was fixed by using the software Coccinelle 1.0.0-rc24.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
2015-03-16 12:13:56 +01:00
Daniel Stenberg
186e46d88d
openssl: use colons properly in the ciphers list
...
While the previous string worked, this is the documented format.
Reported-by: Richard Moore
2015-03-12 23:29:46 +01:00
Daniel Stenberg
0d1060f21e
openssl: sort the ciphers on strength
...
This makes curl pick better (stronger) ciphers by default. The strongest
available ciphers are fine according to the HTTP/2 spec so an OpenSSL
built curl is no longer rejected by string HTTP/2 servers.
Bug: http://curl.haxx.se/bug/view.cgi?id=1487
2015-03-12 23:16:28 +01:00
Daniel Stenberg
1d3f1a80d0
openssl: show the cipher selection to use
2015-03-12 15:53:45 +01:00
Alessandro Ghedini
fa895f2aa2
gtls: correctly align certificate status verification messages
2015-03-10 15:48:34 +01:00
Alessandro Ghedini
a6a264ef2c
gtls: don't print double newline after certificate dates
2015-03-10 15:20:03 +01:00
Alessandro Ghedini
3a757fddbb
gtls: print negotiated TLS version and full cipher suite name
...
Instead of priting cipher and MAC algorithms names separately, print the
whole cipher suite string which also includes the key exchange algorithm,
along with the negotiated TLS version.
2015-03-10 15:18:14 +01:00
Daniel Stenberg
d9973eaeb8
gtls: fix compiler warnings
2015-03-10 15:16:59 +01:00
Alessandro Ghedini
5a1614cecd
gtls: add support for CURLOPT_CAPATH
2015-03-10 15:03:54 +01:00
Daniel Stenberg
00ea0e7db0
http2: use CURL_HTTP_VERSION_* symbols instead of NPN_*
...
Since they already exist and will make comparing easier
2015-03-07 11:10:30 +01:00
Alessandro Ghedini
adb4e41a1a
polarssl: make it possible to enable ALPN/NPN without HTTP2
2015-03-07 10:36:10 +01:00
Alessandro Ghedini
42bc45be8e
nss: make it possible to enable ALPN/NPN without HTTP2
2015-03-07 10:36:10 +01:00
Alessandro Ghedini
870a67e01f
gtls: make it possible to enable ALPN/NPN without HTTP2
2015-03-07 10:36:10 +01:00
Alessandro Ghedini
2e9494b15d
openssl: make it possible to enable ALPN/NPN without HTTP2
2015-03-07 10:36:10 +01:00
Daniel Stenberg
709cf76f6b
openssl: remove all uses of USE_SSLEAY
...
SSLeay was the name of the library that was subsequently turned into
OpenSSL many moons ago (1999). curl does not work with the old SSLeay
library since years. This is now reflected by only using USE_OPENSSL in
code that depends on OpenSSL.
2015-03-05 10:57:52 +01:00
Daniel Stenberg
8aabbf5f8c
vtls: use curl_printf.h all over
...
No need to use _MPRINTF_REPLACE internally.
2015-03-03 23:17:43 +01:00
Kamil Dudka
4909f7c795
nss: do not skip Curl_nss_seed() if data is NULL
...
In that case, we only skip writing the error message for failed NSS
initialization (while still returning the correct error code).
2015-02-25 10:23:07 +01:00
Kamil Dudka
7a1538d9cc
nss: improve error handling in Curl_nss_random()
...
The vtls layer now checks the return value, so it is no longer necessary
to abort if a random number cannot be provided by NSS. This also fixes
the following Coverity report:
Error: FORWARD_NULL (CWE-476):
lib/vtls/nss.c:1918: var_compare_op: Comparing "data" to null implies that "data" might be null.
lib/vtls/nss.c:1923: var_deref_model: Passing null pointer "data" to "Curl_failf", which dereferences it.
lib/sendf.c:154:3: deref_parm: Directly dereferencing parameter "data".
2015-02-25 10:23:06 +01:00
Alessandro Ghedini
63b4b8c7bd
nss: fix NPN/ALPN protocol negotiation
...
Correctly check for memcmp() return value (it returns 0 if the strings match).
This is not really important, since curl is going to use http/1.1 anyway, but
it's still a bug I guess.
2015-02-19 23:09:12 +01:00
Alessandro Ghedini
633b3895d7
polarssl: fix ALPN protocol negotiation
...
Correctly check for strncmp() return value (it returns 0 if the strings
match).
2015-02-19 23:07:40 +01:00
Alessandro Ghedini
676ac46ff5
gtls: fix build with HTTP2
2015-02-19 19:00:51 +01:00
Nick Zitzmann
b1c7fc050b
By request, change the name of "curl_darwinssl.[ch]" to "darwinssl.[ch]"
2015-02-15 17:11:01 -06:00
Kamil Dudka
aba2c4dca2
openssl: fix a compile-time warning
...
lib/vtls/openssl.c:1450:7: warning: extra tokens at end of #endif directive
2015-02-12 08:39:19 +01:00
Steve Holme
c1878e8f52
openssl: Use OPENSSL_IS_BORINGSSL for BoringSSL detection
...
For consistency with other conditionally compiled code in openssl.c,
use OPENSSL_IS_BORINGSSL rather than HAVE_BORINGSSL and try to use
HAVE_BORINGSSL outside of openssl.c when the OpenSSL header files are
not included.
2015-02-11 21:03:23 +00:00
Steve Holme
d771b44e53
openssl: Disable OCSP in old versions of OpenSSL
...
Versions of OpenSSL prior to v0.9.8h do not support the necessary
functions for OCSP stapling.
2015-02-09 21:01:39 +00:00
Jay Satiro
20c727ec4c
polarssl: Fix exclusive SSL protocol version options
...
Prior to this change the options for exclusive SSL protocol versions did
not actually set the protocol exclusive.
http://curl.haxx.se/mail/lib-2015-01/0002.html
Reported-by: Dan Fandrich
2015-02-09 10:39:17 +01:00
Jay Satiro
9956ef2d33
gskit: Fix exclusive SSLv3 option
2015-02-09 10:38:46 +01:00
Steve Holme
761d5166af
schannel: Removed curl_ prefix from source files
...
Removed the curl_ prefix from the schannel source files as discussed
with Marc and Daniel at FOSDEM.
2015-02-07 21:34:33 +00:00
Daniel Stenberg
d557da5d79
axtls: fix conversion from size_t to int warning
2015-02-06 14:26:32 +01:00
Daniel Stenberg
45b9b62de4
openssl: SSL_SESSION->ssl_version no longer exist
...
The struct went private in 1.0.2 so we cannot read the version number
from there anymore. Use SSL_version() instead!
Reported-by: Gisle Vanem
Bug: http://curl.haxx.se/mail/lib-2015-02/0034.html
2015-02-05 11:57:33 +01:00
Steve Holme
28c9e1edf4
schannel: Prefer 'CURLcode result' for curl result codes
2015-02-04 00:07:16 +00:00
Marc Hoersken
4161624e94
TODO: moved WinSSL/SChannel todo items into docs
2015-01-31 12:30:11 +01:00
Steve Holme
e1bb13c09f
openssl: Fixed Curl_ossl_cert_status_request() not returning FALSE
...
Modified the Curl_ossl_cert_status_request() function to return FALSE
when built with BoringSSL or when OpenSSL is missing the necessary TLS
extensions.
2015-01-27 12:53:41 +00:00
Steve Holme
a268a804b7
openssl: Fixed compilation errors when OpenSSL built with 'no-tlsext'
...
Fixed the build of openssl.c when OpenSSL is built without the necessary
TLS extensions for OCSP stapling.
Reported-by: John E. Malmberg
2015-01-27 12:47:48 +00:00