summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2014-07-31 12:19:51 +0200
committerDaniel Stenberg <daniel@haxx.se>2014-07-31 12:19:51 +0200
commita439e438f3662f12c003bda3c8cc3f6de09b4da0 (patch)
tree953d5cb7766efbcc4e63f47caa420a9e4a303a41 /lib
parent028a408d57cfcc891b9b88f1d56bc130980e11d0 (diff)
downloadcurl-a439e438f3662f12c003bda3c8cc3f6de09b4da0.tar.gz
ssl: generalize how the ssl backend identifier is set
Each backend now defines CURL_SSL_BACKEND accordingly. Added the *AXTLS one which was missing previously.
Diffstat (limited to 'lib')
-rw-r--r--lib/getinfo.c20
-rw-r--r--lib/vtls/axtls.h2
-rw-r--r--lib/vtls/curl_darwinssl.h1
-rw-r--r--lib/vtls/curl_schannel.h3
-rw-r--r--lib/vtls/cyassl.h1
-rw-r--r--lib/vtls/gskit.h3
-rw-r--r--lib/vtls/gtls.h1
-rw-r--r--lib/vtls/nssg.h1
-rw-r--r--lib/vtls/openssl.h1
-rw-r--r--lib/vtls/polarssl.h1
-rw-r--r--lib/vtls/qssl.h3
-rw-r--r--lib/vtls/vtls.c5
-rw-r--r--lib/vtls/vtls.h2
13 files changed, 30 insertions, 14 deletions
diff --git a/lib/getinfo.c b/lib/getinfo.c
index bbda35dd0..8905d3613 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -285,6 +285,7 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
struct curl_tlssessioninfo *tsi = &data->tsi;
struct connectdata *conn = data->easy_conn;
unsigned int sockindex = 0;
+ void *internals = NULL;
*tsip = tsi;
tsi->backend = CURLSSLBACKEND_NONE;
@@ -303,25 +304,24 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
/* Return the TLS session information from the relevant backend */
#ifdef USE_SSLEAY
- tsi->backend = CURLSSLBACKEND_OPENSSL;
- tsi->internals = conn->ssl[sockindex].ctx;
+ internals = conn->ssl[sockindex].ctx;
#endif
#ifdef USE_GNUTLS
- tsi->backend = CURLSSLBACKEND_GNUTLS;
- tsi->internals = conn->ssl[sockindex].session;
+ internals = conn->ssl[sockindex].session;
#endif
#ifdef USE_NSS
- tsi->backend = CURLSSLBACKEND_NSS;
- tsi->internals = conn->ssl[sockindex].handle;
+ internals = conn->ssl[sockindex].handle;
#endif
#ifdef USE_QSOSSL
- tsi->backend = CURLSSLBACKEND_QSOSSL;
- tsi->internals = conn->ssl[sockindex].handle;
+ internals = conn->ssl[sockindex].handle;
#endif
#ifdef USE_GSKIT
- tsi->backend = CURLSSLBACKEND_GSKIT;
- tsi->internals = conn->ssl[sockindex].handle;
+ internals = conn->ssl[sockindex].handle;
#endif
+ if(internals) {
+ tsi->backend = Curl_ssl_backend();
+ tsi->internals = internals;
+ }
/* NOTE: For other SSL backends, it is not immediately clear what data
to return from 'struct ssl_connect_data'; thus, for now we keep the
backend as CURLSSLBACKEND_NONE in those cases, which should be
diff --git a/lib/vtls/axtls.h b/lib/vtls/axtls.h
index 55247b8ec..0459cf228 100644
--- a/lib/vtls/axtls.h
+++ b/lib/vtls/axtls.h
@@ -66,7 +66,7 @@ int Curl_axtls_random(struct SessionHandle *data,
#define curlssl_check_cxn(x) Curl_axtls_check_cxn(x)
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
#define curlssl_random(x,y,z) Curl_axtls_random(x,y,z)
-
+#define CURL_SSL_BACKEND CURLSSLBACKEND_AXTLS
#endif /* USE_AXTLS */
#endif /* HEADER_CURL_AXTLS_H */
diff --git a/lib/vtls/curl_darwinssl.h b/lib/vtls/curl_darwinssl.h
index 25ad3d419..f5c03d838 100644
--- a/lib/vtls/curl_darwinssl.h
+++ b/lib/vtls/curl_darwinssl.h
@@ -71,6 +71,7 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y)
#define curlssl_random(x,y,z) Curl_darwinssl_random(y,z)
#define curlssl_md5sum(a,b,c,d) Curl_darwinssl_md5sum(a,b,c,d)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_DARWINSSL
#endif /* USE_DARWINSSL */
#endif /* HEADER_CURL_DARWINSSL_H */
diff --git a/lib/vtls/curl_schannel.h b/lib/vtls/curl_schannel.h
index b82c734a0..e9333179e 100644
--- a/lib/vtls/curl_schannel.h
+++ b/lib/vtls/curl_schannel.h
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -128,5 +128,6 @@ size_t Curl_schannel_version(char *buffer, size_t size);
#define curlssl_version Curl_schannel_version
#define curlssl_check_cxn(x) (x=x, -1)
#define curlssl_data_pending Curl_schannel_data_pending
+#define CURL_SSL_BACKEND CURLSSLBACKEND_SCHANNEL
#endif /* USE_SCHANNEL */
#endif /* HEADER_CURL_SCHANNEL_H */
diff --git a/lib/vtls/cyassl.h b/lib/vtls/cyassl.h
index 78cba2ff8..b10b607d7 100644
--- a/lib/vtls/cyassl.h
+++ b/lib/vtls/cyassl.h
@@ -63,6 +63,7 @@ int Curl_cyassl_random(struct SessionHandle *data,
#define curlssl_check_cxn(x) (x=x, -1)
#define curlssl_data_pending(x,y) Curl_cyassl_data_pending(x,y)
#define curlssl_random(x,y,z) Curl_cyassl_random(x,y,z)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_CYASSL
#endif /* USE_CYASSL */
#endif /* HEADER_CURL_CYASSL_H */
diff --git a/lib/vtls/gskit.h b/lib/vtls/gskit.h
index 7c50452ad..a4caa6f23 100644
--- a/lib/vtls/gskit.h
+++ b/lib/vtls/gskit.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -59,6 +59,7 @@ int Curl_gskit_check_cxn(struct connectdata * cxn);
#define curlssl_version Curl_gskit_version
#define curlssl_check_cxn(x) Curl_gskit_check_cxn(x)
#define curlssl_data_pending(x,y) 0
+#define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT
#endif /* USE_GSKIT */
#endif /* HEADER_CURL_GSKIT_H */
diff --git a/lib/vtls/gtls.h b/lib/vtls/gtls.h
index 9f99042cf..cd6152ca1 100644
--- a/lib/vtls/gtls.h
+++ b/lib/vtls/gtls.h
@@ -73,6 +73,7 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
#define curlssl_random(x,y,z) Curl_gtls_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_gtls_md5sum(a,b,c,d)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS
#endif /* USE_GNUTLS */
#endif /* HEADER_CURL_GTLS_H */
diff --git a/lib/vtls/nssg.h b/lib/vtls/nssg.h
index d441de9d9..311f873d7 100644
--- a/lib/vtls/nssg.h
+++ b/lib/vtls/nssg.h
@@ -83,6 +83,7 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
#define curlssl_random(x,y,z) Curl_nss_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_nss_md5sum(a,b,c,d)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_NSS
#endif /* USE_NSS */
#endif /* HEADER_CURL_NSSG_H */
diff --git a/lib/vtls/openssl.h b/lib/vtls/openssl.h
index fecad7f54..1a55ffc2f 100644
--- a/lib/vtls/openssl.h
+++ b/lib/vtls/openssl.h
@@ -93,6 +93,7 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) Curl_ossl_data_pending(x,y)
#define curlssl_random(x,y,z) Curl_ossl_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_ossl_md5sum(a,b,c,d)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL
#define DEFAULT_CIPHER_SELECTION "ALL!EXPORT!EXPORT40!EXPORT56!aNULL!LOW!RC4"
diff --git a/lib/vtls/polarssl.h b/lib/vtls/polarssl.h
index 6c5b872c8..9ab7e47e5 100644
--- a/lib/vtls/polarssl.h
+++ b/lib/vtls/polarssl.h
@@ -62,6 +62,7 @@ int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
#define curlssl_version Curl_polarssl_version
#define curlssl_check_cxn(x) (x=x, -1)
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_POLARSSL
/* This might cause libcurl to use a weeker random!
TODO: implement proper use of Polarssl's CTR-DRBG or HMAC-DRBG and use that
diff --git a/lib/vtls/qssl.h b/lib/vtls/qssl.h
index c0ce15508..9764eecbe 100644
--- a/lib/vtls/qssl.h
+++ b/lib/vtls/qssl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -56,6 +56,7 @@ int Curl_qsossl_check_cxn(struct connectdata * cxn);
#define curlssl_version Curl_qsossl_version
#define curlssl_check_cxn(x) Curl_qsossl_check_cxn(x)
#define curlssl_data_pending(x,y) 0
+#define CURL_SSL_BACKEND CURLSSLBACKEND_QSOSSL
#endif /* USE_QSOSSL */
#endif /* HEADER_CURL_QSSL_H */
diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
index 3c7bc9865..e418955bd 100644
--- a/lib/vtls/vtls.c
+++ b/lib/vtls/vtls.c
@@ -697,4 +697,9 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
}
#endif
+int Curl_ssl_backend(void)
+{
+ return (int)CURL_SSL_BACKEND;
+}
+
#endif /* USE_SSL */
diff --git a/lib/vtls/vtls.h b/lib/vtls/vtls.h
index 72c512d50..e3fa20b7a 100644
--- a/lib/vtls/vtls.h
+++ b/lib/vtls/vtls.h
@@ -96,6 +96,7 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
size_t tmplen,
unsigned char *md5sum, /* output */
size_t md5len);
+int Curl_ssl_backend(void);
#define SSL_SHUTDOWN_TIMEOUT 10000 /* ms */
@@ -124,6 +125,7 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
#define Curl_ssl_connect_nonblocking(x,y,z) CURLE_NOT_BUILT_IN
#define Curl_ssl_kill_session(x) Curl_nop_stmt
#define Curl_ssl_random(x,y,z) CURLE_NOT_BUILT_IN
+#define CURL_SSL_BACKEND CURLSSLBACKEND_NONE
#endif
#endif /* HEADER_CURL_VTLS_H */