We've found some typos and omissions in the openssl utility documentation
(either builtin messages and pod pages). Following patch fixes some of
these problems. We haven't thoroughly reviewed all the manual pages in
the docs/app, concentrating on those commands which can use GOST
algorithmns via command-line options and commands which perform
certificate verification.


Description of patch

This patch fixes some omission in the documentation and messages
of the openssl utility.

Fixes in the code:

1. apps/dgst.c
   Use OBJ_NAME_do_all_sorted to list available digest options instead of
  hardcoded list of digests (as it is done for simmetric ciphers in the 
  enc command). This allows to pick up digests, provided by engines
  (such as md_gost94) and also ensures that digests, excluded during
  compilation (such as mdc2) wouldn't be listed.

  Added missing options -opt, -mac and -macopt to the usage message.

2. apps/pkeyparam.c
        Fixed typo in the error message

3. apps/pkeyutl.c
   Fixed incorrect option name (-signature instead of -sigfile) in the
   usage message.

4. apps/req.c
   Make search for digest last option (it was before -extensions and
   -reqext)

Fixes in the manual page

1. -engine option description of most commands incorrectly referred to
   req command, rather than command described.

2. Removed explicit and incomplete list of ciphers from smime and cms 
   commands and added reference to enc command for full list of ciphers

3. Added list of certificate verification options supported by
  args_verify function in the apps/app.c to the man pages of smime and
  cms commands (which use this function) with reference to verify man
  page, where these options briefly described (description taken from
  comments in crypto/x509/x509_vfy.h)

4. Documentend -keyform, -engine, -sigopt, -mac and -macopt options of
   the dgst command
5. Documented options -base64 -salt, -nosalt, -z -md, -none and -engine
   for enc command
6. Described working with engine-provided ciphers in the enc command
7. Added ciphers, provided by ccgost engine to the list of supported
   ciphers (marking them as engine-provided)

8. Added manual page for engine command (which was missing)

9. Added section about GOST algorithm parameters to the genpkey manpage

10. Make list of manual pages for individual commands in openssl(1) man
   page correspond to list of actual commands displayed by openssl running
    without arguments

11. Documented -engine and -passin for pkeyutl command

12. Removed hardcoded list of digests from req manual

13. Expanded and clarified description of req -newkey 
14. Documented briefly -keygen_engine, -no-asn1-kudge, -reqopt, -subject
   and -subj options for req command.

15. Documented -crl_check and -crl_check_all options for s_client
   command (they are already documetned for s_server)

? crypto/des/des_enc-sparc.S
? doc/apps/engine.pod
Index: Makefile.shared
===================================================================
RCS file: /cvs-openssl/openssl/Makefile.shared,v
retrieving revision 1.72
diff -u -r1.72 Makefile.shared
--- Makefile.shared	2 Jan 2009 09:02:27 -0000	1.72
+++ Makefile.shared	2 Apr 2009 10:25:30 -0000
@@ -70,7 +70,7 @@
 # The rest is private to this makefile.
 
 SET_X=:
-#SET_X=set -x
+SET_X=set -x
 
 top:
 	echo "Trying to use this makefile interactively?  Don't."
Index: apps/Makefile
===================================================================
RCS file: /cvs-openssl/openssl/apps/Makefile,v
retrieving revision 1.33
diff -u -r1.33 Makefile
--- apps/Makefile	2 Dec 2008 01:21:34 -0000	1.33
+++ apps/Makefile	2 Apr 2009 10:25:30 -0000
@@ -939,14 +939,13 @@
 speed.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 speed.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
 speed.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
-speed.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
-speed.o: ../include/openssl/safestack.h ../include/openssl/seed.h
-speed.o: ../include/openssl/sha.h ../include/openssl/stack.h
-speed.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
-speed.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
-speed.o: ../include/openssl/whrlpool.h ../include/openssl/x509.h
-speed.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
-speed.o: speed.c testdsa.h testrsa.h
+speed.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
+speed.o: ../include/openssl/seed.h ../include/openssl/sha.h
+speed.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
+speed.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
+speed.o: ../include/openssl/ui_compat.h ../include/openssl/whrlpool.h
+speed.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
+speed.o: ../include/openssl/x509v3.h apps.h speed.c testdsa.h testrsa.h
 spkac.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 spkac.o: ../include/openssl/buffer.h ../include/openssl/conf.h
 spkac.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
Index: apps/dgst.c
===================================================================
RCS file: /cvs-openssl/openssl/apps/dgst.c,v
retrieving revision 1.54
diff -u -r1.54 dgst.c
--- apps/dgst.c	31 Mar 2009 19:54:51 -0000	1.54
+++ apps/dgst.c	2 Apr 2009 10:25:30 -0000
@@ -67,13 +67,25 @@
 #include <openssl/x509.h>
 #include <openssl/pem.h>
 #include <openssl/hmac.h>
-
+#include <ctype.h>
 #undef BUFSIZE
 #define BUFSIZE	1024*8
 
 #undef PROG
 #define PROG	dgst_main
 
+static void show_digests(const OBJ_NAME *name,void *bio_)
+	{
+	BIO *bio = bio_;
+	/* Filter out digest aliases */
+	EVP_MD *md = EVP_get_digestbyname(name->name);
+	if (!islower((unsigned char )*name->name)) 
+		return;
+	if (strcasecmp(EVP_MD_name(md),name->name))
+		return;
+	BIO_printf(bio,"-%-14s to use the %s message digest algorithm\n",
+		name->name,name->name);
+	}		
 int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
 	  EVP_PKEY *key, unsigned char *sigin, int siglen,
 	  const char *sig_name, const char *md_name,
@@ -249,43 +261,18 @@
 		BIO_printf(bio_err,"-verify file    verify a signature using public key in file\n");
 		BIO_printf(bio_err,"-prverify file  verify a signature using private key in file\n");
 		BIO_printf(bio_err,"-keyform arg    key file format (PEM or ENGINE)\n");
+		BIO_printf(bio_err,"-out filename   output to filename rather then stdout\n");
 		BIO_printf(bio_err,"-signature file signature to verify\n");
 		BIO_printf(bio_err,"-sigopt nm:v    signature parameter\n");
 		BIO_printf(bio_err,"-hmac key       create hashed MAC with key\n");
