Use EVP_DigestVerify() in dgst.c if verifying.
[openssl.git] / apps / dgst.c
index a20a5cba7c229fa0cd10e103d40968f4dd113535..147c4f9e61ff89ca7d8b5a5963b43260c0446a67 100644 (file)
@@ -412,13 +412,18 @@ int MAIN(int argc, char **argv)
                {
                EVP_MD_CTX *mctx = NULL;
                EVP_PKEY_CTX *pctx = NULL;
+               int r;
                if (!BIO_get_md_ctx(bmd, &mctx))
                        {
                        BIO_printf(bio_err, "Error getting context\n");
                        ERR_print_errors(bio_err);
                        goto end;
                        }
-               if (!EVP_DigestSignInit(mctx, &pctx, md, e, sigkey))
+               if (do_verify)
+                       r = EVP_DigestVerifyInit(mctx, &pctx, md, e, sigkey);
+               else
+                       r = EVP_DigestSignInit(mctx, &pctx, md, e, sigkey);
+               if (!r)
                        {
                        BIO_printf(bio_err, "Error setting context\n");
                        ERR_print_errors(bio_err);
@@ -534,7 +539,7 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
          EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title,
          const char *file,BIO *bmd)
        {
-       unsigned int len;
+       size_t len;
        int i;
 
        for (;;)
@@ -572,7 +577,7 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
                {
                EVP_MD_CTX *ctx;
                BIO_get_md_ctx(bp, &ctx);
-               if(!EVP_DigestSignFinal(ctx, buf, (unsigned int *)&len)) 
+               if(!EVP_DigestSignFinal(ctx, buf, &len)) 
                        {
                        BIO_printf(bio_err, "Error Signing Data\n");
                        ERR_print_errors(bio_err);