[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] 02/04: HTTPS tests: added new backend identification fun
From: |
gnunet |
Subject: |
[libmicrohttpd] 02/04: HTTPS tests: added new backend identification functions |
Date: |
Thu, 10 Jun 2021 20:26:09 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit 6c84bcf3fe605365c9cb665445145fcfe279762a
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Thu Jun 10 20:40:52 2021 +0300
HTTPS tests: added new backend identification functions
---
src/testcurl/https/tls_test_common.c | 103 ++++++++++++++++++++++++++++++++++-
src/testcurl/https/tls_test_common.h | 11 ++++
2 files changed, 112 insertions(+), 2 deletions(-)
diff --git a/src/testcurl/https/tls_test_common.c
b/src/testcurl/https/tls_test_common.c
index 7027e78f..d082c9a1 100644
--- a/src/testcurl/https/tls_test_common.c
+++ b/src/testcurl/https/tls_test_common.c
@@ -604,6 +604,100 @@ test_wrap (const char *test_name, int
}
+static int inited_tls_is_gnutls = 0;
+static int inited_tls_is_openssl = 0;
+
+int
+curl_tls_is_gnutls (void)
+{
+ const char *tlslib;
+ if (inited_tls_is_gnutls)
+ return 1;
+ if (inited_tls_is_openssl)
+ return 0;
+
+ tlslib = curl_version_info (CURLVERSION_NOW)->ssl_version;
+ if (NULL == tlslib)
+ return 0;
+ if (0 == strncmp (tlslib, "GnuTLS/", 7))
+ return 1;
+
+ /* Multi-backends handled during initialization by setting variable */
+ return 0;
+}
+
+
+int
+curl_tls_is_nss (void)
+{
+ const char *tlslib;
+ if (inited_tls_is_gnutls)
+ return 0;
+ if (inited_tls_is_openssl)
+ return 0;
+
+ tlslib = curl_version_info (CURLVERSION_NOW)->ssl_version;
+ if (NULL == tlslib)
+ return 0;
+ if (0 == strncmp (tlslib, "NSS/", 4))
+ return 1;
+
+ /* Handle multi-backends with selected backend */
+ if (NULL != strstr (tlslib," NSS/"))
+ return 1;
+
+ return 0;
+}
+
+
+int
+curl_tls_is_schannel (void)
+{
+ const char *tlslib;
+ if (inited_tls_is_gnutls)
+ return 0;
+ if (inited_tls_is_openssl)
+ return 0;
+
+ tlslib = curl_version_info (CURLVERSION_NOW)->ssl_version;
+ if (NULL == tlslib)
+ return 0;
+ if ((0 == strncmp (tlslib, "Schannel", 8)) || (0 == strncmp (tlslib,
"WinSSL",
+ 6)))
+ return 1;
+
+ /* Handle multi-backends with selected backend */
+ if ((NULL != strstr (tlslib," Schannel")) || (NULL != strstr (tlslib,
+ " WinSSL")))
+ return 1;
+
+ return 0;
+}
+
+
+int
+curl_tls_is_sectransport (void)
+{
+ const char *tlslib;
+ if (inited_tls_is_gnutls)
+ return 0;
+ if (inited_tls_is_openssl)
+ return 0;
+
+ tlslib = curl_version_info (CURLVERSION_NOW)->ssl_version;
+ if (NULL == tlslib)
+ return 0;
+ if (0 == strncmp (tlslib, "SecureTransport", 15))
+ return 1;
+
+ /* Handle multi-backends with selected backend */
+ if (NULL != strstr (tlslib," SecureTransport"))
+ return 1;
+
+ return 0;
+}
+
+
int
testsuite_curl_global_init (void)
{
@@ -611,10 +705,15 @@ testsuite_curl_global_init (void)
#if LIBCURL_VERSION_NUM >= 0x073800
if (CURLSSLSET_OK != curl_global_sslset (CURLSSLBACKEND_GNUTLS, NULL, NULL))
{
- if (CURLSSLSET_TOO_LATE == curl_global_sslset (CURLSSLBACKEND_OPENSSL,
NULL,
- NULL))
+ CURLsslset e;
+ e = curl_global_sslset (CURLSSLBACKEND_OPENSSL, NULL, NULL);
+ if (CURLSSLSET_TOO_LATE == e)
fprintf (stderr, "WARNING: libcurl was already initialised.\n");
+ else if (CURLSSLSET_OK == e)
+ inited_tls_is_openssl = 1;
}
+ else
+ inited_tls_is_gnutls = 1;
#endif /* LIBCURL_VERSION_NUM >= 0x07380 */
res = curl_global_init (CURL_GLOBAL_ALL);
if (CURLE_OK != res)
diff --git a/src/testcurl/https/tls_test_common.h
b/src/testcurl/https/tls_test_common.h
index fd2a47b1..6362bb14 100644
--- a/src/testcurl/https/tls_test_common.h
+++ b/src/testcurl/https/tls_test_common.h
@@ -77,6 +77,17 @@ curl_check_version (const char *req_version, ...);
int
curl_uses_nss_ssl (void);
+int
+curl_tls_is_gnutls (void);
+
+int
+curl_tls_is_nss (void);
+
+int
+curl_tls_is_schannel (void);
+
+int
+curl_tls_is_sectransport (void);
FILE *
setup_ca_cert (void);
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.