Loading src/main.c +45 −5 Original line number Diff line number Diff line Loading @@ -339,7 +339,7 @@ static void help(void) " --key <key> Private key file name (SSL)", " --key-type <type> Private key file type (DER/PEM/ENG) (SSL)", " --pass <pass> Pass phrase for the private key (SSL)", " --engine <eng> Crypto engine to use (SSL)", " --engine <eng> Crypto engine to use (SSL). \"--engine list\" for list", " --cacert <file> CA certificate to verify peer against (SSL)", " --capath <directory> CA directory (made using c_rehash) to verify", " peer against (SSL)", Loading Loading @@ -488,6 +488,7 @@ struct Configurable { char *key_type; char *key_passwd; char *engine; bool list_engines; bool crlf; char *customrequest; char *krb4level; Loading Loading @@ -740,6 +741,19 @@ static void FreeMultiInfo (struct multi_files *multi_start) } } /* Print list of OpenSSL engines supported. */ static void list_engines (const struct curl_slist *engines) { puts ("Build-time engines:"); if (!engines) { puts (" <none>"); return; } for ( ; engines; engines = engines->next) printf (" %s\n", engines->data); } /*************************************************************************** * * formparse() Loading Loading @@ -1721,6 +1735,8 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */ break; case 'f': /* crypto engine */ GetStr(&config->engine, nextarg); if (config->engine && curlx_strequal(config->engine,"list")) config->list_engines = TRUE; break; case 'g': /* CA info PEM file */ /* CA cert directory */ Loading Loading @@ -2946,7 +2962,7 @@ operate(struct Configurable *config, int argc, char *argv[]) } } if(!config->url_list || !config->url_list->url) { if((!config->url_list || !config->url_list->url) && !config->list_engines) { clean_getout(config); helpf("no URL specified!\n"); return CURLE_FAILED_INIT; Loading Loading @@ -3011,6 +3027,16 @@ operate(struct Configurable *config, int argc, char *argv[]) return CURLE_FAILED_INIT; } if (config->list_engines) { const struct curl_slist *engines = NULL; curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines); list_engines(engines); res = CURLE_OK; goto quit_curl; } /* After this point, we should call curl_easy_cleanup() if we decide to bail * out from this function! */ Loading Loading @@ -3345,9 +3371,6 @@ operate(struct Configurable *config, int argc, char *argv[]) if(1 == config->tcp_nodelay) curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 1); curl_easy_setopt(curl, CURLOPT_SSLENGINE, config->engine); curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1); /* where to store */ curl_easy_setopt(curl, CURLOPT_WRITEDATA, (FILE *)&outs); /* what call to write */ Loading Loading @@ -3525,6 +3548,17 @@ operate(struct Configurable *config, int argc, char *argv[]) } curl_easy_setopt(curl, CURLOPT_VERBOSE, config->conf&CONF_VERBOSE); res = CURLE_OK; /* new in curl ?? */ if (config->engine) { res = curl_easy_setopt(curl, CURLOPT_SSLENGINE, config->engine); curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1); } if (res != CURLE_OK) goto show_error; /* new in curl 7.10 */ curl_easy_setopt(curl, CURLOPT_ENCODING, (config->encoding) ? "" : NULL); Loading Loading @@ -3685,6 +3719,8 @@ operate(struct Configurable *config, int argc, char *argv[]) ourWriteEnv(curl); #endif show_error: #ifdef VMS if (!config->showerror) { vms_show = VMSSTS_HIDE; Loading Loading @@ -3791,6 +3827,10 @@ operate(struct Configurable *config, int argc, char *argv[]) } /* while-loop through all URLs */ quit_curl: if (config->engine) free(config->engine); if(config->headerfile && !headerfilep && heads.stream) fclose(heads.stream); Loading Loading
src/main.c +45 −5 Original line number Diff line number Diff line Loading @@ -339,7 +339,7 @@ static void help(void) " --key <key> Private key file name (SSL)", " --key-type <type> Private key file type (DER/PEM/ENG) (SSL)", " --pass <pass> Pass phrase for the private key (SSL)", " --engine <eng> Crypto engine to use (SSL)", " --engine <eng> Crypto engine to use (SSL). \"--engine list\" for list", " --cacert <file> CA certificate to verify peer against (SSL)", " --capath <directory> CA directory (made using c_rehash) to verify", " peer against (SSL)", Loading Loading @@ -488,6 +488,7 @@ struct Configurable { char *key_type; char *key_passwd; char *engine; bool list_engines; bool crlf; char *customrequest; char *krb4level; Loading Loading @@ -740,6 +741,19 @@ static void FreeMultiInfo (struct multi_files *multi_start) } } /* Print list of OpenSSL engines supported. */ static void list_engines (const struct curl_slist *engines) { puts ("Build-time engines:"); if (!engines) { puts (" <none>"); return; } for ( ; engines; engines = engines->next) printf (" %s\n", engines->data); } /*************************************************************************** * * formparse() Loading Loading @@ -1721,6 +1735,8 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */ break; case 'f': /* crypto engine */ GetStr(&config->engine, nextarg); if (config->engine && curlx_strequal(config->engine,"list")) config->list_engines = TRUE; break; case 'g': /* CA info PEM file */ /* CA cert directory */ Loading Loading @@ -2946,7 +2962,7 @@ operate(struct Configurable *config, int argc, char *argv[]) } } if(!config->url_list || !config->url_list->url) { if((!config->url_list || !config->url_list->url) && !config->list_engines) { clean_getout(config); helpf("no URL specified!\n"); return CURLE_FAILED_INIT; Loading Loading @@ -3011,6 +3027,16 @@ operate(struct Configurable *config, int argc, char *argv[]) return CURLE_FAILED_INIT; } if (config->list_engines) { const struct curl_slist *engines = NULL; curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines); list_engines(engines); res = CURLE_OK; goto quit_curl; } /* After this point, we should call curl_easy_cleanup() if we decide to bail * out from this function! */ Loading Loading @@ -3345,9 +3371,6 @@ operate(struct Configurable *config, int argc, char *argv[]) if(1 == config->tcp_nodelay) curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 1); curl_easy_setopt(curl, CURLOPT_SSLENGINE, config->engine); curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1); /* where to store */ curl_easy_setopt(curl, CURLOPT_WRITEDATA, (FILE *)&outs); /* what call to write */ Loading Loading @@ -3525,6 +3548,17 @@ operate(struct Configurable *config, int argc, char *argv[]) } curl_easy_setopt(curl, CURLOPT_VERBOSE, config->conf&CONF_VERBOSE); res = CURLE_OK; /* new in curl ?? */ if (config->engine) { res = curl_easy_setopt(curl, CURLOPT_SSLENGINE, config->engine); curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1); } if (res != CURLE_OK) goto show_error; /* new in curl 7.10 */ curl_easy_setopt(curl, CURLOPT_ENCODING, (config->encoding) ? "" : NULL); Loading Loading @@ -3685,6 +3719,8 @@ operate(struct Configurable *config, int argc, char *argv[]) ourWriteEnv(curl); #endif show_error: #ifdef VMS if (!config->showerror) { vms_show = VMSSTS_HIDE; Loading Loading @@ -3791,6 +3827,10 @@ operate(struct Configurable *config, int argc, char *argv[]) } /* while-loop through all URLs */ quit_curl: if (config->engine) free(config->engine); if(config->headerfile && !headerfilep && heads.stream) fclose(heads.stream); Loading