=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/openssl/apps.c,v retrieving revision 1.61 retrieving revision 1.62 diff -c -r1.61 -r1.62 *** src/usr.bin/openssl/apps.c 2021/11/26 16:23:27 1.61 --- src/usr.bin/openssl/apps.c 2022/01/10 12:17:49 1.62 *************** *** 1,4 **** ! /* $OpenBSD: apps.c,v 1.61 2021/11/26 16:23:27 tb Exp $ */ /* * Copyright (c) 2014 Joel Sing * --- 1,4 ---- ! /* $OpenBSD: apps.c,v 1.62 2022/01/10 12:17:49 tb Exp $ */ /* * Copyright (c) 2014 Joel Sing * *************** *** 2261,2264 **** --- 2261,2292 ---- return; fprintf(stderr, " -%-24s%s", name->name, (++*n % 3 != 0 ? "" : "\n")); + } + + int + pkey_check(BIO *out, EVP_PKEY *pkey, int (check_fn)(EVP_PKEY_CTX *), + const char *desc) + { + EVP_PKEY_CTX *ctx; + + if ((ctx = EVP_PKEY_CTX_new(pkey, NULL)) == NULL) { + ERR_print_errors(bio_err); + return 0; + } + + if (check_fn(ctx) == 1) { + BIO_printf(out, "%s valid\n", desc); + } else { + unsigned long err; + + BIO_printf(out, "%s invalid\n", desc); + + while ((err = ERR_get_error()) != 0) + BIO_printf(out, "Detailed error: %s\n", + ERR_reason_error_string(err)); + } + + EVP_PKEY_CTX_free(ctx); + + return 1; }