summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>2021-08-03 14:40:08 +0200
committerDr. David von Oheimb <dev@ddvo.net>2021-08-04 16:38:09 +0200
commit421953effea12b1ce6e2953786a83acc426b2622 (patch)
treed1bbaf9164b1011f2c573cfa372bde3cacb94b94 /apps
parenta8f35a5527bd7c1f48e3a5ae3d8241ae3988ea94 (diff)
apps/pkeyutl.c: call ERR_print_errors() on all errors, including Signature Verification Failure
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16209)
Diffstat (limited to 'apps')
-rw-r--r--apps/pkeyutl.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/apps/pkeyutl.c b/apps/pkeyutl.c
index bf9db2fa5a..73012e3069 100644
--- a/apps/pkeyutl.c
+++ b/apps/pkeyutl.c
@@ -307,12 +307,10 @@ int pkeyutl_main(int argc, char **argv)
mctx, digestname, libctx, app_get0_propq());
if (ctx == NULL) {
BIO_printf(bio_err, "%s: Error initializing context\n", prog);
- ERR_print_errors(bio_err);
goto end;
}
if (peerkey != NULL && !setup_peer(ctx, peerform, peerkey, e)) {
BIO_printf(bio_err, "%s: Error setting up peer key\n", prog);
- ERR_print_errors(bio_err);
goto end;
}
if (pkeyopts != NULL) {
@@ -325,7 +323,6 @@ int pkeyutl_main(int argc, char **argv)
if (pkey_ctrl_string(ctx, opt) <= 0) {
BIO_printf(bio_err, "%s: Can't set parameter \"%s\":\n",
prog, opt);
- ERR_print_errors(bio_err);
goto end;
}
}
@@ -492,14 +489,13 @@ int pkeyutl_main(int argc, char **argv)
} else {
BIO_puts(bio_err, "Key derivation failed\n");
}
- ERR_print_errors(bio_err);
goto end;
}
ret = 0;
if (asn1parse) {
if (!ASN1_parse_dump(out, buf_out, buf_outlen, 1, -1))
- ERR_print_errors(bio_err);
+ ERR_print_errors(bio_err); /* but still return success */
} else if (hexdump) {
BIO_dump(out, (char *)buf_out, buf_outlen);
} else {
@@ -507,6 +503,8 @@ int pkeyutl_main(int argc, char **argv)
}
end:
+ if (ret != 0)
+ ERR_print_errors(bio_err);
EVP_MD_CTX_free(mctx);
EVP_PKEY_CTX_free(ctx);
EVP_MD_free(md);
@@ -671,15 +669,12 @@ static int setup_peer(EVP_PKEY_CTX *ctx, int peerform, const char *file,
peer = load_pubkey(file, peerform, 0, NULL, engine, "peer key");
if (peer == NULL) {
BIO_printf(bio_err, "Error reading peer key %s\n", file);
- ERR_print_errors(bio_err);
return 0;
}
- ret = EVP_PKEY_derive_set_peer(ctx, peer);
+ ret = EVP_PKEY_derive_set_peer(ctx, peer) > 0;
EVP_PKEY_free(peer);
- if (ret <= 0)
- ERR_print_errors(bio_err);
return ret;
}