From 46c4647e3c7e5bd0ba9267091bb18677ee387f52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodo=20M=C3=B6ller?= Date: Mon, 13 Mar 2000 20:31:46 +0000 Subject: [PATCH] "openssl no-..." commands for avoiding the need to grep "openssl list-standard-commands". --- CHANGES | 11 +++++++++++ apps/openssl.c | 12 ++++++++++++ test/Makefile.ssl | 6 +++--- test/testgen | 6 +++--- test/testss | 6 +++--- test/testssl | 4 +++- test/trsa | 6 ++---- 7 files changed, 37 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index c87a7d437c..b16e1d7d89 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,17 @@ Changes between 0.9.5 and 0.9.5a [XX XXX 2000] + *) For easily testing in shell scripts whether some command exists, + 'openssl no-XXX' returns with exit code 0 iff the command XXX is + available. 'no-XXX' is printed in this case, 'XXX' otherwise + (i.e. when a command of this name exists). In both cases, + the output goes to stdout and nothing is printed to stderr. + Additional arguments are always ignored. + + Since for each cipher there is a command of the same name, + the 'no-cipher' compilation switches can be tested this way. + [Bodo Moeller] + *) Update test suite so that 'make test' succeeds in 'no-rsa' configuration. [Bodo Moeller] diff --git a/apps/openssl.c b/apps/openssl.c index 2e1b606a52..9ddd536454 100644 --- a/apps/openssl.c +++ b/apps/openssl.c @@ -233,6 +233,18 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) { ret=fp->func(argc,argv); } + else if ((strncmp(argv[0],"no-",3)) == 0) + { + BIO *bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE); + f.name=argv[0]+3; + ret = (lh_retrieve(prog,&f) != NULL); + if (!ret) + BIO_printf(bio_stdout, "%s\n", argv[0]); + else + BIO_printf(bio_stdout, "%s\n", argv[0]+3); + BIO_free(bio_stdout); + goto end; + } else if ((strcmp(argv[0],"quit") == 0) || (strcmp(argv[0],"q") == 0) || (strcmp(argv[0],"exit") == 0) || diff --git a/test/Makefile.ssl b/test/Makefile.ssl index 8cd3be0eaa..5f36364017 100644 --- a/test/Makefile.ssl +++ b/test/Makefile.ssl @@ -215,11 +215,11 @@ test_ssl: keyU.ss certU.ss certCA.ss @sh ./testssl keyU.ss certU.ss certCA.ss test_ca: - @if ../apps/openssl list-standard-commands | grep '^rsa$$' >/dev/null; then \ + @if ../apps/openssl no-rsa; then \ + echo "skipping CA.sh test -- requires RSA"; \ + else \ echo "Generate and certify a test certificate via the 'ca' program"; \ sh ./testca; \ - else \ - echo "skipping CA.sh test -- requires RSA"; \ fi lint: diff --git a/test/testgen b/test/testgen index f2db42cb24..6a4b6b9221 100644 --- a/test/testgen +++ b/test/testgen @@ -13,12 +13,12 @@ echo "generating certificate request" echo "string to make the random number generator think it has entropy" >> ./.rnd -if ../apps/openssl list-standard-commands | grep '^rsa$' >/dev/null; then +if ../apps/openssl no-rsa; then + req_new='-newkey dsa:../apps/dsa512.pem' +else req_new='-new' echo "There should be a 2 sequences of .'s and some +'s." echo "There should not be more that at most 80 per line" -else - req_new='-newkey dsa:../apps/dsa512.pem' fi echo "This could take some time." diff --git a/test/testss b/test/testss index bcc4f5295e..2f600f04d8 100644 --- a/test/testss +++ b/test/testss @@ -20,10 +20,10 @@ Ucert="certU.ss" echo echo "make a certificate request using 'req'" -if ../apps/openssl list-standard-commands | grep '^rsa$' >/dev/null; then - req_new='-new' -else +if ../apps/openssl no-rsa; then req_new='-newkey dsa:../apps/dsa512.pem' +else + req_new='-new' fi $reqcmd -config $CAconf -out $CAreq -keyout $CAkey $req_new #>err.ss diff --git a/test/testssl b/test/testssl index 873df83128..2151a6438c 100644 --- a/test/testssl +++ b/test/testssl @@ -115,7 +115,9 @@ $ssltest -bio_pair -server_auth -client_auth $CA || exit 1 echo test tls1 with 1024bit anonymous DH, multiple handshakes $ssltest -v -bio_pair -tls1 -cipher ADH -dhe1024dsa -num 10 -f -time || exit 1 -if ../apps/openssl list-standard-commands | grep '^rsa$' >/dev/null; then +if ../apps/openssl no-rsa; then + echo skipping RSA tests +else echo test tls1 with 1024bit RSA, no DHE, multiple handshakes ./ssltest -v -bio_pair -tls1 -cert ../apps/server2.pem -no_dhe -num 10 -f -time || exit 1 diff --git a/test/trsa b/test/trsa index a7a624978f..bd6c07650a 100644 --- a/test/trsa +++ b/test/trsa @@ -3,10 +3,8 @@ PATH=../apps:$PATH export PATH -if ../apps/openssl list-standard-commands | grep '^rsa$' >/dev/null; then - echo openssl rsa command available -else - echo openssl rsa command not available, skipping test +if ../apps/openssl no-rsa; then + echo skipping rsa conversion test exit 0 fi -- GitLab