summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2017-06-22 16:36:03 +0200
committerDaniel Stenberg <daniel@haxx.se>2017-08-28 14:56:56 +0200
commite7e03e47d4113bcac4340bdd83cf5af4991920ad (patch)
treee5478ac049e767718c4f20d5fdd9baaabae9555b
parentc9d526cdbf1d24b9c77b4d0d4f8297e69c76d5f6 (diff)
downloadcurl-e7e03e47d4113bcac4340bdd83cf5af4991920ad.tar.gz
vtls: introduce a new struct for SSL backends
This new struct is similar in nature to Curl_handler: it will define the functions and capabilities of all the SSL backends (where Curl_handler defines the functions and capabilities of protocol handlers). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
-rw-r--r--lib/vtls/vtls.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/vtls/vtls.h b/lib/vtls/vtls.h
index 2aabeda20..b4df04771 100644
--- a/lib/vtls/vtls.h
+++ b/lib/vtls/vtls.h
@@ -23,6 +23,39 @@
***************************************************************************/
#include "curl_setup.h"
+struct connectdata;
+
+struct Curl_ssl {
+ const char *name;
+
+ int (*init)(void);
+ void (*cleanup)(void);
+
+ size_t (*version)(char *buffer, size_t size);
+ int (*check_cxn)(struct connectdata *cxn);
+ int (*shutdown)(struct connectdata *conn, int sockindex);
+ bool (*data_pending)(const struct connectdata *conn,
+ int connindex);
+
+ /* return 0 if a find random is filled in */
+ CURLcode (*random)(struct Curl_easy *data, unsigned char *entropy,
+ size_t length);
+ bool (*cert_status_request)(void);
+
+ CURLcode (*connect)(struct connectdata *conn, int sockindex);
+ CURLcode (*connect_nonblocking)(struct connectdata *conn, int sockindex,
+ bool *done);
+ void (*close)(struct connectdata *conn, int sockindex);
+ void (*close_all)(struct Curl_easy *data);
+ void (*session_free)(void *ptr);
+
+ CURLcode (*set_engine)(struct Curl_easy *data, const char *engine);
+ CURLcode (*set_engine_default)(struct Curl_easy *data);
+ struct curl_slist *(*engines_list)(struct Curl_easy *data);
+
+ bool (*false_start)(void);
+};
+
#include "openssl.h" /* OpenSSL versions */
#include "gtls.h" /* GnuTLS versions */
#include "nssg.h" /* NSS versions */