]> andersk Git - openssh.git/blobdiff - auth.h
- djm@cvs.openbsd.org 2010/01/30 02:54:53
[openssh.git] / auth.h
diff --git a/auth.h b/auth.h
index c7175405d83d3e165c0ad95592575267f5ff4c85..bebfb672dec4d7ee90f741e72c4b868995cb48d8 100644 (file)
--- a/auth.h
+++ b/auth.h
@@ -1,4 +1,4 @@
-/*     $OpenBSD: auth.h,v 1.29 2002/03/04 17:27:39 stevesk Exp $       */
+/* $OpenBSD: auth.h,v 1.63 2009/08/15 18:56:34 fgsch Exp $ */
 
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -28,8 +28,8 @@
 #ifndef AUTH_H
 #define AUTH_H
 
-#include "key.h"
-#include "hostfile.h"
+#include <signal.h>
+
 #include <openssl/rsa.h>
 
 #ifdef HAVE_LOGIN_CAP
 #endif
 
 typedef struct Authctxt Authctxt;
+typedef struct Authmethod Authmethod;
 typedef struct KbdintDevice KbdintDevice;
 
 struct Authctxt {
-       int              success;
-       int              postponed;
-       int              valid;
+       sig_atomic_t     success;
+       int              authenticated; /* authenticated and alarms cancelled */
+       int              postponed;     /* authentication needs another step */
+       int              valid;         /* user exists and is allowed to login */
        int              attempt;
        int              failures;
-       char            *user;
+       int              force_pwchange;
+       char            *user;          /* username sent by the client */
        char            *service;
-       struct passwd   *pw;
+       struct passwd   *pw;            /* set if 'valid' */
        char            *style;
        void            *kbdintctxt;
+       void            *jpake_ctx;
 #ifdef BSD_AUTH
        auth_session_t  *as;
 #endif
-#ifdef KRB4
-       char            *krb4_ticket_file;
-#endif
 #ifdef KRB5
        krb5_context     krb5_ctx;
-       krb5_auth_context krb5_auth_ctx;
        krb5_ccache      krb5_fwd_ccache;
        krb5_principal   krb5_user;
        char            *krb5_ticket_file;
+       char            *krb5_ccname;
 #endif
+       Buffer          *loginmsg;
+       void            *methoddata;
+};
+/*
+ * Every authentication method has to handle authentication requests for
+ * non-existing users, or for users that are not allowed to login. In this
+ * case 'valid' is set to 0, but 'user' points to the username requested by
+ * the client.
+ */
+
+struct Authmethod {
+       char    *name;
+       int     (*userauth)(Authctxt *authctxt);
+       int     *enabled;
 };
 
 /*
@@ -88,70 +103,100 @@ struct KbdintDevice
        void    (*free_ctx)(void *ctx);
 };
 
-int     auth_rhosts(struct passwd *, const char *);
+int      auth_rhosts(struct passwd *, const char *);
 int
 auth_rhosts2(struct passwd *, const char *, const char *, const char *);
 
-int     auth_rhosts_rsa(struct passwd *, const char *, Key *);
+int     auth_rhosts_rsa(Authctxt *, char *, Key *);
 int      auth_password(Authctxt *, const char *);
-int      auth_rsa(struct passwd *, BIGNUM *);
-int      auth_rsa_challenge_dialog(RSA *);
+int      auth_rsa(Authctxt *, BIGNUM *);
+int      auth_rsa_challenge_dialog(Key *);
+BIGNUM *auth_rsa_generate_challenge(Key *);
+int     auth_rsa_verify_response(Key *, BIGNUM *, u_char[]);
+int     auth_rsa_key_allowed(struct passwd *, BIGNUM *, Key **);
 
-#ifdef KRB4
-#include <krb.h>
-int     auth_krb4(Authctxt *, KTEXT, char **);
-int    auth_krb4_password(Authctxt *, const char *);
-void    krb4_cleanup_proc(void *);
-
-#ifdef AFS
-#include <kafs.h>
-int     auth_krb4_tgt(Authctxt *, const char *);
-int     auth_afs_token(Authctxt *, const char *);
-#endif /* AFS */
-
-#endif /* KRB4 */
+int     auth_rhosts_rsa_key_allowed(struct passwd *, char *, char *, Key *);
+int     hostbased_key_allowed(struct passwd *, const char *, char *, Key *);
+int     user_key_allowed(struct passwd *, Key *);
 
 #ifdef KRB5
