version 1.278, 2017/05/01 02:27:11 |
version 1.279, 2017/05/30 08:52:19 |
|
|
|
|
char *client_version_string = NULL; |
char *client_version_string = NULL; |
char *server_version_string = NULL; |
char *server_version_string = NULL; |
Key *previous_host_key = NULL; |
struct sshkey *previous_host_key = NULL; |
|
|
static int matching_host_key_dns = 0; |
static int matching_host_key_dns = 0; |
|
|
|
|
extern uid_t original_real_uid; |
extern uid_t original_real_uid; |
extern uid_t original_effective_uid; |
extern uid_t original_effective_uid; |
|
|
static int show_other_keys(struct hostkeys *, Key *); |
static int show_other_keys(struct hostkeys *, struct sshkey *); |
static void warn_changed_key(Key *); |
static void warn_changed_key(struct sshkey *); |
|
|
/* Expand a proxy command */ |
/* Expand a proxy command */ |
static char * |
static char * |
|
|
} |
} |
|
|
static int |
static int |
check_host_cert(const char *host, const Key *host_key) |
check_host_cert(const char *host, const struct sshkey *host_key) |
{ |
{ |
const char *reason; |
const char *reason; |
|
|
|
|
#define ROQUIET 2 |
#define ROQUIET 2 |
static int |
static int |
check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, |
check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, |
Key *host_key, int readonly, |
struct sshkey *host_key, int readonly, |
char **user_hostfiles, u_int num_user_hostfiles, |
char **user_hostfiles, u_int num_user_hostfiles, |
char **system_hostfiles, u_int num_system_hostfiles) |
char **system_hostfiles, u_int num_system_hostfiles) |
{ |
{ |
HostStatus host_status; |
HostStatus host_status; |
HostStatus ip_status; |
HostStatus ip_status; |
Key *raw_key = NULL; |
struct sshkey *raw_key = NULL; |
char *ip = NULL, *host = NULL; |
char *ip = NULL, *host = NULL; |
char hostline[1000], *hostp, *fp, *ra; |
char hostline[1000], *hostp, *fp, *ra; |
char msg[1024]; |
char msg[1024]; |
|
|
|
|
/* returns 0 if key verifies or -1 if key does NOT verify */ |
/* returns 0 if key verifies or -1 if key does NOT verify */ |
int |
int |
verify_host_key(char *host, struct sockaddr *hostaddr, Key *host_key) |
verify_host_key(char *host, struct sockaddr *hostaddr, struct sshkey *host_key) |
{ |
{ |
u_int i; |
u_int i; |
int r = -1, flags = 0; |
int r = -1, flags = 0; |
|
|
|
|
/* print all known host keys for a given host, but skip keys of given type */ |
/* print all known host keys for a given host, but skip keys of given type */ |
static int |
static int |
show_other_keys(struct hostkeys *hostkeys, Key *key) |
show_other_keys(struct hostkeys *hostkeys, struct sshkey *key) |
{ |
{ |
int type[] = { |
int type[] = { |
KEY_RSA, |
KEY_RSA, |
|
|
} |
} |
|
|
static void |
static void |
warn_changed_key(Key *host_key) |
warn_changed_key(struct sshkey *host_key) |
{ |
{ |
char *fp; |
char *fp; |
|
|
|
|
} |
} |
|
|
void |
void |
maybe_add_key_to_agent(char *authfile, Key *private, char *comment, |
maybe_add_key_to_agent(char *authfile, struct sshkey *private, char *comment, |
char *passphrase) |
char *passphrase) |
{ |
{ |
int auth_sock = -1, r; |
int auth_sock = -1, r; |