Commit 6111f740 authored by Geoff Thorpe's avatar Geoff Thorpe
Browse files

Provide command line options to s_client and s_server to select an

"engine" to use.
parent b6577e04
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ typedef unsigned int u_int;
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/pem.h>
#include <openssl/engine.h>
#include "s_apps.h"

#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," -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," -engine id    - Initialise and use the specified engine\n");

	}

@@ -179,6 +181,8 @@ int MAIN(int argc, char **argv)
	int prexit = 0;
	SSL_METHOD *meth=NULL;
	BIO *sbio;
	char *engine_id=NULL;
	ENGINE *e=NULL;
#ifdef WINDOWS
	struct timeval tv;
#endif
@@ -316,6 +320,11 @@ int MAIN(int argc, char **argv)
		else if (strcmp(*argv,"-nbio") == 0)
			{ c_nbio=1; }
#endif
		else if	(strcmp(*argv,"-engine") == 0)
			{
			if (--argc < 1) goto bad;
			engine_id = *(++argv);
			}
		else
			{
			BIO_printf(bio_err,"unknown option %s\n",*argv);
@@ -349,6 +358,25 @@ bad:

	OpenSSL_add_ssl_algorithms();
	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);
	if (ctx == NULL)
		{
+28 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ typedef unsigned int u_int;
#include <openssl/pem.h>
#include <openssl/x509.h>
#include <openssl/ssl.h>
#include <openssl/engine.h>
#include "s_apps.h"

#ifdef WINDOWS
@@ -176,6 +177,7 @@ static int s_debug=0;
static int s_quiet=0;

static int hack=0;
static char *engine_id=NULL;

#ifdef MONOLITH
static void s_server_init(void)
@@ -198,6 +200,7 @@ static void s_server_init(void)
	s_debug=0;
	s_quiet=0;
	hack=0;
	engine_id=NULL;
	}
#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," -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," -engine id    - Initialise and use the specified engine\n");
	}

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 state=0;
	SSL_METHOD *meth=NULL;
	ENGINE *e=NULL;
#ifndef NO_DH
	DH *dh=NULL;
#endif
@@ -565,6 +570,11 @@ int MAIN(int argc, char *argv[])
		else if	(strcmp(*argv,"-tls1") == 0)
			{ meth=TLSv1_server_method(); }
#endif
		else if (strcmp(*argv,"-engine") == 0)
			{
			if (--argc < 1) goto bad;
			engine_id= *(++argv);
			}
		else
			{
			BIO_printf(bio_err,"unknown option %s\n",*argv);
@@ -609,6 +619,24 @@ bad:
	SSL_load_error_strings();
	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);
	if (ctx == NULL)
		{