-int    auth_krb5(Authctxt *authctxt, krb5_data *auth, char **client);
+int    auth_krb5(Authctxt *authctxt, krb5_data *auth, char **client, krb5_data *);
 int    auth_krb5_tgt(Authctxt *authctxt, krb5_data *tgt);
 int    auth_krb5_password(Authctxt *authctxt, const char *password);
-void   krb5_cleanup_proc(void *authctxt);
+void   krb5_cleanup_proc(Authctxt *authctxt);
 #endif /* KRB5 */
 
+#if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE)
+#include <shadow.h>
+int auth_shadow_acctexpired(struct spwd *);
+int auth_shadow_pwexpired(Authctxt *);
+#endif
+
 #include "auth-pam.h"
-#include "auth2-pam.h"
+#include "audit.h"
+void remove_kbdint_device(const char *);
+
+void disable_forwarding(void);
 
-void   do_authentication(void);
-void   do_authentication2(void);
+void   do_authentication(Authctxt *);
+void   do_authentication2(Authctxt *);
 
-Authctxt *authctxt_new(void);
 void   auth_log(Authctxt *, int, char *, char *);
 void   userauth_finish(Authctxt *, int, char *);
+void   userauth_send_banner(const char *);
 int    auth_root_allowed(char *);
 
+char   *auth2_read_banner(void);
+
+void   privsep_challenge_enable(void);
+
 int    auth2_challenge(Authctxt *, char *);
 void   auth2_challenge_stop(Authctxt *);
+int    bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **);
+int    bsdauth_respond(void *, u_int, char **);
+int    skey_query(void *, char **, char **, u_int *, char ***, u_int **);
+int    skey_respond(void *, u_int, char **);
+
+void   auth2_jpake_get_pwdata(Authctxt *, BIGNUM **, char **, char **);
+void   auth2_jpake_stop(Authctxt *);
 
 int    allowed_user(struct passwd *);
+struct passwd * getpwnamallow(const char *user);
 
 char   *get_challenge(Authctxt *);
 int    verify_response(Authctxt *, const char *);
+void   abandon_challenge_response(Authctxt *);
 
-struct passwd * auth_get_user(void);
-
-char   *expand_filename(const char *, struct passwd *);
 char   *authorized_keys_file(struct passwd *);
 char   *authorized_keys_file2(struct passwd *);
 
-int
-secure_filename(FILE *, const char *, struct passwd *, char *, size_t);
+FILE   *auth_openkeyfile(const char *, struct passwd *, int);
 
 HostStatus
 check_key_in_hostfiles(struct passwd *, Key *, const char *,
     const char *, const char *);
 
-#define AUTH_FAIL_MAX 6
-#define AUTH_FAIL_LOG (AUTH_FAIL_MAX/2)
+/* hostkey handling */
+Key    *get_hostkey_by_index(int);
+Key    *get_hostkey_by_type(int);
+int     get_hostkey_index(Key *);
+int     ssh1_session_key(BIGNUM *);
+
+/* debug messages during authentication */
+void    auth_debug_add(const char *fmt,...) __attribute__((format(printf, 1, 2)));
+void    auth_debug_send(void);
+void    auth_debug_reset(void);
+
+struct passwd *fakepw(void);
+
+int     sys_auth_passwd(Authctxt *, const char *);
+
 #define AUTH_FAIL_MSG "Too many authentication failures for %.100s"
 
+#define SKEY_PROMPT "\nS/Key Password: "
+
+#if defined(KRB5) && !defined(HEIMDAL)
+#include <krb5.h>
+krb5_error_code ssh_krb5_cc_gen(krb5_context, krb5_ccache *);
+#endif
 #endif
This page took 0.229719 seconds and 4 git commands to generate.