Hello Wouter, I'm not quite familiar with your app internals, but it seems your fix makes no big difference between 0 and 1 return codes. You really want to use EVP_VerifyFinal as openssl guys did it [1], and provide the above functioning level with the all possible returns. Their doc suggests the same:
EVP_VerifyFinal() returns:
1 for a correct signature
0 for verfication failure
-1 if some other error occurred.
This is a short code snippet from openssl: apps/dgst.c around line ~458.
i = EVP_VerifyFinal(ctx, sigin, (unsigned int)siglen, key);
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;
}
--
pub 4096R/0E4BD0AB 2003-03-18 <people.fccf.net/danchev/key pgp.mit.edu>
signature.asc
Description: This is a digitally signed message part.

