mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
vtls: refactor out essential information about the SSL backends
There is information about the compiled-in SSL backends that is really no concern of any code other than the SSL backend itself, such as which function (if any) implements SHA-256 summing. And there is information that is really interesting to the user, such as the name, or the curl_sslbackend value. Let's factor out the latter into a publicly visible struct. This information will be used in the upcoming API to set the SSL backend globally. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
parent
b0989cd3ab
commit
b59288f881
@ -2540,6 +2540,11 @@ CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
|
||||
#define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND)
|
||||
#define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT)
|
||||
|
||||
typedef struct {
|
||||
curl_sslbackend id;
|
||||
const char *name;
|
||||
} curl_ssl_backend;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -702,8 +702,7 @@ static void *Curl_axtls_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_axtls = {
|
||||
"axtls", /* name */
|
||||
CURLSSLBACKEND_AXTLS,
|
||||
{ CURLSSLBACKEND_AXTLS, "axtls" }, /* info */
|
||||
|
||||
0, /* have_ca_path */
|
||||
0, /* have_certinfo */
|
||||
|
@ -978,8 +978,7 @@ static void *Curl_cyassl_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_cyassl = {
|
||||
"cyassl", /* name */
|
||||
CURLSSLBACKEND_CYASSL,
|
||||
{ CURLSSLBACKEND_CYASSL, "cyassl" }, /* info */
|
||||
|
||||
0, /* have_ca_path */
|
||||
0, /* have_certinfo */
|
||||
|
@ -2890,8 +2890,7 @@ static void *Curl_darwinssl_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_darwinssl = {
|
||||
"darwinssl", /* name */
|
||||
CURLSSLBACKEND_DARWINSSL,
|
||||
{ CURLSSLBACKEND_DARWINSSL, "darwinssl" }, /* info */
|
||||
|
||||
0, /* have_ca_path */
|
||||
0, /* have_certinfo */
|
||||
|
@ -1353,8 +1353,7 @@ static void *Curl_gskit_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_gskit = {
|
||||
"gskit", /* name */
|
||||
CURLSSLBACKEND_GSKIT,
|
||||
{ CURLSSLBACKEND_GSKIT, "gskit" }, /* info */
|
||||
|
||||
0, /* have_ca_path */
|
||||
1, /* have_certinfo */
|
||||
|
@ -1806,8 +1806,7 @@ static void *Curl_gtls_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_gnutls = {
|
||||
"gnutls", /* name */
|
||||
CURLSSLBACKEND_GNUTLS,
|
||||
{ CURLSSLBACKEND_GNUTLS, "gnutls" }, /* info */
|
||||
|
||||
1, /* have_ca_path */
|
||||
1, /* have_certinfo */
|
||||
|
@ -1039,8 +1039,7 @@ static void *Curl_mbedtls_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_mbedtls = {
|
||||
"mbedtls", /* name */
|
||||
CURLSSLBACKEND_MBEDTLS,
|
||||
{ CURLSSLBACKEND_MBEDTLS, "mbedtls" }, /* info */
|
||||
|
||||
0, /* have_ca_path */
|
||||
0, /* have_certinfo */
|
||||
|
@ -2343,8 +2343,7 @@ static void *Curl_nss_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_nss = {
|
||||
"nss", /* name */
|
||||
CURLSSLBACKEND_NSS,
|
||||
{ CURLSSLBACKEND_NSS, "nss" }, /* info */
|
||||
|
||||
1, /* have_ca_path */
|
||||
1, /* have_certinfo */
|
||||
|
@ -3416,8 +3416,7 @@ static void *Curl_ossl_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_openssl = {
|
||||
"openssl", /* name */
|
||||
CURLSSLBACKEND_OPENSSL,
|
||||
{ CURLSSLBACKEND_OPENSSL, "openssl" }, /* info */
|
||||
|
||||
1, /* have_ca_path */
|
||||
1, /* have_certinfo */
|
||||
|
@ -901,8 +901,7 @@ static void *Curl_polarssl_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_polarssl = {
|
||||
"polarssl", /* name */
|
||||
CURLSSLBACKEND_POLARSSL,
|
||||
{ CURLSSLBACKEND_POLARSSL, "polarssl" }, /* info */
|
||||
|
||||
1, /* have_ca_path */
|
||||
0, /* have_certinfo */
|
||||
|
@ -1816,8 +1816,7 @@ static void *Curl_schannel_get_internals(struct ssl_connect_data *connssl,
|
||||
}
|
||||
|
||||
const struct Curl_ssl Curl_ssl_schannel = {
|
||||
"schannel", /* name */
|
||||
CURLSSLBACKEND_SCHANNEL,
|
||||
{ CURLSSLBACKEND_SCHANNEL, "schannel" }, /* info */
|
||||
|
||||
0, /* have_ca_path */
|
||||
1, /* have_certinfo */
|
||||
|
@ -138,7 +138,7 @@ int Curl_ssl_backend(void)
|
||||
{
|
||||
#ifdef USE_SSL
|
||||
multissl_init();
|
||||
return Curl_ssl->id;
|
||||
return Curl_ssl->info.id;
|
||||
#else
|
||||
return (int)CURLSSLBACKEND_NONE;
|
||||
#endif
|
||||
@ -1099,8 +1099,7 @@ static void Curl_multissl_close(struct connectdata *conn, int sockindex)
|
||||
}
|
||||
|
||||
static const struct Curl_ssl Curl_ssl_multi = {
|
||||
"multi", /* name */
|
||||
CURLSSLBACKEND_NONE,
|
||||
{ CURLSSLBACKEND_NONE, "multi" }, /* info */
|
||||
|
||||
0, /* have_ca_path */
|
||||
0, /* have_certinfo */
|
||||
@ -1182,7 +1181,7 @@ static int multissl_init(void)
|
||||
env = getenv("CURL_SSL_BACKEND");
|
||||
if(env)
|
||||
for(i = 0; available_backends[i]; i++)
|
||||
if(!strcmp(env, available_backends[i]->name)) {
|
||||
if(!strcmp(env, available_backends[i]->info.name)) {
|
||||
Curl_ssl = available_backends[i];
|
||||
return 0;
|
||||
}
|
||||
|
@ -27,8 +27,11 @@ struct connectdata;
|
||||
struct ssl_connect_data;
|
||||
|
||||
struct Curl_ssl {
|
||||
const char *name;
|
||||
int id; /* one of the CURLSSLBACKEND_* constants */
|
||||
/*
|
||||
* This *must* be the first entry to allow returning the list of available
|
||||
* backends in curl_global_sslset().
|
||||
*/
|
||||
curl_ssl_backend info;
|
||||
|
||||
unsigned have_ca_path:1; /* supports CAPATH */
|
||||
unsigned have_certinfo:1; /* supports CURLOPT_CERTINFO */
|
||||
|
Loading…
Reference in New Issue
Block a user