|
Lines 979-991
do_gen_all_hostkeys(struct passwd *pw)
Link Here
|
| 979 |
#ifdef WITH_SSH1 |
979 |
#ifdef WITH_SSH1 |
| 980 |
{ "rsa1", "RSA1", _PATH_HOST_KEY_FILE }, |
980 |
{ "rsa1", "RSA1", _PATH_HOST_KEY_FILE }, |
| 981 |
#endif /* WITH_SSH1 */ |
981 |
#endif /* WITH_SSH1 */ |
| 982 |
{ "rsa", "RSA" ,_PATH_HOST_RSA_KEY_FILE }, |
982 |
{ "rsa", "RSA" , _PATH_HOST_RSA_KEY_FILE }, |
| 983 |
{ "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE }, |
983 |
{ "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE }, |
| 984 |
#ifdef OPENSSL_HAS_ECC |
984 |
#ifdef OPENSSL_HAS_ECC |
| 985 |
{ "ecdsa", "ECDSA",_PATH_HOST_ECDSA_KEY_FILE }, |
985 |
{ "ecdsa", "ECDSA", _PATH_HOST_ECDSA_KEY_FILE }, |
| 986 |
#endif /* OPENSSL_HAS_ECC */ |
986 |
#endif /* OPENSSL_HAS_ECC */ |
| 987 |
#endif /* WITH_OPENSSL */ |
987 |
#endif /* WITH_OPENSSL */ |
| 988 |
{ "ed25519", "ED25519",_PATH_HOST_ED25519_KEY_FILE }, |
988 |
{ "ed25519", "ED25519", _PATH_HOST_ED25519_KEY_FILE }, |
| 989 |
{ NULL, NULL, NULL } |
989 |
{ NULL, NULL, NULL } |
| 990 |
}; |
990 |
}; |
| 991 |
|
991 |
|
|
Lines 993-1005
do_gen_all_hostkeys(struct passwd *pw)
Link Here
|
| 993 |
struct stat st; |
993 |
struct stat st; |
| 994 |
struct sshkey *private, *public; |
994 |
struct sshkey *private, *public; |
| 995 |
char comment[1024]; |
995 |
char comment[1024]; |
| 996 |
int i, type, fd, r; |
996 |
int prv_fail, i, type, fd, r; |
| 997 |
FILE *f; |
997 |
FILE *f; |
| 998 |
|
998 |
|
| 999 |
for (i = 0; key_types[i].key_type; i++) { |
999 |
for (i = 0; key_types[i].key_type; i++) { |
| 1000 |
if (stat(key_types[i].path, &st) == 0) |
1000 |
type = sshkey_type_from_name(key_types[i].key_type); |
| 1001 |
continue; |
1001 |
if (stat(key_types[i].path, &st) == 0) { |
| 1002 |
if (errno != ENOENT) { |
1002 |
/* Check for valid public key */ |
|
|
1003 |
prv_fail = 0; |
| 1004 |
if ((r = sshkey_load_public(key_types[i].path, |
| 1005 |
NULL, NULL)) == 0) { |
| 1006 |
if ((r = sshkey_load_private_type(type, |
| 1007 |
key_types[i].path, NULL, NULL, NULL, |
| 1008 |
NULL)) == 0) |
| 1009 |
continue; |
| 1010 |
} |
| 1011 |
if (r == SSH_ERR_SYSTEM_ERROR) { |
| 1012 |
error("Unable to load %s key %s: %s", |
| 1013 |
prv_fail ? "private" : "public", |
| 1014 |
key_types[i].path, ssh_err(r)); |
| 1015 |
first = 0; |
| 1016 |
continue; |
| 1017 |
} |
| 1018 |
debug("%s: load %s %s: %s", __func__, |
| 1019 |
prv_fail ? "private" : "public", |
| 1020 |
key_types[i].path, ssh_err(r)); |
| 1021 |
} else if (errno != ENOENT) { |
| 1003 |
error("Could not stat %s: %s", key_types[i].path, |
1022 |
error("Could not stat %s: %s", key_types[i].path, |
| 1004 |
strerror(errno)); |
1023 |
strerror(errno)); |
| 1005 |
first = 0; |
1024 |
first = 0; |
|
Lines 1012-1018
do_gen_all_hostkeys(struct passwd *pw)
Link Here
|
| 1012 |
} |
1031 |
} |
| 1013 |
printf("%s ", key_types[i].key_type_display); |
1032 |
printf("%s ", key_types[i].key_type_display); |
| 1014 |
fflush(stdout); |
1033 |
fflush(stdout); |
| 1015 |
type = sshkey_type_from_name(key_types[i].key_type); |
|
|
| 1016 |
strlcpy(identity_file, key_types[i].path, sizeof(identity_file)); |
1034 |
strlcpy(identity_file, key_types[i].path, sizeof(identity_file)); |
| 1017 |
bits = 0; |
1035 |
bits = 0; |
| 1018 |
type_bits_valid(type, NULL, &bits); |
1036 |
type_bits_valid(type, NULL, &bits); |