=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/ssh-keygen.c,v retrieving revision 1.25.2.2 retrieving revision 1.26 diff -u -r1.25.2.2 -r1.26 --- src/usr.bin/ssh/ssh-keygen.c 2000/09/01 18:23:23 1.25.2.2 +++ src/usr.bin/ssh/ssh-keygen.c 2000/05/30 17:32:06 1.26 @@ -7,7 +7,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: ssh-keygen.c,v 1.25.2.2 2000/09/01 18:23:23 jason Exp $"); +RCSID("$Id: ssh-keygen.c,v 1.26 2000/05/30 17:32:06 markus Exp $"); #include #include @@ -16,6 +16,7 @@ #include "ssh.h" #include "xmalloc.h" +#include "fingerprint.h" #include "key.h" #include "rsa.h" #include "dsa.h" @@ -122,13 +123,13 @@ exit(1); } dsa_make_key_blob(k, &blob, &len); - fprintf(stdout, "%s\n", SSH_COM_MAGIC_BEGIN); + fprintf(stdout, SSH_COM_MAGIC_BEGIN "\n"); fprintf(stdout, "Comment: \"%d-bit DSA, converted from openssh by %s@%s\"\n", BN_num_bits(k->dsa->p), pw->pw_name, hostname); dump_base64(stdout, blob, len); - fprintf(stdout, "%s\n", SSH_COM_MAGIC_END); + fprintf(stdout, SSH_COM_MAGIC_END "\n"); key_free(k); xfree(blob); exit(0); @@ -223,9 +224,8 @@ void do_fingerprint(struct passwd *pw) { - /* XXX RSA1 only */ - FILE *f; + BIGNUM *e, *n; Key *public; char *comment = NULL, *cp, *ep, line[16*1024]; int i, skip = 0, num = 1, invalid = 1; @@ -245,9 +245,13 @@ key_free(public); exit(0); } + key_free(public); + /* XXX */ f = fopen(identity_file, "r"); if (f != NULL) { + n = BN_new(); + e = BN_new(); while (fgets(line, sizeof(line), f)) { i = strlen(line) - 1; if (line[i] != '\n') { @@ -282,17 +286,18 @@ *cp++ = '\0'; } ep = cp; - if (auth_rsa_read_key(&cp, &ignore, public->rsa->e, public->rsa->n)) { + if (auth_rsa_read_key(&cp, &ignore, e, n)) { invalid = 0; comment = *cp ? cp : comment; - printf("%d %s %s\n", key_size(public), - key_fingerprint(public), + printf("%d %s %s\n", BN_num_bits(n), + fingerprint(e, n), comment ? comment : "no comment"); } } + BN_free(e); + BN_free(n); fclose(f); } - key_free(public); if (invalid) { printf("%s is not a valid key file.\n", identity_file); exit(1); @@ -649,7 +654,7 @@ snprintf(dotsshdir, sizeof dotsshdir, "%s/%s", pw->pw_dir, SSH_USER_DIR); if (strstr(identity_file, dotsshdir) != NULL && stat(dotsshdir, &st) < 0) { - if (mkdir(dotsshdir, 0700) < 0) + if (mkdir(dotsshdir, 0755) < 0) error("Could not create directory '%s'.", dotsshdir); else if (!quiet) printf("Created directory '%s'.\n", dotsshdir);