diff options
author | 2001-06-23 17:05:22 +0000 | |
---|---|---|
committer | 2001-06-23 17:05:22 +0000 | |
commit | 953deac03440ef756e7575a835caef3ca89e6876 (patch) | |
tree | 0552c0fe55f7869c75b2263b79bb3abcd1b6a0ef | |
parent | sync (diff) | |
download | wireguard-openbsd-953deac03440ef756e7575a835caef3ca89e6876.tar.xz wireguard-openbsd-953deac03440ef756e7575a835caef3ca89e6876.zip |
fix import for (broken?) ssh.com/f-secure private keys
(i tested > 1000 RSA keys)
-rw-r--r-- | usr.bin/ssh/ssh-keygen.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/usr.bin/ssh/ssh-keygen.c b/usr.bin/ssh/ssh-keygen.c index 5e122aef906..b407dbe12e4 100644 --- a/usr.bin/ssh/ssh-keygen.c +++ b/usr.bin/ssh/ssh-keygen.c @@ -12,7 +12,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: ssh-keygen.c,v 1.63 2001/06/23 15:12:20 itojun Exp $"); +RCSID("$OpenBSD: ssh-keygen.c,v 1.64 2001/06/23 17:05:22 markus Exp $"); #include <openssl/evp.h> #include <openssl/pem.h> @@ -183,9 +183,11 @@ do_convert_private_ssh2_from_blob(char *blob, int blen) { Buffer b; Key *key = NULL; + char *type, *cipher; + u_char *sig, data[10] = "abcde12345"; int magic, rlen, ktype, i1, i2, i3, i4; + u_int slen; u_long e; - char *type, *cipher; buffer_init(&b); buffer_append(&b, blob, blen); @@ -260,16 +262,11 @@ do_convert_private_ssh2_from_blob(char *blob, int blen) error("do_convert_private_ssh2_from_blob: " "remaining bytes in key blob %d", rlen); buffer_free(&b); -#ifdef DEBUG_PK - { - u_int slen; - u_char *sig, data[10] = "abcde12345"; - key_sign(key, &sig, &slen, data, sizeof(data)); - key_verify(key, sig, slen, data, sizeof(data)); - xfree(sig); - } -#endif + /* try the key */ + key_sign(key, &sig, &slen, data, sizeof(data)); + key_verify(key, sig, slen, data, sizeof(data)); + xfree(sig); return key; } @@ -308,6 +305,9 @@ do_convert_from_ssh2(struct passwd *pw) strstr(line, ": ") != NULL) { if (strstr(line, SSH_COM_PRIVATE_BEGIN) != NULL) private = 1; + if (strstr(line, " END ") != NULL) { + break; + } /* fprintf(stderr, "ignore: %s", line); */ continue; } |