+		BIO_printf(bio_err,"-mac algorithm  create MAC (not neccessary HMAC)\n"); 
+		BIO_printf(bio_err,"-macopt nm:v    MAC algorithm parameters/key\n");
 #ifndef OPENSSL_NO_ENGINE
 		BIO_printf(bio_err,"-engine e       use engine e, possibly a hardware device.\n");
 #endif
-
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm (default)\n",
-			LN_md5,LN_md5);
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_md4,LN_md4);
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_md2,LN_md2);
-#ifndef OPENSSL_NO_SHA
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_sha1,LN_sha1);
-#ifndef OPENSSL_NO_SHA256
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_sha224,LN_sha224);
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_sha256,LN_sha256);
-#endif
-#ifndef OPENSSL_NO_SHA512
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_sha384,LN_sha384);
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_sha512,LN_sha512);
-#endif
-#endif
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_mdc2,LN_mdc2);
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			LN_ripemd160,LN_ripemd160);
-#ifndef OPENSSL_NO_WHIRLPOOL
-		BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
-			SN_whirlpool,SN_whirlpool);
-#endif
+		OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH,
+			show_digests,
+			bio_err);
 		goto end;
 		}
 
Index: apps/pkeyparam.c
===================================================================
RCS file: /cvs-openssl/openssl/apps/pkeyparam.c,v
retrieving revision 1.4
diff -u -r1.4 pkeyparam.c
--- apps/pkeyparam.c	20 Dec 2008 17:04:37 -0000	1.4
+++ apps/pkeyparam.c	2 Apr 2009 10:25:30 -0000
@@ -179,7 +179,7 @@
 	pkey = PEM_read_bio_Parameters(in, NULL);
 	if (!pkey)
 		{
-		BIO_printf(bio_err, "Error reading paramters\n");
+		BIO_printf(bio_err, "Error reading parameters\n");
 		ERR_print_errors(bio_err);
 		goto end;
 		}
Index: apps/pkeyutl.c
===================================================================
RCS file: /cvs-openssl/openssl/apps/pkeyutl.c,v
retrieving revision 1.17
diff -u -r1.17 pkeyutl.c
--- apps/pkeyutl.c	5 Nov 2008 18:38:51 -0000	1.17
+++ apps/pkeyutl.c	2 Apr 2009 10:25:30 -0000
@@ -390,7 +390,7 @@
 	BIO_printf(bio_err, "Usage: pkeyutl [options]\n");
 	BIO_printf(bio_err, "-in file        input file\n");
 	BIO_printf(bio_err, "-out file       output file\n");
-	BIO_printf(bio_err, "-signature file signature file (verify operation only)\n");
+	BIO_printf(bio_err, "-sigfile file signature file (verify operation only)\n");
 	BIO_printf(bio_err, "-inkey file     input key\n");
 	BIO_printf(bio_err, "-keyform arg    private key format - default PEM\n");
 	BIO_printf(bio_err, "-pubin          input is a public key\n");
Index: apps/req.c
===================================================================
RCS file: /cvs-openssl/openssl/apps/req.c,v
retrieving revision 1.139
diff -u -r1.139 req.c
--- apps/req.c	7 Oct 2008 22:55:25 -0000	1.139
+++ apps/req.c	2 Apr 2009 10:25:30 -0000
@@ -365,11 +365,6 @@
 			serial = s2i_ASN1_INTEGER(NULL, *(++argv));
 			if (!serial) goto bad;
 			}
