vishalmishra434 / rpms / openssh

Forked from rpms/openssh a month ago
Clone
Jakub Jelen 6cf9b8
diff -up openssh-7.4p1/clientloop.c.fingerprint openssh-7.4p1/clientloop.c
Jakub Jelen 6cf9b8
--- openssh-7.4p1/clientloop.c.fingerprint	2016-12-23 15:38:50.520432387 +0100
Jakub Jelen 6cf9b8
+++ openssh-7.4p1/clientloop.c	2016-12-23 15:38:50.564432394 +0100
Jakub Jelen 6cf9b8
@@ -2279,7 +2279,7 @@ update_known_hosts(struct hostkeys_updat
Jakub Jelen 4df30a
 		if (ctx->keys_seen[i] != 2)
Jakub Jelen 4df30a
 			continue;
Jakub Jelen 4df30a
 		if ((fp = sshkey_fingerprint(ctx->keys[i],
Jakub Jelen 4df30a
-		    options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL)
Jakub Jelen 4df30a
+		    options.fingerprint_hash[0], SSH_FP_DEFAULT)) == NULL)
Jakub Jelen 4df30a
 			fatal("%s: sshkey_fingerprint failed", __func__);
Jakub Jelen 4df30a
 		do_log2(loglevel, "Learned new hostkey: %s %s",
Jakub Jelen 4df30a
 		    sshkey_type(ctx->keys[i]), fp);
Jakub Jelen 6cf9b8
@@ -2287,7 +2287,7 @@ update_known_hosts(struct hostkeys_updat
Jakub Jelen 4df30a
 	}
Jakub Jelen 4df30a
 	for (i = 0; i < ctx->nold; i++) {
Jakub Jelen 4df30a
 		if ((fp = sshkey_fingerprint(ctx->old_keys[i],
Jakub Jelen 4df30a
-		    options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL)
Jakub Jelen 4df30a
+		    options.fingerprint_hash[0], SSH_FP_DEFAULT)) == NULL)
Jakub Jelen 4df30a
 			fatal("%s: sshkey_fingerprint failed", __func__);
Jakub Jelen 4df30a
 		do_log2(loglevel, "Deprecating obsolete hostkey: %s %s",
Jakub Jelen 4df30a
 		    sshkey_type(ctx->old_keys[i]), fp);
Jakub Jelen 6cf9b8
@@ -2330,7 +2330,7 @@ update_known_hosts(struct hostkeys_updat
Jakub Jelen 4df30a
 	    (r = hostfile_replace_entries(options.user_hostfiles[0],
Jakub Jelen 4df30a
 	    ctx->host_str, ctx->ip_str, ctx->keys, ctx->nkeys,
Jakub Jelen 4df30a
 	    options.hash_known_hosts, 0,
Jakub Jelen 4df30a
-	    options.fingerprint_hash)) != 0)
Jakub Jelen 4df30a
+	    options.fingerprint_hash[0])) != 0)
Jakub Jelen 4df30a
 		error("%s: hostfile_replace_entries failed: %s",
Jakub Jelen 4df30a
 		    __func__, ssh_err(r));
Jakub Jelen 4df30a
 }
Jakub Jelen 6cf9b8
@@ -2443,7 +2443,7 @@ client_input_hostkeys(void)
Jakub Jelen 4df30a
 			error("%s: parse key: %s", __func__, ssh_err(r));
Jakub Jelen 4df30a
 			goto out;
Jakub Jelen 4df30a
 		}
