See attached.  Prints "completion" message only on successful return.

Also fixes bug which prevents executing -newreq-nodes option, and includes newer options in usage message.
Index: openssl-1.0.0d/apps/CA.pl
===================================================================
--- openssl-1.0.0d.orig/apps/CA.pl	2011-05-06 08:02:51.440932632 -0400
+++ openssl-1.0.0d/apps/CA.pl	2011-05-06 08:30:25.212930917 -0400
@@ -63,6 +63,7 @@
 $RET = 0;
 
 foreach (@ARGV) {
+        $result='';
 	if ( /^(-\?|-h|-help)$/ ) {
 	    print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
 	    exit 0;
@@ -70,17 +71,17 @@
 	    # create a certificate
 	    system ("$REQ -new -x509 -keyout newkey.pem -out newcert.pem $DAYS");
 	    $RET=$?;
-	    print "Certificate is in newcert.pem, private key is in newkey.pem\n"
-	} elsif (/^-newreq$/) {
-	    # create a certificate request
-	    system ("$REQ -new -keyout newkey.pem -out newreq.pem $DAYS");
-	    $RET=$?;
-	    print "Request is in newreq.pem, private key is in newkey.pem\n";
+	    $result="Certificate is in newcert.pem, private key is in newkey.pem";
 	} elsif (/^-newreq-nodes$/) {
 	    # create a certificate request
 	    system ("$REQ -new -nodes -keyout newkey.pem -out newreq.pem $DAYS");
 	    $RET=$?;
-	    print "Request is in newreq.pem, private key is in newkey.pem\n";
+	    $result="Request is in newreq.pem, private key is in newkey.pem";
+	} elsif (/^-newreq$/) {
+	    # create a certificate request
+	    system ("$REQ -new -keyout newkey.pem -out newreq.pem $DAYS");
+	    $RET=$?;
+	    $result="Request is in newreq.pem, private key is in newkey.pem";
 	} elsif (/^-newca$/) {
 		# if explicitly asked for or it doesn't exist then setup the
 		# directory structure that Eric likes to manage things 
@@ -128,7 +129,7 @@
 			"-certfile ${CATOP}/$CACERT -out newcert.p12 " .
 			"-export -name \"$cname\"");
 	    $RET=$?;
-	    print "PKCS #12 file is in newcert.p12\n";
+	    print "PKCS #12 file is in newcert.p12\n" if ($RET==0);
 	    exit $RET;
 	} elsif (/^-xsign$/) {
 	    system ("$CA -policy policy_anything -infiles newreq.pem");
@@ -137,19 +138,19 @@
 	    system ("$CA -policy policy_anything -out newcert.pem " .
 							"-infiles newreq.pem");
 	    $RET=$?;
-	    print "Signed certificate is in newcert.pem\n";
+	    $result="Signed certificate is in newcert.pem";
 	} elsif (/^(-signCA)$/) {
 	    system ("$CA -policy policy_anything -out newcert.pem " .
 					"-extensions v3_ca -infiles newreq.pem");
 	    $RET=$?;
-	    print "Signed CA certificate is in newcert.pem\n";
+	    $result="Signed CA certificate is in newcert.pem";
 	} elsif (/^-signcert$/) {
 	    system ("$X509 -x509toreq -in newreq.pem -signkey newreq.pem " .
 								"-out tmp.pem");
 	    system ("$CA -policy policy_anything -out newcert.pem " .
 							"-infiles tmp.pem");
 	    $RET = $?;
-	    print "Signed certificate is in newcert.pem\n";
+	    $result="Signed certificate is in newcert.pem";
 	} elsif (/^-verify$/) {
 	    if (shift) {
 		foreach $j (@ARGV) {
@@ -164,9 +165,10 @@
 	    }
 	} else {
 	    print STDERR "Unknown arg $_\n";
-	    print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
+	    print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-pkcs12|-sign|-signcert|-verify\n";
 	    exit 1;
 	}
+        print "$result\n" if ($RET==0);
 }
 
 exit $RET;

Reply via email to