version 1.25.2.2, 2000/09/01 18:23:23 |
version 1.28, 2000/07/07 03:55:04 |
|
|
|
|
#include "ssh.h" |
#include "ssh.h" |
#include "xmalloc.h" |
#include "xmalloc.h" |
|
#include "fingerprint.h" |
#include "key.h" |
#include "key.h" |
#include "rsa.h" |
#include "rsa.h" |
#include "dsa.h" |
#include "dsa.h" |
|
|
void |
void |
do_fingerprint(struct passwd *pw) |
do_fingerprint(struct passwd *pw) |
{ |
{ |
/* XXX RSA1 only */ |
|
|
|
FILE *f; |
FILE *f; |
|
BIGNUM *e, *n; |
Key *public; |
Key *public; |
char *comment = NULL, *cp, *ep, line[16*1024]; |
char *comment = NULL, *cp, *ep, line[16*1024]; |
int i, skip = 0, num = 1, invalid = 1; |
int i, skip = 0, num = 1, invalid = 1; |
|
|
key_free(public); |
key_free(public); |
exit(0); |
exit(0); |
} |
} |
|
key_free(public); |
|
|
|
/* XXX */ |
f = fopen(identity_file, "r"); |
f = fopen(identity_file, "r"); |
if (f != NULL) { |
if (f != NULL) { |
|
n = BN_new(); |
|
e = BN_new(); |
while (fgets(line, sizeof(line), f)) { |
while (fgets(line, sizeof(line), f)) { |
i = strlen(line) - 1; |
i = strlen(line) - 1; |
if (line[i] != '\n') { |
if (line[i] != '\n') { |
|
|
*cp++ = '\0'; |
*cp++ = '\0'; |
} |
} |
ep = cp; |
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; |
invalid = 0; |
comment = *cp ? cp : comment; |
comment = *cp ? cp : comment; |
printf("%d %s %s\n", key_size(public), |
printf("%d %s %s\n", BN_num_bits(n), |
key_fingerprint(public), |
fingerprint(e, n), |
comment ? comment : "no comment"); |
comment ? comment : "no comment"); |
} |
} |
} |
} |
|
BN_free(e); |
|
BN_free(n); |
fclose(f); |
fclose(f); |
} |
} |
key_free(public); |
|
if (invalid) { |
if (invalid) { |
printf("%s is not a valid key file.\n", identity_file); |
printf("%s is not a valid key file.\n", identity_file); |
exit(1); |
exit(1); |
|
|
snprintf(dotsshdir, sizeof dotsshdir, "%s/%s", pw->pw_dir, SSH_USER_DIR); |
snprintf(dotsshdir, sizeof dotsshdir, "%s/%s", pw->pw_dir, SSH_USER_DIR); |
if (strstr(identity_file, dotsshdir) != NULL && |
if (strstr(identity_file, dotsshdir) != NULL && |
stat(dotsshdir, &st) < 0) { |
stat(dotsshdir, &st) < 0) { |
if (mkdir(dotsshdir, 0700) < 0) |
if (mkdir(dotsshdir, 0755) < 0) |
error("Could not create directory '%s'.", dotsshdir); |
error("Could not create directory '%s'.", dotsshdir); |
else if (!quiet) |
else if (!quiet) |
printf("Created directory '%s'.\n", dotsshdir); |
printf("Created directory '%s'.\n", dotsshdir); |