Jakub Jelen 4df30a
-		fp = sshkey_fingerprint(key, options.fingerprint_hash,
Jakub Jelen 4df30a
+		fp = sshkey_fingerprint(key, options.fingerprint_hash[0],
Jakub Jelen 4df30a
 		    SSH_FP_DEFAULT);
Jakub Jelen 4df30a
 		debug3("%s: received %s key %s", __func__,
Jakub Jelen 4df30a
 		    sshkey_type(key), fp);
Jakub Jelen 6cf9b8
diff -up openssh-7.4p1/readconf.c.fingerprint openssh-7.4p1/readconf.c
Jakub Jelen 6cf9b8
--- openssh-7.4p1/readconf.c.fingerprint	2016-12-23 15:38:50.559432393 +0100
Jakub Jelen 6cf9b8
+++ openssh-7.4p1/readconf.c	2016-12-23 15:38:50.565432394 +0100
Jakub Jelen 6cf9b8
@@ -1668,16 +1668,18 @@ parse_keytypes:
Jakub Jelen 4df30a
 		goto parse_string;
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
 	case oFingerprintHash:
Jakub Jelen 4df30a
-		intptr = &options->fingerprint_hash;
Jakub Jelen 4df30a
-		arg = strdelim(&s);
Jakub Jelen 4df30a
-		if (!arg || *arg == '\0')
Jakub Jelen 4df30a
-			fatal("%.200s line %d: Missing argument.",
Jakub Jelen 4df30a
-			    filename, linenum);
Jakub Jelen 4df30a
-		if ((value = ssh_digest_alg_by_name(arg)) == -1)
Jakub Jelen 4df30a
-			fatal("%.200s line %d: Invalid hash algorithm \"%s\".",
Jakub Jelen 4df30a
-			    filename, linenum, arg);
Jakub Jelen 4df30a
-		if (*activep && *intptr == -1)
Jakub Jelen 4df30a
-			*intptr = value;
Jakub Jelen 4df30a
+		if (*activep && options->num_fingerprint_hash == 0)
Jakub Jelen 4df30a
+			while ((arg = strdelim(&s)) != NULL && *arg != '\0') {
Jakub Jelen 4df30a
+				value = ssh_digest_alg_by_name(arg);
Jakub Jelen 4df30a
+				if (value == -1)
Jakub Jelen 4df30a
+					fatal("%s line %d: unknown fingerprints algorithm specs: %s.",
Jakub Jelen 4df30a
+						filename, linenum, arg);
Jakub Jelen 4df30a
+				if (options->num_fingerprint_hash >= SSH_DIGEST_MAX)
Jakub Jelen 4df30a
+					fatal("%s line %d: too many fingerprints algorithm specs.",
Jakub Jelen 4df30a
+						filename, linenum);
Jakub Jelen 4df30a
+				options->fingerprint_hash[
Jakub Jelen 4df30a
+					options->num_fingerprint_hash++] = value;
Jakub Jelen 4df30a
+			}
Jakub Jelen 4df30a
 		break;
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
 	case oUpdateHostkeys:
Jakub Jelen 6cf9b8
@@ -1905,7 +1907,7 @@ initialize_options(Options * options)
Jakub Jelen 4df30a
 	options->canonicalize_fallback_local = -1;
Jakub Jelen 4df30a
 	options->canonicalize_hostname = -1;
Jakub Jelen 4df30a
 	options->revoked_host_keys = NULL;
Jakub Jelen 4df30a
-	options->fingerprint_hash = -1;
Jakub Jelen 4df30a
+	options->num_fingerprint_hash = 0;
Jakub Jelen 4df30a
 	options->update_hostkeys = -1;
Jakub Jelen 4df30a
 	options->hostbased_key_types = NULL;
Jakub Jelen 4df30a
 	options->pubkey_key_types = NULL;
Jakub Jelen 6cf9b8
@@ -2102,8 +2104,10 @@ fill_default_options(Options * options)
Jakub Jelen 4df30a
 		options->canonicalize_fallback_local = 1;
Jakub Jelen 4df30a
 	if (options->canonicalize_hostname == -1)
Jakub Jelen 4df30a
 		options->canonicalize_hostname = SSH_CANONICALISE_NO;
Jakub Jelen 4df30a
-	if (options->fingerprint_hash == -1)
Jakub Jelen 4df30a
-		options->fingerprint_hash = SSH_FP_HASH_DEFAULT;
Jakub Jelen 4df30a
+	if (options->num_fingerprint_hash == 0) {
Jakub Jelen 4df30a
+		options->fingerprint_hash[options->num_fingerprint_hash++] = SSH_DIGEST_SHA256;
Jakub Jelen 4df30a
+		options->fingerprint_hash[options->num_fingerprint_hash++] = SSH_DIGEST_MD5;
Jakub Jelen 4df30a
+	}
Jakub Jelen 4df30a
 	if (options->update_hostkeys == -1)
Jakub Jelen 4df30a
 		options->update_hostkeys = 0;
Jakub Jelen 4df30a
 	if (kex_assemble_names(KEX_CLIENT_ENCRYPT, &options->ciphers) != 0 ||
Jakub Jelen 6cf9b8
@@ -2489,6 +2493,17 @@ dump_cfg_strarray(OpCodes code, u_int co
Jakub Jelen 4df30a
 }
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
 static void
Jakub Jelen 4df30a
+dump_cfg_fmtarray(OpCodes code, u_int count, int *vals)
Jakub Jelen 4df30a
+{
Jakub Jelen 4df30a
+	u_int i;
Jakub Jelen 4df30a
+
Jakub Jelen 4df30a
+	printf("%s", lookup_opcode_name(code));
Jakub Jelen 4df30a
+	for (i = 0; i < count; i++)
Jakub Jelen 4df30a
+		printf(" %s", fmt_intarg(code, vals[i]));
Jakub Jelen 4df30a
+	printf("\n");
Jakub Jelen 4df30a
+}
Jakub Jelen 4df30a
+
Jakub Jelen 4df30a
+static void
Jakub Jelen 4df30a
 dump_cfg_strarray_oneline(OpCodes code, u_int count, char **vals)
Jakub Jelen 4df30a
 {
Jakub Jelen 4df30a
 	u_int i;
Jakub Jelen 6cf9b8
@@ -2564,7 +2579,6 @@ dump_client_config(Options *o, const cha
Jakub Jelen 4df30a
 	dump_cfg_fmtint(oEnableSSHKeysign, o->enable_ssh_keysign);
Jakub Jelen 5878eb
 	dump_cfg_fmtint(oClearAllForwardings, o->clear_forwardings);
Jakub Jelen 4df30a
 	dump_cfg_fmtint(oExitOnForwardFailure, o->exit_on_forward_failure);
Jakub Jelen 4df30a
-	dump_cfg_fmtint(oFingerprintHash, o->fingerprint_hash);
Jakub Jelen 4df30a
 	dump_cfg_fmtint(oForwardAgent, o->forward_agent);
Jakub Jelen 4df30a
 	dump_cfg_fmtint(oForwardX11, o->forward_x11);
Jakub Jelen 4df30a
 	dump_cfg_fmtint(oForwardX11Trusted, o->forward_x11_trusted);
Jakub Jelen 6cf9b8
@@ -2634,6 +2648,7 @@ dump_client_config(Options *o, const cha
Jakub Jelen 4df30a
 	dump_cfg_strarray_oneline(oGlobalKnownHostsFile, o->num_system_hostfiles, o->system_hostfiles);
Jakub Jelen 4df30a
 	dump_cfg_strarray_oneline(oUserKnownHostsFile, o->num_user_hostfiles, o->user_hostfiles);
Jakub Jelen 4df30a
 	dump_cfg_strarray(oSendEnv, o->num_send_env, o->send_env);
Jakub Jelen 4df30a
+	dump_cfg_fmtarray(oFingerprintHash, o->num_fingerprint_hash, o->fingerprint_hash);
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
 	/* Special cases */
Jakub Jelen 4df30a
 
Jakub Jelen 6cf9b8
diff -up openssh-7.4p1/readconf.h.fingerprint openssh-7.4p1/readconf.h
Jakub Jelen 6cf9b8
--- openssh-7.4p1/readconf.h.fingerprint	2016-12-23 15:38:50.559432393 +0100
Jakub Jelen 6cf9b8
+++ openssh-7.4p1/readconf.h	2016-12-23 15:38:50.565432394 +0100
Jakub Jelen 4df30a
@@ -21,6 +21,7 @@
Jakub Jelen 4df30a
 #define MAX_SEND_ENV		256
Jakub Jelen 4df30a
 #define SSH_MAX_HOSTS_FILES	32
Jakub Jelen 4df30a
 #define MAX_CANON_DOMAINS	32
Jakub Jelen 4df30a
+#define MAX_SSH_DIGESTS	32
Jakub Jelen 4df30a
 #define PATH_MAX_SUN		(sizeof((struct sockaddr_un *)0)->sun_path)
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
 struct allowed_cname {
Jakub Jelen 6cf9b8
@@ -162,7 +163,8 @@ typedef struct {
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
 	char	*revoked_host_keys;
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
-	int	 fingerprint_hash;
Jakub Jelen 4df30a
+	int num_fingerprint_hash;
Jakub Jelen 4df30a
+	int 	fingerprint_hash[MAX_SSH_DIGESTS];
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
 	int	 update_hostkeys; /* one of SSH_UPDATE_HOSTKEYS_* */
Jakub Jelen 4df30a
 
Jakub Jelen 6cf9b8
diff -up openssh-7.4p1/ssh_config.5.fingerprint openssh-7.4p1/ssh_config.5
Jakub Jelen 6cf9b8
--- openssh-7.4p1/ssh_config.5.fingerprint	2016-12-23 15:38:50.565432394 +0100
Jakub Jelen 6cf9b8
+++ openssh-7.4p1/ssh_config.5	2016-12-23 15:40:03.754444166 +0100
Jakub Jelen 6cf9b8
@@ -652,12 +652,13 @@ or
Jakub Jelen 6cf9b8
 .Cm no
Jakub Jelen 6cf9b8
 (the default).
Jakub Jelen 4df30a
 .It Cm FingerprintHash
Jakub Jelen 4df30a
-Specifies the hash algorithm used when displaying key fingerprints.
Jakub Jelen 4df30a
+Specifies the hash algorithms used when displaying key fingerprints.
Jakub Jelen 4df30a
 Valid options are:
Jakub Jelen 6cf9b8
 .Cm md5
Jakub Jelen 4df30a
 and
Jakub Jelen 6cf9b8
-.Cm sha256
Jakub Jelen 6cf9b8
-(the default).
Jakub Jelen 6cf9b8
+.Cm sha256 .
Jakub Jelen 6cf9b8
+The default is
Jakub Jelen 6cf9b8
+.Cm "sha256 md5".
Jakub Jelen 4df30a
 .It Cm ForwardAgent
Jakub Jelen 4df30a
 Specifies whether the connection to the authentication agent (if any)
Jakub Jelen 4df30a
 will be forwarded to the remote machine.
Jakub Jelen 6cf9b8
diff -up openssh-7.4p1/sshconnect2.c.fingerprint openssh-7.4p1/sshconnect2.c
Jakub Jelen 6cf9b8
--- openssh-7.4p1/sshconnect2.c.fingerprint	2016-12-23 15:38:50.561432394 +0100
Jakub Jelen 6cf9b8
+++ openssh-7.4p1/sshconnect2.c	2016-12-23 15:38:50.566432394 +0100
Jakub Jelen 6cf9b8
@@ -677,7 +677,7 @@ input_userauth_pk_ok(int type, u_int32_t
Jakub Jelen 6cf9b8
 		    key->type, pktype);
Jakub Jelen 6cf9b8
 		goto done;
Jakub Jelen 6cf9b8
 	}
Jakub Jelen 6cf9b8
-	if ((fp = sshkey_fingerprint(key, options.fingerprint_hash,
Jakub Jelen 6cf9b8
+	if ((fp = sshkey_fingerprint(key, options.fingerprint_hash[0],
Jakub Jelen 6cf9b8
 	    SSH_FP_DEFAULT)) == NULL)
Jakub Jelen 6cf9b8
 		goto done;
Jakub Jelen 6cf9b8
 	debug2("input_userauth_pk_ok: fp %s", fp);
Jakub Jelen 6cf9b8
@@ -1172,7 +1172,7 @@ sign_and_send_pubkey(Authctxt *authctxt,
Jakub Jelen 6cf9b8
 	int matched, ret = -1, have_sig = 1;
Jakub Jelen 6cf9b8
 	char *fp;
Jakub Jelen 6cf9b8
 
Jakub Jelen 6cf9b8
-	if ((fp = sshkey_fingerprint(id->key, options.fingerprint_hash,
Jakub Jelen 6cf9b8
+	if ((fp = sshkey_fingerprint(id->key, options.fingerprint_hash[0],
Jakub Jelen 6cf9b8
 	    SSH_FP_DEFAULT)) == NULL)
Jakub Jelen 6cf9b8
 		return 0;
Jakub Jelen 6cf9b8
 	debug3("%s: %s %s", __func__, key_type(id->key), fp);
Jakub Jelen 6cf9b8
@@ -1864,7 +1864,7 @@ userauth_hostbased(Authctxt *authctxt)
Jakub Jelen 6cf9b8
 		goto out;
Jakub Jelen 6cf9b8
 	}
Jakub Jelen 6cf9b8
 
Jakub Jelen 6cf9b8
-	if ((fp = sshkey_fingerprint(private, options.fingerprint_hash,
Jakub Jelen 6cf9b8
+	if ((fp = sshkey_fingerprint(private, options.fingerprint_hash[0],
Jakub Jelen 6cf9b8
 	    SSH_FP_DEFAULT)) == NULL) {
Jakub Jelen 6cf9b8
 		error("%s: sshkey_fingerprint failed", __func__);
Jakub Jelen 6cf9b8
 		goto out;
Jakub Jelen 6cf9b8
diff -up openssh-7.4p1/sshconnect.c.fingerprint openssh-7.4p1/sshconnect.c
Jakub Jelen 6cf9b8
--- openssh-7.4p1/sshconnect.c.fingerprint	2016-12-19 05:59:41.000000000 +0100
Jakub Jelen 6cf9b8
+++ openssh-7.4p1/sshconnect.c	2016-12-23 15:38:50.566432394 +0100
Jakub Jelen 6cf9b8
@@ -922,9 +922,9 @@ check_host_key(char *hostname, struct so
Jakub Jelen 4df30a
 				    "of known hosts.", type, ip);
Jakub Jelen 4df30a
 		} else if (options.visual_host_key) {
Jakub Jelen 4df30a
 			fp = sshkey_fingerprint(host_key,
Jakub Jelen 4df30a
-			    options.fingerprint_hash, SSH_FP_DEFAULT);
Jakub Jelen 4df30a
+			    options.fingerprint_hash[0], SSH_FP_DEFAULT);
Jakub Jelen 4df30a
 			ra = sshkey_fingerprint(host_key,
Jakub Jelen 4df30a
-			    options.fingerprint_hash, SSH_FP_RANDOMART);
Jakub Jelen 4df30a
+			    options.fingerprint_hash[0], SSH_FP_RANDOMART);
Jakub Jelen 4df30a
 			if (fp == NULL || ra == NULL)
Jakub Jelen 4df30a
 				fatal("%s: sshkey_fingerprint fail", __func__);
Jakub Jelen 13073f
 			logit("Host key fingerprint is %s\n%s", fp, ra);
Jakub Jelen 6cf9b8
@@ -966,12 +966,6 @@ check_host_key(char *hostname, struct so
Jakub Jelen 4df30a
 			else
Jakub Jelen 4df30a
 				snprintf(msg1, sizeof(msg1), ".");
Jakub Jelen 4df30a
 			/* The default */
Jakub Jelen 4df30a
-			fp = sshkey_fingerprint(host_key,
Jakub Jelen 4df30a
-			    options.fingerprint_hash, SSH_FP_DEFAULT);
Jakub Jelen 4df30a
-			ra = sshkey_fingerprint(host_key,
Jakub Jelen 4df30a
-			    options.fingerprint_hash, SSH_FP_RANDOMART);
Jakub Jelen 4df30a
-			if (fp == NULL || ra == NULL)
Jakub Jelen 4df30a
-				fatal("%s: sshkey_fingerprint fail", __func__);
Jakub Jelen 4df30a
 			msg2[0] = '\0';
Jakub Jelen 4df30a
 			if (options.verify_host_key_dns) {
Jakub Jelen 4df30a
 				if (matching_host_key_dns)
Jakub Jelen 6cf9b8
@@ -985,16 +979,28 @@ check_host_key(char *hostname, struct so
Jakub Jelen 4df30a
 			}
Jakub Jelen 4df30a
 			snprintf(msg, sizeof(msg),
Jakub Jelen 4df30a
 			    "The authenticity of host '%.200s (%s)' can't be "
Jakub Jelen 4df30a
-			    "established%s\n"
Jakub Jelen 4df30a
-			    "%s key fingerprint is %s.%s%s\n%s"
Jakub Jelen 4df30a
+			    "established%s\n", host, ip, msg1);
Jakub Jelen 6cf9b8
+			for (i = 0; i < (u_int) options.num_fingerprint_hash; i++) {
Jakub Jelen 4df30a
+				fp = sshkey_fingerprint(host_key,
Jakub Jelen 4df30a
+				    options.fingerprint_hash[i], SSH_FP_DEFAULT);
Jakub Jelen 4df30a
+				ra = sshkey_fingerprint(host_key,
Jakub Jelen 4df30a
+				    options.fingerprint_hash[i], SSH_FP_RANDOMART);
Jakub Jelen 4df30a
+				if (fp == NULL || ra == NULL)
Jakub Jelen 4df30a
+					fatal("%s: sshkey_fingerprint fail", __func__);
Jakub Jelen 4df30a
+				len = strlen(msg);
Jakub Jelen 4df30a
+				snprintf(msg+len, sizeof(msg)-len,
Jakub Jelen 4df30a
+				    "%s key fingerprint is %s.%s%s\n%s",
Jakub Jelen 4df30a
+				    type, fp,
Jakub Jelen 4df30a
+				    options.visual_host_key ? "\n" : "",
Jakub Jelen 4df30a
+				    options.visual_host_key ? ra : "",
Jakub Jelen 4df30a
+				    msg2);
Jakub Jelen 4df30a
+				free(ra);
Jakub Jelen 4df30a
+				free(fp);
Jakub Jelen 4df30a
+			}
Jakub Jelen 4df30a
+			len = strlen(msg);
Jakub Jelen 4df30a
+			snprintf(msg+len, sizeof(msg)-len,
Jakub Jelen 4df30a
 			    "Are you sure you want to continue connecting "
Jakub Jelen 4df30a
-			    "(yes/no)? ",
Jakub Jelen 4df30a
-			    host, ip, msg1, type, fp,
Jakub Jelen 4df30a
-			    options.visual_host_key ? "\n" : "",
Jakub Jelen 4df30a
-			    options.visual_host_key ? ra : "",
Jakub Jelen 4df30a
-			    msg2);
Jakub Jelen 4df30a
-			free(ra);
Jakub Jelen 4df30a
-			free(fp);
Jakub Jelen 4df30a
+			    "(yes/no)? ");
Jakub Jelen 4df30a
 			if (!confirm(msg))
Jakub Jelen 4df30a
 				goto fail;
Jakub Jelen 4df30a
 			hostkey_trusted = 1; /* user explicitly confirmed */
Jakub Jelen 6cf9b8
@@ -1244,7 +1250,7 @@ verify_host_key(char *host, struct socka
Jakub Jelen 4df30a
 	struct sshkey *plain = NULL;
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
 	if ((fp = sshkey_fingerprint(host_key,
Jakub Jelen 4df30a
-	    options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) {
Jakub Jelen 4df30a
+	    options.fingerprint_hash[0], SSH_FP_DEFAULT)) == NULL) {
Jakub Jelen 4df30a
 		error("%s: fingerprint host key: %s", __func__, ssh_err(r));
Jakub Jelen 4df30a
 		r = -1;
Jakub Jelen 4df30a
 		goto out;
Jakub Jelen 6cf9b8
@@ -1252,7 +1258,7 @@ verify_host_key(char *host, struct socka
Jakub Jelen 6cf9b8
 
Jakub Jelen 6cf9b8
 	if (sshkey_is_cert(host_key)) {
Jakub Jelen 6cf9b8
 		if ((cafp = sshkey_fingerprint(host_key->cert->signature_key,
Jakub Jelen 6cf9b8
-		    options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) {
Jakub Jelen 6cf9b8
+		    options.fingerprint_hash[0], SSH_FP_DEFAULT)) == NULL) {
Jakub Jelen 6cf9b8
 			error("%s: fingerprint CA key: %s",
Jakub Jelen 6cf9b8
 			    __func__, ssh_err(r));
Jakub Jelen 6cf9b8
 			r = -1;
Jakub Jelen 6cf9b8
@@ -1432,9 +1438,9 @@ show_other_keys(struct hostkeys *hostkey
Jakub Jelen 4df30a
 		if (!lookup_key_in_hostkeys_by_type(hostkeys, type[i], &found))
Jakub Jelen 4df30a
 			continue;
Jakub Jelen 4df30a
 		fp = sshkey_fingerprint(found->key,
Jakub Jelen 4df30a
-		    options.fingerprint_hash, SSH_FP_DEFAULT);
Jakub Jelen 4df30a
+		    options.fingerprint_hash[0], SSH_FP_DEFAULT);
Jakub Jelen 4df30a
 		ra = sshkey_fingerprint(found->key,
Jakub Jelen 4df30a
-		    options.fingerprint_hash, SSH_FP_RANDOMART);
Jakub Jelen 4df30a
+		    options.fingerprint_hash[0], SSH_FP_RANDOMART);
Jakub Jelen 4df30a
 		if (fp == NULL || ra == NULL)
Jakub Jelen 4df30a
 			fatal("%s: sshkey_fingerprint fail", __func__);
Jakub Jelen 4df30a
 		logit("WARNING: %s key found for host %s\n"
Jakub Jelen 6cf9b8
@@ -1457,7 +1463,7 @@ warn_changed_key(Key *host_key)
Jakub Jelen 4df30a
 {
Jakub Jelen 4df30a
 	char *fp;
Jakub Jelen 4df30a
 
Jakub Jelen 4df30a
-	fp = sshkey_fingerprint(host_key, options.fingerprint_hash,
Jakub Jelen 4df30a
+	fp = sshkey_fingerprint(host_key, options.fingerprint_hash[0],
Jakub Jelen 4df30a
 	    SSH_FP_DEFAULT);
Jakub Jelen 4df30a
 	if (fp == NULL)
Jakub Jelen 4df30a
 		fatal("%s: sshkey_fingerprint fail", __func__);
Jakub Jelen 6cf9b8
diff -up openssh-7.4p1/ssh-keysign.c.fingerprint openssh-7.4p1/ssh-keysign.c
Jakub Jelen 6cf9b8
--- openssh-7.4p1/ssh-keysign.c.fingerprint	2016-12-19 05:59:41.000000000 +0100
Jakub Jelen 6cf9b8
+++ openssh-7.4p1/ssh-keysign.c	2016-12-23 15:38:50.566432394 +0100
Jakub Jelen 6cf9b8
@@ -285,7 +285,7 @@ main(int argc, char **argv)
Jakub Jelen c4c52b
 		}
Jakub Jelen c4c52b
 	}
Jakub Jelen c4c52b
 	if (!found) {
Jakub Jelen c4c52b
-		if ((fp = sshkey_fingerprint(key, options.fingerprint_hash,
Jakub Jelen c4c52b
+		if ((fp = sshkey_fingerprint(key, options.fingerprint_hash[0],
Jakub Jelen c4c52b
 		    SSH_FP_DEFAULT)) == NULL)
Jakub Jelen 13073f
 			fatal("%s: sshkey_fingerprint failed", __progname);
Jakub Jelen c4c52b
 		fatal("no matching hostkey found for key %s %s",