version 1.366.4.1, 2023/12/18 14:57:43 |
version 1.367, 2023/08/01 08:15:04 |
|
|
}; |
}; |
|
|
static int input_userauth_service_accept(int, u_int32_t, struct ssh *); |
static int input_userauth_service_accept(int, u_int32_t, struct ssh *); |
|
static int input_userauth_ext_info(int, u_int32_t, struct ssh *); |
static int input_userauth_success(int, u_int32_t, struct ssh *); |
static int input_userauth_success(int, u_int32_t, struct ssh *); |
static int input_userauth_failure(int, u_int32_t, struct ssh *); |
static int input_userauth_failure(int, u_int32_t, struct ssh *); |
static int input_userauth_banner(int, u_int32_t, struct ssh *); |
static int input_userauth_banner(int, u_int32_t, struct ssh *); |
|
|
|
|
ssh->authctxt = &authctxt; |
ssh->authctxt = &authctxt; |
ssh_dispatch_init(ssh, &input_userauth_error); |
ssh_dispatch_init(ssh, &input_userauth_error); |
ssh_dispatch_set(ssh, SSH2_MSG_EXT_INFO, kex_input_ext_info); |
ssh_dispatch_set(ssh, SSH2_MSG_EXT_INFO, &input_userauth_ext_info); |
ssh_dispatch_set(ssh, SSH2_MSG_SERVICE_ACCEPT, &input_userauth_service_accept); |
ssh_dispatch_set(ssh, SSH2_MSG_SERVICE_ACCEPT, &input_userauth_service_accept); |
ssh_dispatch_run_fatal(ssh, DISPATCH_BLOCK, &authctxt.success); /* loop until success */ |
ssh_dispatch_run_fatal(ssh, DISPATCH_BLOCK, &authctxt.success); /* loop until success */ |
pubkey_cleanup(ssh); |
pubkey_cleanup(ssh); |
|
|
return r; |
return r; |
} |
} |
|
|
|
static int |
|
input_userauth_ext_info(int type, u_int32_t seqnr, struct ssh *ssh) |
|
{ |
|
return kex_input_ext_info(type, seqnr, ssh); |
|
} |
|
|
void |
void |
userauth(struct ssh *ssh, char *authlist) |
userauth(struct ssh *ssh, char *authlist) |
{ |
{ |
|
|
free(authctxt->methoddata); |
free(authctxt->methoddata); |
authctxt->methoddata = NULL; |
authctxt->methoddata = NULL; |
authctxt->success = 1; /* break out */ |
authctxt->success = 1; /* break out */ |
ssh_dispatch_set(ssh, SSH2_MSG_EXT_INFO, dispatch_protocol_error); |
|
return 0; |
return 0; |
} |
} |
|
|
|
|
* private key instead |
* private key instead |
*/ |
*/ |
if (id->key != NULL) { |
if (id->key != NULL) { |
if (id->key != NULL) { |
ident = format_identity(id); |
ident = format_identity(id); |
debug("Offering public key: %s", ident); |
debug("Offering public key: %s", ident); |
free(ident); |
free(ident); |
sent = send_pubkey_test(ssh, id); |
sent = send_pubkey_test(ssh, id); |
|
} |
|
} else { |
} else { |
debug("Trying private key: %s", id->filename); |
debug("Trying private key: %s", id->filename); |
id->key = load_identity_file(id); |
id->key = load_identity_file(id); |