Use default md if none specified in dgst utility.
authorDr. Stephen Henson <steve@openssl.org>
Thu, 17 May 2007 12:55:03 +0000 (12:55 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 17 May 2007 12:55:03 +0000 (12:55 +0000)
apps/dgst.c

index 147c4f9..deb829a 100644 (file)
@@ -231,8 +231,6 @@ int MAIN(int argc, char **argv)
                argv++;
                }
 
-       if (md == NULL)
-               md=EVP_md5();
 
        if(do_verify && !sigfile) {
                BIO_printf(bio_err, "No signature to verify: use the -signature option\n");
@@ -447,11 +445,16 @@ int MAIN(int argc, char **argv)
                        }
                }
        /* we use md as a filter, reading from 'in' */
-       else if (!BIO_set_md(bmd,md))
+       else
                {
-               BIO_printf(bio_err, "Error setting digest %s\n", pname);
-               ERR_print_errors(bio_err);
-               goto end;
+               if (md == NULL)
+                       md = EVP_md5(); 
+               if (!BIO_set_md(bmd,md))
+                       {
+                       BIO_printf(bio_err, "Error setting digest %s\n", pname);
+                       ERR_print_errors(bio_err);
+                       goto end;
+                       }
                }
 
        if(sigfile && sigkey) {
@@ -476,6 +479,13 @@ int MAIN(int argc, char **argv)
        }
        inp=BIO_push(bmd,in);
 
+       if (md == NULL)
+               {
+               EVP_MD_CTX *tctx;
+               BIO_get_md_ctx(bmd, &tctx);
+               md = EVP_MD_CTX_md(tctx);
+               }
+
        if (argc == 0)
                {
                BIO_set_fp(in,stdin,BIO_NOCLOSE);