Loading lib/getinfo.c +1 −1 Original line number Diff line number Diff line Loading @@ -183,7 +183,7 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...) break; case CURLINFO_SSL_ENGINES: Curl_SSL_engines_list(data); *param_slistp = data->engine_list; *param_slistp = data->state.engine_list; break; default: return CURLE_BAD_FUNCTION_ARGUMENT; Loading lib/ssluse.c +23 −24 Original line number Diff line number Diff line Loading @@ -329,7 +329,7 @@ int cert_stuff(struct connectdata *conn, #ifdef HAVE_OPENSSL_ENGINE_H { /* XXXX still needs some work */ EVP_PKEY *priv_key = NULL; if(conn && conn->data && conn->data->engine) { if(conn && conn->data && conn->data->state.engine) { #ifdef HAVE_ENGINE_LOAD_FOUR_ARGS UI_METHOD *ui_method = UI_OpenSSL(); #endif Loading @@ -339,7 +339,7 @@ int cert_stuff(struct connectdata *conn, } /* the typecast below was added to please mingw32 */ priv_key = (EVP_PKEY *) ENGINE_load_private_key(conn->data->engine,key_file, ENGINE_load_private_key(conn->data->state.engine,key_file, #ifdef HAVE_ENGINE_LOAD_FOUR_ARGS ui_method, #endif Loading Loading @@ -495,17 +495,17 @@ CURLcode Curl_SSL_set_engine(struct SessionHandle *data, const char *engine) return (CURLE_SSL_ENGINE_NOTFOUND); } if (data->engine) { ENGINE_finish(data->engine); ENGINE_free(data->engine); if (data->state.engine) { ENGINE_finish(data->state.engine); ENGINE_free(data->state.engine); } data->engine = NULL; data->state.engine = NULL; if (!ENGINE_init(e)) { ENGINE_free(e); failf(data, "Failed to initialise SSL Engine '%s'", engine); return (CURLE_SSL_ENGINE_INITFAILED); } data->engine = e; data->state.engine = e; return (CURLE_OK); #else failf(data, "SSL Engine not supported"); Loading @@ -518,12 +518,12 @@ CURLcode Curl_SSL_set_engine(struct SessionHandle *data, const char *engine) CURLcode Curl_SSL_set_engine_default(struct SessionHandle *data) { #if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H) if (data->engine) { if (ENGINE_set_default(data->engine, ENGINE_METHOD_ALL) > 0) { infof(data,"set default crypto engine %s\n", data->engine); if (data->state.engine) { if (ENGINE_set_default(data->state.engine, ENGINE_METHOD_ALL) > 0) { infof(data,"set default crypto engine %s\n", data->state.engine); } else { failf(data, "set default crypto engine %s failed", data->engine); failf(data, "set default crypto engine %s failed", data->state.engine); return CURLE_SSL_ENGINE_SETFAILED; } } Loading @@ -534,7 +534,7 @@ CURLcode Curl_SSL_set_engine_default(struct SessionHandle *data) } /* Build the list of OpenSSL crypto engine names. Add to * linked list at data->engine_list. * linked list at data->state.engine_list. */ CURLcode Curl_SSL_engines_list(struct SessionHandle *data) { Loading @@ -542,12 +542,12 @@ CURLcode Curl_SSL_engines_list(struct SessionHandle *data) ENGINE *e; /* Free previous list */ if (data->engine_list) curl_slist_free_all(data->engine_list); if (data->state.engine_list) curl_slist_free_all(data->state.engine_list); data->engine_list = NULL; data->state.engine_list = NULL; for (e = ENGINE_get_first(); e; e = ENGINE_get_next(e)) data->engine_list = curl_slist_append(data->engine_list, ENGINE_get_id(e)); data->state.engine_list = curl_slist_append(data->state.engine_list, ENGINE_get_id(e)); #endif return (CURLE_OK); } Loading Loading @@ -691,14 +691,14 @@ int Curl_SSL_Close_All(struct SessionHandle *data) free(data->state.session); } #ifdef HAVE_OPENSSL_ENGINE_H if(data->engine) { ENGINE_finish(data->engine); ENGINE_free(data->engine); data->engine = NULL; if(data->state.engine) { ENGINE_finish(data->state.engine); ENGINE_free(data->state.engine); data->state.engine = NULL; } if (data->engine_list) curl_slist_free_all(data->engine_list); data->engine_list = NULL; if (data->state.engine_list) curl_slist_free_all(data->state.engine_list); data->state.engine_list = NULL; #endif return 0; Loading Loading @@ -1558,4 +1558,3 @@ Curl_SSLConnect(struct connectdata *conn, #endif return retcode; } lib/urldata.h +6 −4 Original line number Diff line number Diff line Loading @@ -777,6 +777,12 @@ struct UrlState { #ifdef USE_ARES ares_channel areschannel; /* for name resolves */ #endif #if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H) ENGINE *engine; #endif /* USE_SSLEAY */ struct curl_slist *engine_list; /* list of names from ENGINE_get_id() */ }; Loading Loading @@ -973,10 +979,6 @@ struct SessionHandle { struct UrlState state; /* struct for fields used for state info and other dynamic purposes */ struct PureInfo info; /* stats, reports and info data */ #if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H) ENGINE *engine; struct curl_slist *engine_list; /* list of names from ENGINE_get_id() */ #endif /* USE_SSLEAY */ }; #define LIBCURL_NAME "libcurl" Loading Loading
lib/getinfo.c +1 −1 Original line number Diff line number Diff line Loading @@ -183,7 +183,7 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...) break; case CURLINFO_SSL_ENGINES: Curl_SSL_engines_list(data); *param_slistp = data->engine_list; *param_slistp = data->state.engine_list; break; default: return CURLE_BAD_FUNCTION_ARGUMENT; Loading
lib/ssluse.c +23 −24 Original line number Diff line number Diff line Loading @@ -329,7 +329,7 @@ int cert_stuff(struct connectdata *conn, #ifdef HAVE_OPENSSL_ENGINE_H { /* XXXX still needs some work */ EVP_PKEY *priv_key = NULL; if(conn && conn->data && conn->data->engine) { if(conn && conn->data && conn->data->state.engine) { #ifdef HAVE_ENGINE_LOAD_FOUR_ARGS UI_METHOD *ui_method = UI_OpenSSL(); #endif Loading @@ -339,7 +339,7 @@ int cert_stuff(struct connectdata *conn, } /* the typecast below was added to please mingw32 */ priv_key = (EVP_PKEY *) ENGINE_load_private_key(conn->data->engine,key_file, ENGINE_load_private_key(conn->data->state.engine,key_file, #ifdef HAVE_ENGINE_LOAD_FOUR_ARGS ui_method, #endif Loading Loading @@ -495,17 +495,17 @@ CURLcode Curl_SSL_set_engine(struct SessionHandle *data, const char *engine) return (CURLE_SSL_ENGINE_NOTFOUND); } if (data->engine) { ENGINE_finish(data->engine); ENGINE_free(data->engine); if (data->state.engine) { ENGINE_finish(data->state.engine); ENGINE_free(data->state.engine); } data->engine = NULL; data->state.engine = NULL; if (!ENGINE_init(e)) { ENGINE_free(e); failf(data, "Failed to initialise SSL Engine '%s'", engine); return (CURLE_SSL_ENGINE_INITFAILED); } data->engine = e; data->state.engine = e; return (CURLE_OK); #else failf(data, "SSL Engine not supported"); Loading @@ -518,12 +518,12 @@ CURLcode Curl_SSL_set_engine(struct SessionHandle *data, const char *engine) CURLcode Curl_SSL_set_engine_default(struct SessionHandle *data) { #if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H) if (data->engine) { if (ENGINE_set_default(data->engine, ENGINE_METHOD_ALL) > 0) { infof(data,"set default crypto engine %s\n", data->engine); if (data->state.engine) { if (ENGINE_set_default(data->state.engine, ENGINE_METHOD_ALL) > 0) { infof(data,"set default crypto engine %s\n", data->state.engine); } else { failf(data, "set default crypto engine %s failed", data->engine); failf(data, "set default crypto engine %s failed", data->state.engine); return CURLE_SSL_ENGINE_SETFAILED; } } Loading @@ -534,7 +534,7 @@ CURLcode Curl_SSL_set_engine_default(struct SessionHandle *data) } /* Build the list of OpenSSL crypto engine names. Add to * linked list at data->engine_list. * linked list at data->state.engine_list. */ CURLcode Curl_SSL_engines_list(struct SessionHandle *data) { Loading @@ -542,12 +542,12 @@ CURLcode Curl_SSL_engines_list(struct SessionHandle *data) ENGINE *e; /* Free previous list */ if (data->engine_list) curl_slist_free_all(data->engine_list); if (data->state.engine_list) curl_slist_free_all(data->state.engine_list); data->engine_list = NULL; data->state.engine_list = NULL; for (e = ENGINE_get_first(); e; e = ENGINE_get_next(e)) data->engine_list = curl_slist_append(data->engine_list, ENGINE_get_id(e)); data->state.engine_list = curl_slist_append(data->state.engine_list, ENGINE_get_id(e)); #endif return (CURLE_OK); } Loading Loading @@ -691,14 +691,14 @@ int Curl_SSL_Close_All(struct SessionHandle *data) free(data->state.session); } #ifdef HAVE_OPENSSL_ENGINE_H if(data->engine) { ENGINE_finish(data->engine); ENGINE_free(data->engine); data->engine = NULL; if(data->state.engine) { ENGINE_finish(data->state.engine); ENGINE_free(data->state.engine); data->state.engine = NULL; } if (data->engine_list) curl_slist_free_all(data->engine_list); data->engine_list = NULL; if (data->state.engine_list) curl_slist_free_all(data->state.engine_list); data->state.engine_list = NULL; #endif return 0; Loading Loading @@ -1558,4 +1558,3 @@ Curl_SSLConnect(struct connectdata *conn, #endif return retcode; }
lib/urldata.h +6 −4 Original line number Diff line number Diff line Loading @@ -777,6 +777,12 @@ struct UrlState { #ifdef USE_ARES ares_channel areschannel; /* for name resolves */ #endif #if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H) ENGINE *engine; #endif /* USE_SSLEAY */ struct curl_slist *engine_list; /* list of names from ENGINE_get_id() */ }; Loading Loading @@ -973,10 +979,6 @@ struct SessionHandle { struct UrlState state; /* struct for fields used for state info and other dynamic purposes */ struct PureInfo info; /* stats, reports and info data */ #if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H) ENGINE *engine; struct curl_slist *engine_list; /* list of names from ENGINE_get_id() */ #endif /* USE_SSLEAY */ }; #define LIBCURL_NAME "libcurl" Loading