-		else if ((md_alg=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
-			{
-			/* ok */
-			digest=md_alg;
-			}
 		else if (strcmp(*argv,"-extensions") == 0)
 			{
 			if (--argc < 1) goto bad;
@@ -380,6 +375,11 @@
 			if (--argc < 1) goto bad;
 			req_exts = *(++argv);
 			}
+		else if ((md_alg=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
+			{
+			/* ok */
+			digest=md_alg;
+			}
 		else
 			{
 			BIO_printf(bio_err,"unknown option %s\n",*argv);
Index: crypto/evp/Makefile
===================================================================
RCS file: /cvs-openssl/openssl/crypto/evp/Makefile,v
retrieving revision 1.22
diff -u -r1.22 Makefile
--- crypto/evp/Makefile	2 Dec 2008 01:21:37 -0000	1.22
+++ crypto/evp/Makefile	2 Apr 2009 10:25:30 -0000
@@ -495,20 +495,13 @@
 m_null.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 m_null.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 m_null.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_null.c
-m_ripemd.o: ../../e_os.h ../../include/openssl/asn1.h
-m_ripemd.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
-m_ripemd.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
-m_ripemd.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
-m_ripemd.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
-m_ripemd.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
-m_ripemd.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-m_ripemd.o: ../../include/openssl/opensslconf.h
+m_ripemd.o: ../../e_os.h ../../include/openssl/bio.h
+m_ripemd.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
+m_ripemd.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
+m_ripemd.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
 m_ripemd.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
-m_ripemd.o: ../../include/openssl/pkcs7.h ../../include/openssl/ripemd.h
-m_ripemd.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-m_ripemd.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-m_ripemd.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-m_ripemd.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_ripemd.c
+m_ripemd.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
+m_ripemd.o: ../../include/openssl/symhacks.h ../cryptlib.h m_ripemd.c
 m_sha.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
 m_sha.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 m_sha.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
Index: doc/apps/ca.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/ca.pod,v
retrieving revision 1.27
diff -u -r1.27 ca.pod
--- doc/apps/ca.pod	7 Nov 2006 13:13:14 -0000	1.27
+++ doc/apps/ca.pod	2 Apr 2009 10:25:30 -0000
@@ -217,7 +217,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<ca>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/ciphers.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/ciphers.pod,v
retrieving revision 1.14
diff -u -r1.14 ciphers.pod
--- doc/apps/ciphers.pod	23 Apr 2007 23:48:50 -0000	1.14
+++ doc/apps/ciphers.pod	2 Apr 2009 10:25:30 -0000
@@ -251,6 +251,33 @@
 
 cipher suites using SHA1.
 
+=item B<aGOST> 
+
+cipher suites using GOST R 34.10 (either 2001 or 94) for
+authenticaction. (require some
+engine that provide GOST algorithms)
+
+=item B<aGOST01>
+
+cipher suites using GOST R 34.10-2001 authentication 
+=item B<aGOST94>
+
+cipher suites using GOST R 34.10-94 authentication (note that R 34.10-94
+standar has been expired. Use GOST R 34.10-2001)
+
+=item B<kGOST>
+
+cipher suites, using VKO 34.10 key exchange, specified in the RFC 4357.
+
+=item B<GOST94>
+
+cipher suites, using HMAC based on GOST R 34.11-94.
+
+=item B<GOST89MAC>
+
+cipher suites using GOST 28147-89 MAC B<instead of> HMAC.
+
+
 =back
 
 =head1 CIPHER SUITE NAMES
@@ -376,6 +403,17 @@
 
  TLS_DH_anon_WITH_SEED_CBC_SHA          ADH-SEED-SHA
 
+=head2 GOST ciphersuites from draft-chudov-cryptopro-cptls, extending TLS v1.0
+
+Note: these ciphers require some engine which provides GOST
+cryptoalgorithms, such as B<ccgost> engine, included in the OpenSSL
+distribution.
+
+ TLS_GOSTR341094_WITH_28147_CNT_IMIT GOST94-GOST89-GOST89
+ TLS_GOSTR341001_WITH_28147_CNT_IMIT GOST2001-GOST89-GOST89
+ TLS_GOSTR341094_WITH_NULL_GOSTR3411 GOST94-NULL-GOST94
+ TLS_GOSTR341001_WITH_NULL_GOSTR3411 GOST2001-NULL-GOST94
+
 =head2 Additional Export 1024 and other cipher suites
 
 Note: these ciphers can also be used in SSL v3.
Index: doc/apps/cms.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/cms.pod,v
retrieving revision 1.4
diff -u -r1.4 cms.pod
--- doc/apps/cms.pod	1 May 2008 23:35:36 -0000	1.4
+++ doc/apps/cms.pod	2 Apr 2009 10:25:30 -0000
@@ -36,17 +36,7 @@
 [B<-CAfile file>]
 [B<-CApath dir>]
 [B<-md digest>]
-[B<-des>]
-[B<-des3>]
-[B<-rc2-40>]
-[B<-rc2-64>]
-[B<-rc2-128>]
-[B<-aes128>]
-[B<-aes192>]
-[B<-aes256>]
-[B<-camellia128>]
-[B<-camellia192>]
-[B<-camellia256>]
+[B<-[cipher]>]
 [B<-nointern>]
 [B<-no_signer_cert_verify>]
 [B<-nocerts>]
@@ -253,13 +243,13 @@
 digest algorithm to use when signing or resigning. If not present then the
 default digest algorithm for the signing key will be used (usually SHA1).
 
-=item B<-des -des3 -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 -camellia128 -camellia192 -camellia256>
+=item B<-[cipher]>
 
-the encryption algorithm to use. DES (56 bits), triple DES (168 bits), 40, 64
-or 128 bit RC2, 128, 192 or 256 bit AES, or 128, 192 or 256 bit Camellia
-respectively. Any other cipher name (as recognized by the
+the encryption algorithm to use. For example DES  (56 bits) - B<-des>,
+triple DES (168 bits) - B<-des3>,
 EVP_get_cipherbyname() function) can also be used preceded by a dash, for 
-example B<-aes_128_cbc>.
+example B<-aes_128_cbc>. See L<B<enc>|enc(1)> for list of ciphers
+supported by your version of OpenSSL.
 
 If not specified triple DES is used. Only used with B<-encrypt> and 
 B<-EncryptedData_create> commands.
@@ -411,6 +401,11 @@
 then many S/MIME mail clients check the signers certificate's email
 address matches that specified in the From: address.
 
+=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy>
+
+Set various options of certificate chain verification. See
+L<B<verify>|verify(1)> manual page for details.
+
 =back
 
 =head1 NOTES
Index: doc/apps/dgst.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/dgst.pod,v
retrieving revision 1.6
diff -u -r1.6 dgst.pod
--- doc/apps/dgst.pod	19 May 2008 07:43:34 -0000	1.6
+++ doc/apps/dgst.pod	2 Apr 2009 10:25:30 -0000
@@ -14,6 +14,7 @@
 [B<-binary>]
 [B<-out filename>]
 [B<-sign filename>]
+[B<-keyform arg>]
 [B<-passin arg>]
 [B<-verify filename>]
 [B<-prverify filename>]
@@ -61,6 +62,23 @@
 
 digitally sign the digest using the private key in "filename".
 
+=item B<-keyform arg>
+
+Specifies key format for key to sign digest with. Only PEM and ENGINE
+formats are supported by B<dgst> command.
+
+=item B<-engine id>
+
+Use engine B<id> for operations (including private key storage).
+This engine is not used as source for digest algorithms, unless it is
+also specified in the configuration file.
+
+=item B<-sigopt nm:v>
+
+Pass options to the signature algorithm during sign or verify operations.
+Names and values of these options are algorithm-specific.
+
+
 =item B<-passin arg>
 
 the private key password source. For more information about the format of B<arg>
@@ -83,6 +101,35 @@
 
 create a hashed MAC using "key".
 
+=item B<-mac alg>
+
+create MAC (keyed Message Authentication Code). Most popular MAC
+algorithm is HMAC (hash-based MAC), but there are other MAC algorithms
+which are not based on hash, for instance B<gost-mac> algorithm,
+supported by B<ccgost> engine. MAC keys and other options should be set
+via B<-macopt> parameter.
+
+=item B<-macopt nm:v>
+
+Passes options to MAC algorithm, specified by B<-mac> key.
+Following options are supported by both by B<HMAC> and B<gost-mac>:
+
+=over 8
+
+=item B<key:string>
+	
+Specifies MAC key as alphnumeric string (use if key contain prinable
+characters only). String length must be equal to the length of used
+digest for HMAC and be exactly 32 chars for gost-mac
+
+=item B<hexkey:string>
+
+Specifies MAC key in hexadecimal form (two hex digits per byte).
+Key for HMAC should be same length as digest used for HMAC and be
+exactly 64 digits (32bytes) for gost-mac.
+
+=back
+
 =item B<-rand file(s)>
 
 a file or files containing random data used to seed the random number
Index: doc/apps/dhparam.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/dhparam.pod,v
retrieving revision 1.6
diff -u -r1.6 dhparam.pod
--- doc/apps/dhparam.pod	30 Jan 2003 22:02:27 -0000	1.6
+++ doc/apps/dhparam.pod	2 Apr 2009 10:25:30 -0000
@@ -99,7 +99,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<dhparam>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/dsa.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/dsa.pod,v
retrieving revision 1.6
diff -u -r1.6 dsa.pod
--- doc/apps/dsa.pod	30 Jan 2003 22:02:27 -0000	1.6
+++ doc/apps/dsa.pod	2 Apr 2009 10:25:30 -0000
@@ -109,7 +109,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<dsa>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/dsaparam.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/dsaparam.pod,v
retrieving revision 1.5
diff -u -r1.5 dsaparam.pod
--- doc/apps/dsaparam.pod	30 Jan 2003 22:02:27 -0000	1.5
+++ doc/apps/dsaparam.pod	2 Apr 2009 10:25:30 -0000
@@ -85,7 +85,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<dsaparam>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/ec.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/ec.pod,v
retrieving revision 1.1
diff -u -r1.1 ec.pod
--- doc/apps/ec.pod	21 Jul 2003 13:40:02 -0000	1.1
+++ doc/apps/ec.pod	2 Apr 2009 10:25:30 -0000
@@ -130,7 +130,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<ec>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/ecparam.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/ecparam.pod,v
retrieving revision 1.2
diff -u -r1.2 ecparam.pod
--- doc/apps/ecparam.pod	17 Dec 2004 05:42:00 -0000	1.2
+++ doc/apps/ecparam.pod	2 Apr 2009 10:25:30 -0000
@@ -121,7 +121,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<ecparam>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/enc.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/enc.pod,v
retrieving revision 1.9
diff -u -r1.9 enc.pod
--- doc/apps/enc.pod	17 Sep 2007 16:42:35 -0000	1.9
+++ doc/apps/enc.pod	2 Apr 2009 10:25:30 -0000
@@ -12,17 +12,24 @@
 [B<-pass arg>]
 [B<-e>]
 [B<-d>]
-[B<-a>]
+[B<-a/-base64>]
 [B<-A>]
 [B<-k password>]
 [B<-kfile filename>]
 [B<-K key>]
 [B<-iv IV>]
+[B<-S salt>]
+[B<-salt>]
+[B<-nosalt>]
+[B<-z>]
+[B<-md>]
 [B<-p>]
 [B<-P>]
 [B<-bufsize number>]
 [B<-nopad>]
 [B<-debug>]
+[B<-none>]
+[B<-engine id>]
 
 =head1 DESCRIPTION
 
@@ -74,6 +81,10 @@
 the data is base64 encoded after encryption. If decryption is set then
 the input data is base64 decoded before being decrypted.
 
+=item B<-base64>
+
+sinonym of B<-a>
+
 =item B<-A>
 
 if the B<-a> option is set then base64 process the data on one line.
@@ -89,6 +100,15 @@
 This is for compatibility with previous versions of OpenSSL. Superseded by
 the B<-pass> argument.
 
+=item B<-nosalt>
+
+do not use  salt 
+
+=item B<-salt>
+
+use salt (randomly generated or provide with B<-S> option) when
+encrypting.
+
 =item B<-S salt>
 
 the actual salt to use: this must be represented as a string comprised only
@@ -131,12 +151,36 @@
 
 debug the BIOs used for I/O.
 
+=item B<-z>
+
+Compress/decompress clear text using zlib before encryption/after
+decryption. This option exists only if OpenSSL with compiled with zlib
+or zlib-dynamic option.
+
+=item B<-none>
+
+This is actually a cipher command. It specifies NULL cipher (no
+transformation of input).
+
 =back
 
 =head1 NOTES
 
 The program can be called either as B<openssl ciphername> or
-B<openssl enc -ciphername>.
+B<openssl enc -ciphername>. But first syntax doesn't work with
+engine-provided ciphers, because configuration file is read only and
+engine-provided ciphers are initialized only when command is actually
+invoked.
+
+Engines which provide entirely new encryption algorithms (such as ccgost
+engine which provides gost89 algorithm) should be configured in the
+configuration file. Engines, specified in the command line using -engine
+options can only be used for hadrware-assisted implementations of
+ciphers, which are supported by OpenSSL core or other engine, specified
+in the configuration file.
+
+When enc command lists supported ciphers, ciphers provided by engines,
+specified in the configuration files, would be listed too.
 
 A password will be prompted for to derive the key and IV if necessary.
 
@@ -169,6 +213,14 @@
 
 =head1 SUPPORTED CIPHERS
 
+Note that some of these ciphers can be disabled during compile time
+configurations, and some are available only if some engine is configured
+in the configuration file. Output of B<enc> command run with unsupported
+options (for example B<openssl enc -help>) would give actual list of
+ciphers, supported by your OpenSSL, including ones, provided by
+configured engines.
+
+
  base64             Base 64
 
  bf-cbc             Blowfish in CBC mode
@@ -203,6 +255,9 @@
 
  desx               DESX algorithm.
 
+ gost89             GOST 28147-89 in CFB mode (provided by ccgost engine)
+ gost89-cnt        `GOST 28147-89 in CNT mode (provided by ccgost engine) 
+
  idea-cbc           IDEA algorithm in CBC mode
  idea               same as idea-cbc
  idea-cfb           IDEA in CFB mode
Index: doc/apps/gendsa.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/gendsa.pod,v
retrieving revision 1.5
diff -u -r1.5 gendsa.pod
--- doc/apps/gendsa.pod	30 Jan 2003 22:02:27 -0000	1.5
+++ doc/apps/gendsa.pod	2 Apr 2009 10:25:30 -0000
@@ -40,7 +40,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<gendsa>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/genpkey.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/genpkey.pod,v
retrieving revision 1.4
diff -u -r1.4 genpkey.pod
--- doc/apps/genpkey.pod	12 Jul 2006 13:28:44 -0000	1.4
+++ doc/apps/genpkey.pod	2 Apr 2009 10:25:30 -0000
@@ -47,7 +47,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<genpkey>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms. If used this option should precede all other
@@ -138,6 +138,37 @@
 
 =back
 
+=head1 GOST2001 KEY GENERATION AND PARAMETER OPTIONS
+
+Gost 2001 support is not enabled by default. To enable this algorithm,
+one should initialize ccgost engine in the OpenSSL configuration file.
+See README.gost file in the engines/ccgost directiry of the source
+distribution.
+
+Usage of parameter file for GOST R 34.10 algorithm is optional.
+Parameters can be specified during key generation directly as well as
+during generation of parameter file.
+
+=over 4
+
+=item B<paramset:name>
+
+Specifies GOST R 34.10-2001 parameter set according to RFC 4357.
+Parameter set can be specified using abbreviated name, object short name or
+numeric OID. Following parameter sets are supported:
+
+  paramset   OID               Usage
+  A          1.2.643.2.2.35.1  Signature
+  B          1.2.643.2.2.35.2  Signature
+  C          1.2.643.2.2.35.3  Signature
+  XA         1.2.643.2.2.36.0  Key exchange
+  XB         1.2.643.2.2.36.1  Key exchange
+  test       1.2.643.2.2.35.0  Test purposes
+
+=back
+
+
+
 =head1 NOTES
 
 The use of the genpkey program is encouraged over the algorithm specific
Index: doc/apps/genrsa.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/genrsa.pod,v
retrieving revision 1.8
diff -u -r1.8 genrsa.pod
--- doc/apps/genrsa.pod	30 Jan 2003 22:02:27 -0000	1.8
+++ doc/apps/genrsa.pod	2 Apr 2009 10:25:30 -0000
@@ -57,7 +57,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<genrsa>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/openssl.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/openssl.pod,v
retrieving revision 1.22
diff -u -r1.22 openssl.pod
--- doc/apps/openssl.pod	17 Sep 2007 15:56:55 -0000	1.22
+++ doc/apps/openssl.pod	2 Apr 2009 10:25:30 -0000
@@ -81,6 +81,10 @@
 
 Cipher Suite Description Determination.
 
+=item L<B<cms>|cms(1)>
+
+CMS (Cryptographic Message Syntax) utility
+
 =item L<B<crl>|crl(1)>
 
 Certificate Revocation List (CRL) Management.
@@ -98,6 +102,12 @@
 Diffie-Hellman Parameter Management.
 Obsoleted by L<B<dhparam>|dhparam(1)>.
 
+=item L<B<dhparam>|dhparam(1)>
+
+Generation and Management of Diffie-Hellman Parameters. Superseded by 
+L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>
+
+
 =item L<B<dsa>|dsa(1)>
 
 DSA Data Management.
@@ -107,18 +117,25 @@
 DSA Parameter Generation and Management. Superseded by 
 L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>
 
+=item L<B<ec>|ec(1)>
+
+EC (Elliptic curve) key processing
+
+=item L<B<ecparam>|ecparam(1)>
+
+EC parameter manipulation and generation
+
 =item L<B<enc>|enc(1)>
 
 Encoding with Ciphers.
 
-=item L<B<errstr>|errstr(1)>
+=item L<B<engine>|engine(1)>
 
-Error Number to Error String Conversion.
+Engine (loadble module) information and manipulation.
 
-=item L<B<dhparam>|dhparam(1)>
+=item L<B<errstr>|errstr(1)>
 
-Generation and Management of Diffie-Hellman Parameters. Superseded by 
-L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>
+Error Number to Error String Conversion.
 
 =item B<gendh>
 
@@ -138,6 +155,10 @@
 
 Generation of RSA Private Key. Superceded by L<B<genpkey>|genpkey(1)>.
 
+=item L<B<nseq>|nseq(1)
+
+Create or examine a netscape certificate sequence
+
 =item L<B<ocsp>|ocsp(1)>
 
 Online Certificate Status Protocol utility.
@@ -158,14 +179,14 @@
 
 Public and private key management.
 
-=item L<B<pkeyutl>|pkeyutl(1)>
-
-Public key algorithm cryptographic operation utility.
-
 =item L<B<pkeyparam>|pkeyparam(1)>
 
 Public key algorithm parameter management.
 
+=item L<B<pkeyutl>|pkeyutl(1)>
+
+Public key algorithm cryptographic operation utility.
+
 =item L<B<rand>|rand(1)>
 
 Generate pseudo-random bytes.
@@ -178,6 +199,7 @@
 
 RSA key management.
 
+
 =item L<B<rsautl>|rsautl(1)>
 
 RSA utility for signing, verification, encryption, and decryption. Superseded
@@ -215,6 +237,10 @@
 
 Algorithm Speed Measurement.
 
+=item L<B<spkac>|spkac(1)>
+
+SPKAC printing and generating utility
+
 =item L<B<ts>|ts(1)>
 
 Time Stamping Authority tool (client/server)
Index: doc/apps/pkcs7.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/pkcs7.pod,v
retrieving revision 1.5
diff -u -r1.5 pkcs7.pod
--- doc/apps/pkcs7.pod	30 Jan 2003 22:02:27 -0000	1.5
+++ doc/apps/pkcs7.pod	2 Apr 2009 10:25:30 -0000
@@ -62,7 +62,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<pkcs7>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/pkcs8.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/pkcs8.pod,v
retrieving revision 1.6
diff -u -r1.6 pkcs8.pod
--- doc/apps/pkcs8.pod	30 Jan 2003 22:02:27 -0000	1.6
+++ doc/apps/pkcs8.pod	2 Apr 2009 10:25:30 -0000
@@ -125,7 +125,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<pkcs8>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/pkey.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/pkey.pod,v
retrieving revision 1.1
diff -u -r1.1 pkey.pod
--- doc/apps/pkey.pod	8 Jul 2006 00:24:47 -0000	1.1
+++ doc/apps/pkey.pod	2 Apr 2009 10:25:30 -0000
@@ -94,7 +94,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<pkey>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/pkeyparam.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/pkeyparam.pod,v
retrieving revision 1.1
diff -u -r1.1 pkeyparam.pod
--- doc/apps/pkeyparam.pod	10 Jul 2006 23:10:26 -0000	1.1
+++ doc/apps/pkeyparam.pod	2 Apr 2009 10:25:30 -0000
@@ -43,7 +43,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<pkeyparam>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/pkeyutl.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/pkeyutl.pod,v
retrieving revision 1.4
diff -u -r1.4 pkeyutl.pod
--- doc/apps/pkeyutl.pod	9 Jul 2006 16:05:43 -0000	1.4
+++ doc/apps/pkeyutl.pod	2 Apr 2009 10:25:30 -0000
@@ -12,6 +12,7 @@
 [B<-sigfile file>]
 [B<-inkey file>]
 [B<-keyform PEM|DER>]
+[B<-passin arg>]
 [B<-peerkey file>]
 [B<-peerform PEM|DER>]
 [B<-pubin>]
@@ -26,6 +27,7 @@
 [B<-pkeyopt opt:value>]
 [B<-hexdump>]
 [B<-asn1parse>]
+[B<-engine id>]
 
 =head1 DESCRIPTION
 
@@ -52,7 +54,13 @@
 
 =item B<-keyform PEM|DER>
 
-the key format PEM or DER.
+the key format PEM, DER or ENGINE.
+
+=item B<-passin arg>
+
+the input key password source. For more information about the format of B<arg>
+see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)|openssl(1)>.
+
 
 =item B<-peerkey file>
 
@@ -60,7 +68,15 @@
 
 =item B<-peerform PEM|DER>
 
-the peer key format PEM or DER.
+the peer key format PEM, DER or ENGINE.
+
+=item B<-engine id>
+
+specifying an engine (by it's unique B<id> string) will cause B<pkeyutl>
+to attempt to obtain a functional reference to the specified engine,
+thus initialising it if needed. The engine will then be set as the default
+for all available algorithms.
+
 
 =item B<-pubin>
 
Index: doc/apps/req.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/req.pod,v
retrieving revision 1.20
diff -u -r1.20 req.pod
--- doc/apps/req.pod	7 Nov 2006 12:51:27 -0000	1.20
+++ doc/apps/req.pod	2 Apr 2009 10:25:30 -0000
@@ -22,13 +22,13 @@
 [B<-new>]
 [B<-rand file(s)>]
 [B<-newkey rsa:bits>]
-[B<-newkey dsa:file>]
 [B<-newkey alg:file>]
 [B<-nodes>]
 [B<-key filename>]
 [B<-keyform PEM|DER>]
 [B<-keyout filename>]
-[B<-[md5|sha1|md2|mdc2]>]
+[B<-keygen_engine id>]
+[B<-[digest]>]
 [B<-config filename>]
 [B<-subj arg>]
 [B<-multivalue-rdn>]
@@ -36,11 +36,15 @@
 [B<-days n>]
 [B<-set_serial n>]
 [B<-asn1-kludge>]
+[B<-no-asn1-kludge>]
 [B<-newhdr>]
 [B<-extensions section>]
 [B<-reqexts section>]
 [B<-utf8>]
 [B<-nameopt>]
+[B<-reqopt>]
+[B<-subject>]
+[B<-subj arg>]
 [B<-batch>]
 [B<-verbose>]
 [B<-engine id>]
@@ -92,6 +96,11 @@
 
 prints out the certificate request in text form.
 
+=item B<-subject>
+
+prints out the request subject (or certificate subject if B<-x509> is
+specified)
+
 =item B<-pubkey>
 
 outputs the public key.
@@ -119,6 +128,13 @@
 If the B<-key> option is not used it will generate a new RSA private
 key using information specified in the configuration file.
 
+=item B<-subj arg>
+
+Replaces subject field of input request with specified data and outputs
+modified request. The arg must be formatted as
+I</type0=value0/type1=value1/type2=...>,
+characters may be escaped by \ (backslash), no spaces are skipped.
+
 =item B<-rand file(s)>
 
 a file or files containing random data used to seed the random number
@@ -132,12 +148,27 @@
 this option creates a new certificate request and a new private
 key. The argument takes one of several forms. B<rsa:nbits>, where
 B<nbits> is the number of bits, generates an RSA key B<nbits>
-in size. B<dsa:filename> generates a DSA key using the parameters
-in the file B<filename>. B<param:file> generates a key using the
-parameter file B<file>, the algorithm is determined by the
+in size. If B<nbits> is omitted, i.e. B<-newkey rsa> specified,
+default key size, specified in the configuration file would be used.
+
+All other algorithms support form B<-newkey alg:file>, where file may be
+algorithm parameter file, created by B<genpkey -genparam> command or
+X.509 certificate for key with approriate algorithm.
+
+B<param:file> generates a key using the
+parameter file or certificate B<file>, the algorithm is determined by the
 parameters. B<algname:file> use algorithm B<algname> and parameter file
 B<file> the two algorithms must match or an error occurs. B<algname> just
-uses algorithm B<algname>.
+uses algorithm B<algname>, and parameters, if neccessary should be
+specified via B<-pkeyopt> parameter.
+
+B<dsa:filename> generates a DSA key using the parameters
+in the file B<filename>. B<ec:filename> generates EC key (usable both with
+ECDSA or ECDH algorithms), B<gost2001:filename> generates GOST R
+34.10-2001 key (requires B<ccgost> engine configured in the configuration
+file). If just B<gost2001> is specified, parameter set should be
+specified by B<-pkeyopt paramset:X>
+
 
 =item B<-pkeyopt opt:value>
 
@@ -167,11 +198,15 @@
 if this option is specified then if a private key is created it
 will not be encrypted.
 
-=item B<-[md5|sha1|md2|mdc2]>
+=item B<-[digest]>
 
-this specifies the message digest to sign the request with. This
+this specifies the message digest to sign the request with (such as
+B<-md5>, B<-sha1>). This
 overrides the digest algorithm specified in the configuration file.
-This option is ignored for DSA requests: they always use SHA1.
+
+Some public key algorithms may override this choice. For instance, DSA
+signatures always use SHA1, GOST R 34.10 signatures always use
+GOST R 34.11-94 (B<-md_gost94>).
 
 =item B<-config filename>
 
@@ -239,6 +274,15 @@
 commas.  Alternatively the B<-nameopt> switch may be used more than once to
 set multiple options. See the L<x509(1)|x509(1)> manual page for details.
 
+=item B<-reqopt>
+
+customise the output format used with B<-text>. The B<option> argument can be
+a single option or multiple options separated by commas. 
+
+See discission of the  B<-certopt> parameter in the L<B<x509>|x509(1)>
+command.
+
+
 =item B<-asn1-kludge>
 
 by default the B<req> command outputs certificate requests containing
@@ -254,6 +298,10 @@
 
 It should be noted that very few CAs still require the use of this option.
 
+=item B<-no-asn1-kludge>
+
+Reverses effect of B<-asn1-kludge>
+
 =item B<-newhdr>
 
 Adds the word B<NEW> to the PEM file header and footer lines on the outputed
@@ -274,6 +322,11 @@
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
 
+=item B<-keygen_engine id>
+
+specifies an engine (by it's unique B<id> string) which would be used
+for key generation operations.
+
 =back
 
 =head1 CONFIGURATION FILE FORMAT
Index: doc/apps/rsa.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/rsa.pod,v
retrieving revision 1.9
diff -u -r1.9 rsa.pod
--- doc/apps/rsa.pod	30 Jan 2003 22:02:27 -0000	1.9
+++ doc/apps/rsa.pod	2 Apr 2009 10:25:30 -0000
@@ -120,7 +120,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<rsa>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/s_client.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/s_client.pod,v
retrieving revision 1.16
diff -u -r1.16 s_client.pod
--- doc/apps/s_client.pod	23 Aug 2007 11:34:48 -0000	1.16
+++ doc/apps/s_client.pod	2 Apr 2009 10:25:30 -0000
@@ -17,6 +17,8 @@
 [B<-pass arg>]
 [B<-CApath directory>]
 [B<-CAfile filename>]
+[B<-crl_check>]
+[B<-crl_check_all>]
 [B<-reconnect>]
 [B<-pause>]
 [B<-showcerts>]
@@ -101,6 +103,19 @@
 A file containing trusted certificates to use during server authentication
 and to use when attempting to build the client certificate chain.
 
+=item B<-crl_check>
+
+Enable lookup of server certificate in CRL. If this option used, than
+certificate storage specified by B<-CApath> or B<-CAfile> options should
+contain valid and actual CRLs for all CAs. Otherwise certificate, issued
+by CA which CRL is not present, would be considered invalid.
+
+=item B<-crl_check_all>
+
+Enable lookup of all certificates (server and all intermediate CAs if
+any) in the CRLs of their respective issuers.
+
+
 =item B<-reconnect>
 
 reconnects to the same server 5 times using the same session ID, this can
Index: doc/apps/smime.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/smime.pod,v
retrieving revision 1.15
diff -u -r1.15 smime.pod
--- doc/apps/smime.pod	11 May 2007 12:08:38 -0000	1.15
+++ doc/apps/smime.pod	2 Apr 2009 10:25:30 -0000
@@ -13,17 +13,7 @@
 [B<-resign>]
 [B<-verify>]
 [B<-pk7out>]
-[B<-des>]
-[B<-des3>]
-[B<-rc2-40>]
-[B<-rc2-64>]
-[B<-rc2-128>]
-[B<-aes128>]
-[B<-aes192>]
-[B<-aes256>]
-[B<-camellia128>]
-[B<-camellia192>]
-[B<-camellia256>]
+[B<-[cipher]>]
 [B<-in file>]
 [B<-certfile file>]
 [B<-signer file>]
@@ -161,13 +151,13 @@
 digest algorithm to use when signing or resigning. If not present then the
 default digest algorithm for the signing key will be used (usually SHA1).
 
-=item B<-des -des3 -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 -camellia128 -camellia192 -camellia256>
+=item B<-[cipher]>
 
-the encryption algorithm to use. DES (56 bits), triple DES (168 bits), 40, 64
-or 128 bit RC2, 128, 192 or 256 bit AES, or 128, 192 or 256 bit Camellia
-respectively. Any other cipher name (as recognized by the
+the encryption algorithm to use. For example DES  (56 bits) - B<-des>,
+triple DES (168 bits) - B<-des3>,
 EVP_get_cipherbyname() function) can also be used preceded by a dash, for 
-example B<-aes_128_cbc>.
+example B<-aes_128_cbc>. See L<B<enc>|enc(1)> for list of ciphers
+supported by your version of OpenSSL.
 
 If not specified 40 bit RC2 is used. Only used with B<-encrypt>.
 
@@ -269,6 +259,11 @@
 then many S/MIME mail clients check the signers certificate's email
 address matches that specified in the From: address.
 
+=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy>
+
+Set various options of certificate chain verification. See
+L<B<verify>|verify(1)> manual page for details.
+
 =back
 
 =head1 NOTES
Index: doc/apps/spkac.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/spkac.pod,v
retrieving revision 1.6
diff -u -r1.6 spkac.pod
--- doc/apps/spkac.pod	30 Jan 2003 22:02:27 -0000	1.6
+++ doc/apps/spkac.pod	2 Apr 2009 10:25:30 -0000
@@ -81,7 +81,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<spkac>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: doc/apps/verify.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/verify.pod,v
retrieving revision 1.7
diff -u -r1.7 verify.pod
--- doc/apps/verify.pod	13 Jul 2008 14:25:36 -0000	1.7
+++ doc/apps/verify.pod	2 Apr 2009 10:25:30 -0000
@@ -10,6 +10,18 @@
 [B<-CApath directory>]
 [B<-CAfile file>]
 [B<-purpose purpose>]
+[B<-policy arg>]
+[B<-ignore_critical>]
+[B<-crl_check>]
+[B<-crl_check_all>]
+[B<-policy_check>]
+[B<-explicit_policy>]
+[B<-inhibit_any>]
+[B<-inhibit_map>]
+[B<-x509_strict>]
+[B<-extended_crl>]
+[B<-use_deltas>]
+[B<-policy_print>]
 [B<-untrusted file>]
 [B<-help>]
 [B<-issuer_checks>]
@@ -66,6 +78,58 @@
 does not itself imply that anything is wrong: during the normal
 verify process several rejections may take place.
 
+=item B<-policy arg>
+
+Sets certitifcate verification policy. Policy should be specified as
+object name or numeric OID, known by OpenSSL
+
+=item B<-crl_check>
+
+Forces lookup of the leaf certificate in the certificate revocation list
+(CRL). If this option is set, than CRLs for all CA in the certificate
+chain must present in the certificate storage, specified by B<-CApath>
+or B<-CAfile> option. Certificate, signed by CA which doesn't have valid
+CRL would be considered invalid.
+
+=item B<-crl_check_all>
+
+Forces lookup of all intermediate CA certificates in the CRLs of their
+respective issuers.
+
+=item B<-ignore_critical>
+
+Ignore certificate extensions, which are marked critical in the
+certificate, but are not known to OpenSSL.
+
+=item B<-x509_strict>
+
+Disable workarounds for broken certificates
+
+=item B<-explicit_policy>
+
+Set policy variable require-explicit-policy
+
+=item B<-inhibit_any>
+
+Set policy variable inhibit-any-policy
+
+=item B<-inhibit_map>
+
+Set policy variable inhibit-policy-mapping
+
+=item B<-policy_print>
+
+Print out diagnostics, related to policy checking
+
+=item B<-extended_crl>
+
+Enable  extended  CRL features such as indirect CRLs, alternate CRL
+signing keys
+
+=item B<-use_deltas>
+
+Enable support for delta CRLs.
+
 =item B<->
 
 marks the last option. All arguments following this are assumed to be
Index: doc/apps/x509.pod
===================================================================
RCS file: /cvs-openssl/openssl/doc/apps/x509.pod,v
retrieving revision 1.30
diff -u -r1.30 x509.pod
--- doc/apps/x509.pod	12 Mar 2009 17:13:15 -0000	1.30
+++ doc/apps/x509.pod	2 Apr 2009 10:25:30 -0000
@@ -103,7 +103,7 @@
 
 =item B<-engine id>
 
-specifying an engine (by it's unique B<id> string) will cause B<req>
+specifying an engine (by it's unique B<id> string) will cause B<x509>
 to attempt to obtain a functional reference to the specified engine,
 thus initialising it if needed. The engine will then be set as the default
 for all available algorithms.
Index: engines/ccgost/e_gost_err.c
===================================================================
RCS file: /cvs-openssl/openssl/engines/ccgost/e_gost_err.c,v
retrieving revision 1.8
diff -u -r1.8 e_gost_err.c
--- engines/ccgost/e_gost_err.c	17 Mar 2009 15:38:34 -0000	1.8
+++ engines/ccgost/e_gost_err.c	2 Apr 2009 10:25:30 -0000
@@ -86,6 +86,7 @@
 {ERR_FUNC(GOST_F_GOST_DO_SIGN),	"GOST_DO_SIGN"},
 {ERR_FUNC(GOST_F_GOST_DO_VERIFY),	"GOST_DO_VERIFY"},
 {ERR_FUNC(GOST_F_GOST_IMIT_CTRL),	"GOST_IMIT_CTRL"},
+{ERR_FUNC(GOST_F_GOST_IMIT_FINAL),	"GOST_IMIT_FINAL"},
 {ERR_FUNC(GOST_F_GOST_IMIT_UPDATE),	"GOST_IMIT_UPDATE"},
 {ERR_FUNC(GOST_F_PARAM_COPY_GOST01),	"PARAM_COPY_GOST01"},
 {ERR_FUNC(GOST_F_PARAM_COPY_GOST94),	"PARAM_COPY_GOST94"},
Index: engines/ccgost/e_gost_err.h
===================================================================
RCS file: /cvs-openssl/openssl/engines/ccgost/e_gost_err.h,v
retrieving revision 1.9
diff -u -r1.9 e_gost_err.h
--- engines/ccgost/e_gost_err.h	17 Mar 2009 15:38:34 -0000	1.9
+++ engines/ccgost/e_gost_err.h	2 Apr 2009 10:25:30 -0000
@@ -87,6 +87,7 @@
 #define GOST_F_GOST_DO_SIGN				 112
 #define GOST_F_GOST_DO_VERIFY				 113
 #define GOST_F_GOST_IMIT_CTRL				 114
+#define GOST_F_GOST_IMIT_FINAL				 140
 #define GOST_F_GOST_IMIT_UPDATE				 115
 #define GOST_F_PARAM_COPY_GOST01			 116
 #define GOST_F_PARAM_COPY_GOST94			 117
Index: engines/ccgost/gost_crypt.c
===================================================================
RCS file: /cvs-openssl/openssl/engines/ccgost/gost_crypt.c,v
retrieving revision 1.14
diff -u -r1.14 gost_crypt.c
--- engines/ccgost/gost_crypt.c	16 Feb 2009 21:52:01 -0000	1.14
+++ engines/ccgost/gost_crypt.c	2 Apr 2009 10:25:30 -0000
@@ -550,7 +550,10 @@
 int gost_imit_final(EVP_MD_CTX *ctx,unsigned char *md)
 	{
 	struct ossl_gost_imit_ctx *c = ctx->md_data;
-	if (!c->key_set) return 0;
+	if (!c->key_set) {
+		GOSTerr(GOST_F_GOST_IMIT_FINAL, GOST_R_MAC_KEY_NOT_SET);
+		return 0;
+	}
 	if (c->bytes_left)
 		{
 		int i;
Index: test/Makefile
===================================================================
RCS file: /cvs-openssl/openssl/test/Makefile,v
retrieving revision 1.33
diff -u -r1.33 Makefile
--- test/Makefile	16 Dec 2008 10:54:27 -0000	1.33
+++ test/Makefile	2 Apr 2009 10:25:30 -0000
@@ -573,7 +573,11 @@
 igetest.o: ../include/openssl/aes.h ../include/openssl/e_os2.h
 igetest.o: ../include/openssl/opensslconf.h ../include/openssl/ossl_typ.h
 igetest.o: ../include/openssl/rand.h igetest.c
-jpaketest.o: ../include/openssl/opensslconf.h jpaketest.c
+jpaketest.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
+jpaketest.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
+jpaketest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
+jpaketest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
+jpaketest.o: ../include/openssl/symhacks.h jpaketest.c
 md2test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 md2test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
 md2test.o: ../include/openssl/evp.h ../include/openssl/md2.h
@@ -613,13 +617,8 @@
 rc5test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 rc5test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
 rc5test.o: ../include/openssl/symhacks.h rc5test.c
-rmdtest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
-rmdtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
-rmdtest.o: ../include/openssl/evp.h ../include/openssl/obj_mac.h
-rmdtest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
-rmdtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
-rmdtest.o: ../include/openssl/ripemd.h ../include/openssl/safestack.h
-rmdtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h rmdtest.c
+rmdtest.o: ../e_os.h ../include/openssl/e_os2.h
+rmdtest.o: ../include/openssl/opensslconf.h rmdtest.c
 rsa_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
 rsa_test.o: ../include/openssl/bn.h ../include/openssl/crypto.h
 rsa_test.o: ../include/openssl/e_os2.h ../include/openssl/err.h

Reply via email to