summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/ssh-keygen.c
diff options
context:
space:
mode:
authordjm <djm@openbsd.org>2019-07-19 03:38:01 +0000
committerdjm <djm@openbsd.org>2019-07-19 03:38:01 +0000
commit170d3ea14cf9fcb31f079e6945e8b8bdbcdb23c9 (patch)
tree9c17121bc2bf516d026071c032f31cfceca39d0c /usr.bin/ssh/ssh-keygen.c
parentvwaitforio(9): tsleep(9) -> tsleep_nsec(9); ok visa@ (diff)
downloadwireguard-openbsd-170d3ea14cf9fcb31f079e6945e8b8bdbcdb23c9.tar.xz
wireguard-openbsd-170d3ea14cf9fcb31f079e6945e8b8bdbcdb23c9.zip
Accept the verbose flag when searching for host keys in known hosts
(i.e. "ssh-keygen -vF host") to print the matching host's random- art signature too. bz#3003 "amusing, pretty" deraadt@
Diffstat (limited to 'usr.bin/ssh/ssh-keygen.c')
-rw-r--r--usr.bin/ssh/ssh-keygen.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/usr.bin/ssh/ssh-keygen.c b/usr.bin/ssh/ssh-keygen.c
index 96b0bc6dadc..7a7b8b787a0 100644
--- a/usr.bin/ssh/ssh-keygen.c
+++ b/usr.bin/ssh/ssh-keygen.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-keygen.c,v 1.337 2019/07/16 13:18:39 djm Exp $ */
+/* $OpenBSD: ssh-keygen.c,v 1.338 2019/07/19 03:38:01 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1151,7 +1151,7 @@ known_hosts_find_delete(struct hostkey_foreach_line *l, void *_ctx)
struct known_hosts_ctx *ctx = (struct known_hosts_ctx *)_ctx;
enum sshkey_fp_rep rep;
int fptype;
- char *fp;
+ char *fp = NULL, *ra = NULL;
fptype = print_bubblebabble ? SSH_DIGEST_SHA1 : fingerprint_hash;
rep = print_bubblebabble ? SSH_FP_BUBBLEBABBLE : SSH_FP_DEFAULT;
@@ -1185,8 +1185,16 @@ known_hosts_find_delete(struct hostkey_foreach_line *l, void *_ctx)
known_hosts_hash(l, ctx);
else if (print_fingerprint) {
fp = sshkey_fingerprint(l->key, fptype, rep);
+ ra = sshkey_fingerprint(l->key,
+ fingerprint_hash, SSH_FP_RANDOMART);
+ if (fp == NULL || ra == NULL)
+ fatal("%s: sshkey_fingerprint failed",
+ __func__);
mprintf("%s %s %s %s\n", ctx->host,
sshkey_type(l->key), fp, l->comment);
+ if (log_level_get() >= SYSLOG_LEVEL_VERBOSE)
+ printf("%s\n", ra);
+ free(ra);
free(fp);
} else
fprintf(ctx->out, "%s\n", l->line);