See attached file with patch for openssl dsa command: print -pubin/-pubout options. Also -engine flags is moved at same position as for rsa command.
Roumen
Index: apps/dsa.c =================================================================== RCS file: /work/repo/mirror/openssl/openssl/apps/dsa.c,v retrieving revision 1.39 diff -u -r1.39 dsa.c --- apps/dsa.c 6 Apr 2010 11:18:57 -0000 1.39 +++ apps/dsa.c 19 Feb 2011 20:45:27 -0000 @@ -90,6 +90,8 @@ * -seed - encrypt output if PEM format * -text - print a text version * -modulus - print the DSA public key + * -pubin - Expect a public key in input file. + * -pubout - Output a public key. */ int MAIN(int, char **); @@ -210,9 +212,6 @@ BIO_printf(bio_err," -passin arg input file pass phrase source\n"); BIO_printf(bio_err," -out arg output file\n"); BIO_printf(bio_err," -passout arg output file pass phrase source\n"); -#ifndef OPENSSL_NO_ENGINE - BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n"); -#endif BIO_printf(bio_err," -des encrypt PEM output with cbc des\n"); BIO_printf(bio_err," -des3 encrypt PEM output with ede cbc des using 168 bit key\n"); #ifndef OPENSSL_NO_IDEA @@ -232,6 +231,11 @@ BIO_printf(bio_err," -text print the key in text\n"); BIO_printf(bio_err," -noout don't print key out\n"); BIO_printf(bio_err," -modulus print the DSA public value\n"); + BIO_printf(bio_err," -pubin expect a public key in input file\n"); + BIO_printf(bio_err," -pubout output a public key\n"); +#ifndef OPENSSL_NO_ENGINE + BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n"); +#endif goto end; }