Lines Matching refs:authctxt

98 static char *authmethods_get(Authctxt *authctxt);
174 Authctxt *authctxt = ssh->authctxt; in do_authentication2() local
180 ssh_dispatch_run_fatal(ssh, DISPATCH_BLOCK, &authctxt->success); in do_authentication2()
181 ssh->authctxt = NULL; in do_authentication2()
187 Authctxt *authctxt = ssh->authctxt; in input_service_request() local
195 if (authctxt == NULL) in input_service_request()
199 if (!authctxt->success) { in input_service_request()
272 Authctxt *authctxt = ssh->authctxt; in input_userauth_request() local
278 if (authctxt == NULL) in input_userauth_request()
286 debug("attempt %d failures %d", authctxt->attempt, authctxt->failures); in input_userauth_request()
291 if (authctxt->attempt >= 1024) in input_userauth_request()
293 if (authctxt->attempt++ == 0) { in input_userauth_request()
295 authctxt->pw = mm_getpwnamallow(ssh, user); in input_userauth_request()
296 authctxt->user = xstrdup(user); in input_userauth_request()
297 if (authctxt->pw && strcmp(service, "ssh-connection")==0) { in input_userauth_request()
298 authctxt->valid = 1; in input_userauth_request()
301 authctxt->valid = 0; in input_userauth_request()
303 authctxt->pw = fakepw(); in input_userauth_request()
313 authctxt->valid ? "authenticating " : "invalid ", user); in input_userauth_request()
314 setproctitle("%s [net]", authctxt->valid ? user : "unknown"); in input_userauth_request()
315 authctxt->service = xstrdup(service); in input_userauth_request()
316 authctxt->style = style ? xstrdup(style) : NULL; in input_userauth_request()
321 if (auth2_setup_methods_lists(authctxt) != 0) in input_userauth_request()
324 } else if (strcmp(user, authctxt->user) != 0 || in input_userauth_request()
325 strcmp(service, authctxt->service) != 0) { in input_userauth_request()
328 authctxt->user, authctxt->service, user, service); in input_userauth_request()
339 auth2_authctxt_reset_info(authctxt); in input_userauth_request()
340 authctxt->postponed = 0; in input_userauth_request()
341 authctxt->server_caused_failure = 0; in input_userauth_request()
344 m = authmethod_lookup(authctxt, method); in input_userauth_request()
345 if (m != NULL && authctxt->failures < options.max_authtries) { in input_userauth_request()
349 if (!authctxt->authenticated && strcmp(method, "none") != 0) in input_userauth_request()
351 user_specific_delay(authctxt->user)); in input_userauth_request()
365 Authctxt *authctxt = ssh->authctxt; in userauth_finish() local
372 if (!authctxt->valid) { in userauth_finish()
374 authctxt->user); in userauth_finish()
376 if (authctxt->postponed) in userauth_finish()
385 if (authenticated && authctxt->pw->pw_uid == 0 && in userauth_finish()
394 if (!auth2_update_methods_lists(authctxt, method, submethod)) { in userauth_finish()
405 auth2_update_session_info(authctxt, method, submethod); in userauth_finish()
407 if (authctxt->postponed) in userauth_finish()
427 "configuration", authctxt->user); in userauth_finish()
441 authctxt->success = 1; in userauth_finish()
442 ssh_packet_set_log_preamble(ssh, "user %s", authctxt->user); in userauth_finish()
445 if (!partial && !authctxt->server_caused_failure && in userauth_finish()
446 (authctxt->attempt > 1 || strcmp(method, "none") != 0)) { in userauth_finish()
447 authctxt->failures++; in userauth_finish()
450 if (authctxt->failures >= options.max_authtries) { in userauth_finish()
456 methods = authmethods_get(authctxt); in userauth_finish()
475 auth2_method_allowed(Authctxt *authctxt, const char *method, in auth2_method_allowed() argument
486 for (i = 0; i < authctxt->num_auth_methods; i++) { in auth2_method_allowed()
487 if (list_starts_with(authctxt->auth_methods[i], method, in auth2_method_allowed()
495 authmethods_get(Authctxt *authctxt) in authmethods_get() argument
509 if (!auth2_method_allowed(authctxt, authmethods[i]->cfg->name, in authmethods_get()
540 authmethod_lookup(Authctxt *authctxt, const char *name) in authmethod_lookup() argument
551 if (!auth2_method_allowed(authctxt, method->cfg->name, NULL)) { in authmethod_lookup()
567 auth2_setup_methods_lists(Authctxt *authctxt) in auth2_setup_methods_lists() argument
582 authctxt->auth_methods = xcalloc(options.num_auth_methods, in auth2_setup_methods_lists()
583 sizeof(*authctxt->auth_methods)); in auth2_setup_methods_lists()
584 authctxt->num_auth_methods = 0; in auth2_setup_methods_lists()
593 authctxt->num_auth_methods, options.auth_methods[i]); in auth2_setup_methods_lists()
594 authctxt->auth_methods[authctxt->num_auth_methods++] = in auth2_setup_methods_lists()
597 if (authctxt->num_auth_methods == 0) { in auth2_setup_methods_lists()
664 auth2_update_methods_lists(Authctxt *authctxt, const char *method, in auth2_update_methods_lists() argument
670 for (i = 0; i < authctxt->num_auth_methods; i++) { in auth2_update_methods_lists()
671 if (!remove_method(&(authctxt->auth_methods[i]), method, in auth2_update_methods_lists()
675 if (*authctxt->auth_methods[i] == '\0') { in auth2_update_methods_lists()
680 i, authctxt->auth_methods[i]); in auth2_update_methods_lists()
689 void auth2_authctxt_reset_info(Authctxt *authctxt) in auth2_authctxt_reset_info() argument
691 sshkey_free(authctxt->auth_method_key); in auth2_authctxt_reset_info()
692 free(authctxt->auth_method_info); in auth2_authctxt_reset_info()
693 authctxt->auth_method_key = NULL; in auth2_authctxt_reset_info()
694 authctxt->auth_method_info = NULL; in auth2_authctxt_reset_info()
699 auth2_record_info(Authctxt *authctxt, const char *fmt, ...) in auth2_record_info() argument
704 free(authctxt->auth_method_info); in auth2_record_info()
705 authctxt->auth_method_info = NULL; in auth2_record_info()
708 i = vasprintf(&authctxt->auth_method_info, fmt, ap); in auth2_record_info()
721 auth2_record_key(Authctxt *authctxt, int authenticated, in auth2_record_key() argument
729 sshkey_free(authctxt->auth_method_key); in auth2_record_key()
730 authctxt->auth_method_key = dup; in auth2_record_key()
738 if (authctxt->nprev_keys >= INT_MAX || in auth2_record_key()
739 (tmp = recallocarray(authctxt->prev_keys, authctxt->nprev_keys, in auth2_record_key()
740 authctxt->nprev_keys + 1, sizeof(*authctxt->prev_keys))) == NULL) in auth2_record_key()
742 authctxt->prev_keys = tmp; in auth2_record_key()
743 authctxt->prev_keys[authctxt->nprev_keys] = dup; in auth2_record_key()
744 authctxt->nprev_keys++; in auth2_record_key()
750 auth2_key_already_used(Authctxt *authctxt, const struct sshkey *key) in auth2_key_already_used() argument
755 for (i = 0; i < authctxt->nprev_keys; i++) { in auth2_key_already_used()
756 if (sshkey_equal_public(key, authctxt->prev_keys[i])) { in auth2_key_already_used()
757 fp = sshkey_fingerprint(authctxt->prev_keys[i], in auth2_key_already_used()
760 sshkey_type(authctxt->prev_keys[i]), in auth2_key_already_used()
774 auth2_update_session_info(Authctxt *authctxt, const char *method, in auth2_update_session_info() argument
779 if (authctxt->session_info == NULL) { in auth2_update_session_info()
780 if ((authctxt->session_info = sshbuf_new()) == NULL) in auth2_update_session_info()
785 if ((r = sshbuf_putf(authctxt->session_info, "%s%s%s", in auth2_update_session_info()
791 if (authctxt->auth_method_key != NULL) { in auth2_update_session_info()
792 if ((r = sshbuf_put_u8(authctxt->session_info, ' ')) != 0 || in auth2_update_session_info()
793 (r = sshkey_format_text(authctxt->auth_method_key, in auth2_update_session_info()
794 authctxt->session_info)) != 0) in auth2_update_session_info()
798 if (authctxt->auth_method_info != NULL) { in auth2_update_session_info()
800 if (strchr(authctxt->auth_method_info, '\n') != NULL) in auth2_update_session_info()
802 if ((r = sshbuf_put_u8(authctxt->session_info, ' ')) != 0 || in auth2_update_session_info()
803 (r = sshbuf_putf(authctxt->session_info, "%s", in auth2_update_session_info()
804 authctxt->auth_method_info)) != 0) { in auth2_update_session_info()
808 if ((r = sshbuf_put_u8(authctxt->session_info, '\n')) != 0) in auth2_update_session_info()