]> andersk Git - openssh.git/commitdiff
- (bal) Refixed auth2.c. It was never fully commited while spliting out
authormouring <mouring>
Fri, 7 Jun 2002 02:05:25 +0000 (02:05 +0000)
committermouring <mouring>
Fri, 7 Jun 2002 02:05:25 +0000 (02:05 +0000)
        authentication to different files.

ChangeLog
auth2.c

index f5d060e37b9c460e78f3a82c9583524fe14bad5b..a3ecb18afd1d0abecff13f8b0288edadd942a0b9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
  - (bal) Missed msg.[ch] in merge.  Required for ssh-keysign.
  - (bal) Forgot to add msg.c Makefile.in.
  - (bal) monitor_mm.c typos.
+ - (bal) Refixed auth2.c.  It was never fully commited while spliting out
+       authentication to different files.
 
 20020604
  - (stevesk) [channels.c] bug #164 patch from YOSHIFUJI Hideaki (changed
diff --git a/auth2.c b/auth2.c
index c7cc0c64004cc4b0e2094d9f706bc2987b802243..515033f443ed838ded776b2897876c710b5dfc89 100644 (file)
--- a/auth2.c
+++ b/auth2.c
@@ -249,327 +249,6 @@ userauth_finish(Authctxt *authctxt, int authenticated, char *method)
        }
 }
 
