summaryrefslogtreecommitdiff
path: root/ssh-keysign.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2014-04-20 13:23:21 +1000
committerDamien Miller <djm@mindrot.org>2014-04-20 13:23:21 +1000
commitfcd62c0b66b8415405ed0af29c236329eb88cc0f (patch)
tree9f8a521e6dcfb507bcbfa4033cc13162795bf872 /ssh-keysign.c
parent43b156cf72f900f88065b0a1c1ebd09ab733ca46 (diff)
- djm@cvs.openbsd.org 2014/04/01 02:05:27
[ssh-keysign.c] include fingerprint of key not found use arc4random_buf() instead of loop+arc4random()
Diffstat (limited to 'ssh-keysign.c')
-rw-r--r--ssh-keysign.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/ssh-keysign.c b/ssh-keysign.c
index 6bde8ad17..dfa89e1e2 100644
--- a/ssh-keysign.c
+++ b/ssh-keysign.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keysign.c,v 1.39 2013/12/06 13:39:49 markus Exp $ */ 1/* $OpenBSD: ssh-keysign.c,v 1.40 2014/04/01 02:05:27 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -155,7 +155,7 @@ main(int argc, char **argv)
155 struct passwd *pw; 155 struct passwd *pw;
156 int key_fd[NUM_KEYTYPES], i, found, version = 2, fd; 156 int key_fd[NUM_KEYTYPES], i, found, version = 2, fd;
157 u_char *signature, *data; 157 u_char *signature, *data;
158 char *host; 158 char *host, *fp;
159 u_int slen, dlen; 159 u_int slen, dlen;
160 u_int32_t rnd[256]; 160 u_int32_t rnd[256];
161 161
@@ -201,8 +201,7 @@ main(int argc, char **argv)
201 fatal("could not open any host key"); 201 fatal("could not open any host key");
202 202
203 OpenSSL_add_all_algorithms(); 203 OpenSSL_add_all_algorithms();
204 for (i = 0; i < 256; i++) 204 arc4random_buf(rnd, sizeof(rnd));
205 rnd[i] = arc4random();
206 RAND_seed(rnd, sizeof(rnd)); 205 RAND_seed(rnd, sizeof(rnd));
207 206
208 found = 0; 207 found = 0;
@@ -243,8 +242,11 @@ main(int argc, char **argv)
243 break; 242 break;
244 } 243 }
245 } 244 }
246 if (!found) 245 if (!found) {
247 fatal("no matching hostkey found"); 246 fp = key_fingerprint(key, SSH_FP_MD5, SSH_FP_HEX);
247 fatal("no matching hostkey found for key %s %s",
248 key_type(key), fp);
249 }
248 250
249 if (key_sign(keys[i], &signature, &slen, data, dlen) != 0) 251 if (key_sign(keys[i], &signature, &slen, data, dlen) != 0)
250 fatal("key_sign failed"); 252 fatal("key_sign failed");