Provide command line options to s_client and s_server to select an
"engine" to use.
This commit is contained in:
parent
b6577e040e
commit
6111f7408b
@ -79,6 +79,7 @@ typedef unsigned int u_int;
|
|||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
#include <openssl/pem.h>
|
#include <openssl/pem.h>
|
||||||
|
#include <openssl/engine.h>
|
||||||
#include "s_apps.h"
|
#include "s_apps.h"
|
||||||
|
|
||||||
#ifdef WINDOWS
|
#ifdef WINDOWS
|
||||||
@ -152,6 +153,7 @@ static void sc_usage(void)
|
|||||||
BIO_printf(bio_err," -bugs - Switch on all SSL implementation bug workarounds\n");
|
BIO_printf(bio_err," -bugs - Switch on all SSL implementation bug workarounds\n");
|
||||||
BIO_printf(bio_err," -cipher - preferred cipher to use, use the 'openssl ciphers'\n");
|
BIO_printf(bio_err," -cipher - preferred cipher to use, use the 'openssl ciphers'\n");
|
||||||
BIO_printf(bio_err," command to see what is available\n");
|
BIO_printf(bio_err," command to see what is available\n");
|
||||||
|
BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,6 +181,8 @@ int MAIN(int argc, char **argv)
|
|||||||
int prexit = 0;
|
int prexit = 0;
|
||||||
SSL_METHOD *meth=NULL;
|
SSL_METHOD *meth=NULL;
|
||||||
BIO *sbio;
|
BIO *sbio;
|
||||||
|
char *engine_id=NULL;
|
||||||
|
ENGINE *e=NULL;
|
||||||
#ifdef WINDOWS
|
#ifdef WINDOWS
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
#endif
|
#endif
|
||||||
@ -316,6 +320,11 @@ int MAIN(int argc, char **argv)
|
|||||||
else if (strcmp(*argv,"-nbio") == 0)
|
else if (strcmp(*argv,"-nbio") == 0)
|
||||||
{ c_nbio=1; }
|
{ c_nbio=1; }
|
||||||
#endif
|
#endif
|
||||||
|
else if (strcmp(*argv,"-engine") == 0)
|
||||||
|
{
|
||||||
|
if (--argc < 1) goto bad;
|
||||||
|
engine_id = *(++argv);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BIO_printf(bio_err,"unknown option %s\n",*argv);
|
BIO_printf(bio_err,"unknown option %s\n",*argv);
|
||||||
@ -349,6 +358,25 @@ bad:
|
|||||||
|
|
||||||
OpenSSL_add_ssl_algorithms();
|
OpenSSL_add_ssl_algorithms();
|
||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
|
|
||||||
|
if (engine_id != NULL)
|
||||||
|
{
|
||||||
|
if((e = ENGINE_by_id(engine_id)) == NULL)
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err,"invalid engine\n");
|
||||||
|
ERR_print_errors(bio_err);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
if(!ENGINE_set_default(e, ENGINE_METHOD_ALL))
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err,"can't use that engine\n");
|
||||||
|
ERR_print_errors(bio_err);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
BIO_printf(bio_err,"engine \"%s\" set.\n", engine_id);
|
||||||
|
ENGINE_free(e);
|
||||||
|
}
|
||||||
|
|
||||||
ctx=SSL_CTX_new(meth);
|
ctx=SSL_CTX_new(meth);
|
||||||
if (ctx == NULL)
|
if (ctx == NULL)
|
||||||
{
|
{
|
||||||
|
@ -83,6 +83,7 @@ typedef unsigned int u_int;
|
|||||||
#include <openssl/pem.h>
|
#include <openssl/pem.h>
|
||||||
#include <openssl/x509.h>
|
#include <openssl/x509.h>
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
|
#include <openssl/engine.h>
|
||||||
#include "s_apps.h"
|
#include "s_apps.h"
|
||||||
|
|
||||||
#ifdef WINDOWS
|
#ifdef WINDOWS
|
||||||
@ -176,6 +177,7 @@ static int s_debug=0;
|
|||||||
static int s_quiet=0;
|
static int s_quiet=0;
|
||||||
|
|
||||||
static int hack=0;
|
static int hack=0;
|
||||||
|
static char *engine_id=NULL;
|
||||||
|
|
||||||
#ifdef MONOLITH
|
#ifdef MONOLITH
|
||||||
static void s_server_init(void)
|
static void s_server_init(void)
|
||||||
@ -198,6 +200,7 @@ static void s_server_init(void)
|
|||||||
s_debug=0;
|
s_debug=0;
|
||||||
s_quiet=0;
|
s_quiet=0;
|
||||||
hack=0;
|
hack=0;
|
||||||
|
engine_id=NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -242,6 +245,7 @@ static void sv_usage(void)
|
|||||||
BIO_printf(bio_err," -bugs - Turn on SSL bug compatibility\n");
|
BIO_printf(bio_err," -bugs - Turn on SSL bug compatibility\n");
|
||||||
BIO_printf(bio_err," -www - Respond to a 'GET /' with a status page\n");
|
BIO_printf(bio_err," -www - Respond to a 'GET /' with a status page\n");
|
||||||
BIO_printf(bio_err," -WWW - Respond to a 'GET /<path> HTTP/1.0' with file ./<path>\n");
|
BIO_printf(bio_err," -WWW - Respond to a 'GET /<path> HTTP/1.0' with file ./<path>\n");
|
||||||
|
BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int local_argc=0;
|
static int local_argc=0;
|
||||||
@ -411,6 +415,7 @@ int MAIN(int argc, char *argv[])
|
|||||||
int no_tmp_rsa=0,no_dhe=0,nocert=0;
|
int no_tmp_rsa=0,no_dhe=0,nocert=0;
|
||||||
int state=0;
|
int state=0;
|
||||||
SSL_METHOD *meth=NULL;
|
SSL_METHOD *meth=NULL;
|
||||||
|
ENGINE *e=NULL;
|
||||||
#ifndef NO_DH
|
#ifndef NO_DH
|
||||||
DH *dh=NULL;
|
DH *dh=NULL;
|
||||||
#endif
|
#endif
|
||||||
@ -565,6 +570,11 @@ int MAIN(int argc, char *argv[])
|
|||||||
else if (strcmp(*argv,"-tls1") == 0)
|
else if (strcmp(*argv,"-tls1") == 0)
|
||||||
{ meth=TLSv1_server_method(); }
|
{ meth=TLSv1_server_method(); }
|
||||||
#endif
|
#endif
|
||||||
|
else if (strcmp(*argv,"-engine") == 0)
|
||||||
|
{
|
||||||
|
if (--argc < 1) goto bad;
|
||||||
|
engine_id= *(++argv);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BIO_printf(bio_err,"unknown option %s\n",*argv);
|
BIO_printf(bio_err,"unknown option %s\n",*argv);
|
||||||
@ -609,6 +619,24 @@ bad:
|
|||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
OpenSSL_add_ssl_algorithms();
|
OpenSSL_add_ssl_algorithms();
|
||||||
|
|
||||||
|
if (engine_id != NULL)
|
||||||
|
{
|
||||||
|
if((e = ENGINE_by_id(engine_id)) == NULL)
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err,"invalid engine\n");
|
||||||
|
ERR_print_errors(bio_err);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
if(!ENGINE_set_default(e, ENGINE_METHOD_ALL))
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err,"can't use that engine\n");
|
||||||
|
ERR_print_errors(bio_err);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
BIO_printf(bio_err,"engine \"%s\" set.\n", engine_id);
|
||||||
|
ENGINE_free(e);
|
||||||
|
}
|
||||||
|
|
||||||
ctx=SSL_CTX_new(meth);
|
ctx=SSL_CTX_new(meth);
|
||||||
if (ctx == NULL)
|
if (ctx == NULL)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user