diff options
Diffstat (limited to 'src/usr.bin/openssl/apps.c')
-rw-r--r-- | src/usr.bin/openssl/apps.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/usr.bin/openssl/apps.c b/src/usr.bin/openssl/apps.c index 392d3cc339..fd13371f5d 100644 --- a/src/usr.bin/openssl/apps.c +++ b/src/usr.bin/openssl/apps.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: apps.c,v 1.61 2021/11/26 16:23:27 tb Exp $ */ | 1 | /* $OpenBSD: apps.c,v 1.62 2022/01/10 12:17:49 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -2262,3 +2262,31 @@ show_cipher(const OBJ_NAME *name, void *arg) | |||
2262 | 2262 | ||
2263 | fprintf(stderr, " -%-24s%s", name->name, (++*n % 3 != 0 ? "" : "\n")); | 2263 | fprintf(stderr, " -%-24s%s", name->name, (++*n % 3 != 0 ? "" : "\n")); |
2264 | } | 2264 | } |
2265 | |||
2266 | int | ||
2267 | pkey_check(BIO *out, EVP_PKEY *pkey, int (check_fn)(EVP_PKEY_CTX *), | ||
2268 | const char *desc) | ||
2269 | { | ||
2270 | EVP_PKEY_CTX *ctx; | ||
2271 | |||
2272 | if ((ctx = EVP_PKEY_CTX_new(pkey, NULL)) == NULL) { | ||
2273 | ERR_print_errors(bio_err); | ||
2274 | return 0; | ||
2275 | } | ||
2276 | |||
2277 | if (check_fn(ctx) == 1) { | ||
2278 | BIO_printf(out, "%s valid\n", desc); | ||
2279 | } else { | ||
2280 | unsigned long err; | ||
2281 | |||
2282 | BIO_printf(out, "%s invalid\n", desc); | ||
2283 | |||
2284 | while ((err = ERR_get_error()) != 0) | ||
2285 | BIO_printf(out, "Detailed error: %s\n", | ||
2286 | ERR_reason_error_string(err)); | ||
2287 | } | ||
2288 | |||
2289 | EVP_PKEY_CTX_free(ctx); | ||
2290 | |||
2291 | return 1; | ||
2292 | } | ||