[openssl-users] EVP_DigestVerifyFinal return code?

Jeffrey Walton noloader at gmail.com
Thu Jan 15 08:41:11 UTC 2015


According to the man pages on EVP_DigestVerifyFinal
(https://www.openssl.org/docs/crypto/EVP_DigestVerifyInit.html):

    EVP_DigestVerifyInit() and EVP_DigestVerifyUpdate() return 1 for
    success and 0 or a negative value for failure...

I have an unexplained failure in EVP_DigestVerifyInit (i.e., its not
returning 1).

Looking at apps/dgst.c, around line 580:

    if(sigin)
        {
        EVP_MD_CTX *ctx;
        BIO_get_md_ctx(bp, &ctx);
        i = EVP_DigestVerifyFinal(ctx, sigin, (unsigned int)siglen);
        if(i > 0)
            BIO_printf(out, "Verified OK\n");
        else if(i == 0)
            {
            BIO_printf(out, "Verification Failure\n");
            return 1;
            }
        else
            {
            BIO_printf(bio_err, "Error Verifying Data\n");
            ERR_print_errors(bio_err);
            return 1;
            }
        return 0;
        }

So does EVP_DigestVerifyInit return 1 on success, or does it return
something else? If its 1, then digst.c is wrong. If its something else
(like >0), then the docs are wrong.

Is anyone familiar with this function who can comment?


More information about the openssl-users mailing list