-char *
-auth2_read_banner(void)
-{
-       struct stat st;
-       char *banner = NULL;
-       off_t len, n;
-       int fd;
-
-       if ((fd = open(options.banner, O_RDONLY)) == -1)
-               return (NULL);
-       if (fstat(fd, &st) == -1) {
-               close(fd);
-               return (NULL);
-       }
-       len = st.st_size;
-       banner = xmalloc(len + 1);
-       n = atomicio(read, fd, banner, len);
-       close(fd);
-
-       if (n != len) {
-               free(banner);
-               return (NULL);
-       }
-       banner[n] = '\0';
-       
-       return (banner);
-}
-
-static void
-userauth_banner(void)
-{
-       char *banner = NULL;
-
-       if (options.banner == NULL || (datafellows & SSH_BUG_BANNER))
-               return;
-
-       if ((banner = PRIVSEP(auth2_read_banner())) == NULL)
-               goto done;
-
-       packet_start(SSH2_MSG_USERAUTH_BANNER);
-       packet_put_cstring(banner);
-       packet_put_cstring("");         /* language, unused */
-       packet_send();
-       debug("userauth_banner: sent");
-done:
-       if (banner)
-               xfree(banner);
-       return;
-}
-
-static int
-userauth_none(Authctxt *authctxt)
-{
-       /* disable method "none", only allowed one time */
-       Authmethod *m = authmethod_lookup("none");
-       if (m != NULL)
-               m->enabled = NULL;
-       packet_check_eom();
-       userauth_banner();
-
-       if (authctxt->valid == 0)
-               return(0);
-
-#ifdef HAVE_CYGWIN
-       if (check_nt_auth(1, authctxt->pw) == 0)
-               return(0);
-#endif
-       return PRIVSEP(auth_password(authctxt, ""));
-}
-
-static int
-userauth_passwd(Authctxt *authctxt)
-{
-       char *password;
-       int authenticated = 0;
-       int change;
-       u_int len;
-       change = packet_get_char();
-       if (change)
-               log("password change not supported");
-       password = packet_get_string(&len);
-       packet_check_eom();
-       if (authctxt->valid &&
-#ifdef HAVE_CYGWIN
-           check_nt_auth(1, authctxt->pw) &&
-#endif
-           PRIVSEP(auth_password(authctxt, password)) == 1)
-               authenticated = 1;
-       memset(password, 0, len);
-       xfree(password);
-       return authenticated;
-}
-
-static int
-userauth_kbdint(Authctxt *authctxt)
-{
-       int authenticated = 0;
-       char *lang, *devs;
-
-       lang = packet_get_string(NULL);
-       devs = packet_get_string(NULL);
-       packet_check_eom();
-
-       debug("keyboard-interactive devs %s", devs);
-
-       if (options.challenge_response_authentication)
-               authenticated = auth2_challenge(authctxt, devs);
-
-#ifdef USE_PAM
-       if (authenticated == 0 && options.pam_authentication_via_kbd_int)
-               authenticated = auth2_pam(authctxt);
-#endif
-       xfree(devs);
-       xfree(lang);
-#ifdef HAVE_CYGWIN
-       if (check_nt_auth(0, authctxt->pw) == 0)
-               return(0);
-#endif
-       return authenticated;
-}
-
-static int
-userauth_pubkey(Authctxt *authctxt)
-{
-       Buffer b;
-       Key *key = NULL;
-       char *pkalg;
-       u_char *pkblob, *sig;
-       u_int alen, blen, slen;
-       int have_sig, pktype;
-       int authenticated = 0;
-
-       if (!authctxt->valid) {
-               debug2("userauth_pubkey: disabled because of invalid user");
-               return 0;
-       }
-       have_sig = packet_get_char();
-       if (datafellows & SSH_BUG_PKAUTH) {
-               debug2("userauth_pubkey: SSH_BUG_PKAUTH");
-               /* no explicit pkalg given */
-               pkblob = packet_get_string(&blen);
-               buffer_init(&b);
-               buffer_append(&b, pkblob, blen);
-               /* so we have to extract the pkalg from the pkblob */
-               pkalg = buffer_get_string(&b, &alen);
-               buffer_free(&b);
-       } else {
-               pkalg = packet_get_string(&alen);
-               pkblob = packet_get_string(&blen);
-       }
-       pktype = key_type_from_name(pkalg);
-       if (pktype == KEY_UNSPEC) {
-               /* this is perfectly legal */
-               log("userauth_pubkey: unsupported public key algorithm: %s",
-                   pkalg);
-               goto done;
-       }
-       key = key_from_blob(pkblob, blen);
-       if (key == NULL) {
-               error("userauth_pubkey: cannot decode key: %s", pkalg);
-               goto done;
-       }
-       if (key->type != pktype) {
-               error("userauth_pubkey: type mismatch for decoded key "
-                   "(received %d, expected %d)", key->type, pktype);
-               goto done;
-       }
-       if (have_sig) {
-               sig = packet_get_string(&slen);
-               packet_check_eom();
-               buffer_init(&b);
-               if (datafellows & SSH_OLD_SESSIONID) {
-                       buffer_append(&b, session_id2, session_id2_len);
-               } else {
-                       buffer_put_string(&b, session_id2, session_id2_len);
-               }
-               /* reconstruct packet */
-               buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST);
-               buffer_put_cstring(&b, authctxt->user);
-               buffer_put_cstring(&b,
-                   datafellows & SSH_BUG_PKSERVICE ?
-                   "ssh-userauth" :
-                   authctxt->service);
-               if (datafellows & SSH_BUG_PKAUTH) {
-                       buffer_put_char(&b, have_sig);
-               } else {
-                       buffer_put_cstring(&b, "publickey");
-                       buffer_put_char(&b, have_sig);
-                       buffer_put_cstring(&b, pkalg);
-               }
-               buffer_put_string(&b, pkblob, blen);
-#ifdef DEBUG_PK
-               buffer_dump(&b);
-#endif
-               /* test for correct signature */
-               authenticated = 0;
-               if (PRIVSEP(user_key_allowed(authctxt->pw, key)) &&
-                   PRIVSEP(key_verify(key, sig, slen, buffer_ptr(&b),
-                               buffer_len(&b))) == 1)
-                       authenticated = 1;
-               buffer_clear(&b);
-               xfree(sig);
-       } else {
-               debug("test whether pkalg/pkblob are acceptable");
-               packet_check_eom();
-
-               /* XXX fake reply and always send PK_OK ? */
-               /*
-                * XXX this allows testing whether a user is allowed
-                * to login: if you happen to have a valid pubkey this
-                * message is sent. the message is NEVER sent at all
-                * if a user is not allowed to login. is this an
-                * issue? -markus
-                */
-               if (PRIVSEP(user_key_allowed(authctxt->pw, key))) {
-                       packet_start(SSH2_MSG_USERAUTH_PK_OK);
-                       packet_put_string(pkalg, alen);
-                       packet_put_string(pkblob, blen);
-                       packet_send();
-                       packet_write_wait();
-                       authctxt->postponed = 1;
-               }
-       }
-       if (authenticated != 1)
-               auth_clear_options();
-done:
-       debug2("userauth_pubkey: authenticated %d pkalg %s", authenticated, pkalg);
-       if (key != NULL)
-               key_free(key);
-       xfree(pkalg);
-       xfree(pkblob);
-#ifdef HAVE_CYGWIN
-       if (check_nt_auth(0, authctxt->pw) == 0)
-               return(0);
-#endif
-       return authenticated;
-}
-
-static int
-userauth_hostbased(Authctxt *authctxt)
-{
-       Buffer b;
-       Key *key = NULL;
-       char *pkalg, *cuser, *chost, *service;
-       u_char *pkblob, *sig;
-       u_int alen, blen, slen;
-       int pktype;
-       int authenticated = 0;
-
-       if (!authctxt->valid) {
-               debug2("userauth_hostbased: disabled because of invalid user");
-               return 0;
-       }
-       pkalg = packet_get_string(&alen);
-       pkblob = packet_get_string(&blen);
-       chost = packet_get_string(NULL);
-       cuser = packet_get_string(NULL);
-       sig = packet_get_string(&slen);
-
-       debug("userauth_hostbased: cuser %s chost %s pkalg %s slen %d",
-           cuser, chost, pkalg, slen);
-#ifdef DEBUG_PK
-       debug("signature:");
-       buffer_init(&b);
-       buffer_append(&b, sig, slen);
-       buffer_dump(&b);
-       buffer_free(&b);
-#endif
-       pktype = key_type_from_name(pkalg);
-       if (pktype == KEY_UNSPEC) {
-               /* this is perfectly legal */
-               log("userauth_hostbased: unsupported "
-                   "public key algorithm: %s", pkalg);
-               goto done;
-       }
-       key = key_from_blob(pkblob, blen);
-       if (key == NULL) {
-               error("userauth_hostbased: cannot decode key: %s", pkalg);
-               goto done;
-       }
-       if (key->type != pktype) {
-               error("userauth_hostbased: type mismatch for decoded key "
-                   "(received %d, expected %d)", key->type, pktype);
-               goto done;
-       }
-       service = datafellows & SSH_BUG_HBSERVICE ? "ssh-userauth" :
-           authctxt->service;
-       buffer_init(&b);
-       buffer_put_string(&b, session_id2, session_id2_len);
-       /* reconstruct packet */
-       buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST);
-       buffer_put_cstring(&b, authctxt->user);
-       buffer_put_cstring(&b, service);
-       buffer_put_cstring(&b, "hostbased");
-       buffer_put_string(&b, pkalg, alen);
-       buffer_put_string(&b, pkblob, blen);
-       buffer_put_cstring(&b, chost);
-       buffer_put_cstring(&b, cuser);
-#ifdef DEBUG_PK
-       buffer_dump(&b);
-#endif
-       /* test for allowed key and correct signature */
-       authenticated = 0;
-       if (PRIVSEP(hostbased_key_allowed(authctxt->pw, cuser, chost, key)) &&
-           PRIVSEP(key_verify(key, sig, slen, buffer_ptr(&b),
-                       buffer_len(&b))) == 1)
-               authenticated = 1;
-
-       buffer_clear(&b);
-done:
-       debug2("userauth_hostbased: authenticated %d", authenticated);
-       if (key != NULL)
-               key_free(key);
-       xfree(pkalg);
-       xfree(pkblob);
-       xfree(cuser);
-       xfree(chost);
-       xfree(sig);
-       return authenticated;
-}
-
 /* get current user */
 
 struct passwd*
This page took 0.055008 seconds and 5 git commands to generate.