From e7e03e47d4113bcac4340bdd83cf5af4991920ad Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 22 Jun 2017 16:36:03 +0200 Subject: [PATCH] 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 --- lib/vtls/vtls.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) 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 */