Remove rsaencpwd and krb4encpwd authentication. Bugs were being
authorSam Hartman <hartmans@mit.edu>
Mon, 14 Oct 1996 04:58:19 +0000 (04:58 +0000)
committerSam Hartman <hartmans@mit.edu>
Mon, 14 Oct 1996 04:58:19 +0000 (04:58 +0000)
reported and the code is old and wouldn't compile if you tried.  Also,
I don't think the libraries on which it depends are available.
Besides, there is no excuse for read_password.c using setjmp and
longjmp. [50]

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@9162 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/telnet/libtelnet/.Sanitize
src/appl/telnet/libtelnet/ChangeLog
src/appl/telnet/libtelnet/Makefile.in
src/appl/telnet/libtelnet/auth.c
src/appl/telnet/libtelnet/krb4encpwd.c [deleted file]
src/appl/telnet/libtelnet/read_password.c [deleted file]
src/appl/telnet/libtelnet/rsaencpwd.c [deleted file]

index 35ba8d9ecff585f383353d6ef54935a15b0f9104..a5a5333d8f9081f5daea331e4fb6fe84e2c50a23 100644 (file)
@@ -48,14 +48,11 @@ herror.c
 kerberos.c
 kerberos5.c
 key-proto.h
-krb4encpwd.c
 mem.c
 misc-proto.h
 misc.c
 misc.h
 parsetos.c
-read_password.c
-rsaencpwd.c
 setenv.c
 setsid.c
 spx.c
index 7da90002ffb42c6ecb293143c3f8324d0a5b0dc5..ed46c71ff054db343bd42b4139fb74477cc27219 100644 (file)
@@ -1,3 +1,11 @@
+Mon Oct 14 00:21:08 1996  Sam Hartman  <hartmans@mit.edu>
+
+       * Makefile.in (OBJS): Remove rsaencpwd aned krb4encpwd stuff as
+       well as associated read_password [50]
+
+       * auth.c krb4encpwd.c Makefile.in: Remove krb4encpwd [50]
+       While we're at it, remove rsaencpwd as well.
+
 Tue Jul  9 14:59:19 1996  Marc Horowitz  <marc@mit.edu>
 
        * Makefile.in (LOCALINCLUDES): use @KRB4_INCLUDES@ instead of an
index d3e9eb5a6109ab3c430701d8242d38b684b911d7..05fffc70edac0f80d8e5517de3e36b640ea36eda 100644 (file)
@@ -35,9 +35,6 @@ SRCS=   $(srcdir)/auth.c \
        $(srcdir)/forward.c \
        $(srcdir)/spx.c \
        $(srcdir)/enc_des.c \
-       $(srcdir)/rsaencpwd.c \
-       $(srcdir)/krb4encpwd.c \
-       $(srcdir)/read_password.c \
        $(srcdir)/setenv.c \
        $(srcdir)/getent.c \
        $(srcdir)/strdup.c \
@@ -49,7 +46,6 @@ SRCS=   $(srcdir)/auth.c \
 
 OBJS=   auth.o encrypt.o genget.o \
        misc.o kerberos.o kerberos5.o forward.o spx.o enc_des.o \
-       rsaencpwd.o krb4encpwd.o read_password.o \
        $(LIBOBJS)
 
 TELNET_H= $(srcdir)/../arpa/telnet.h
index 50a6ae79faea4fd5de2db47e7ec8a68f7d8b06af..428613566a5d2a27328ed116045e5d6186e44a63 100644 (file)
 
 #define        typemask(x)             (1<<((x)-1))
 
-#ifdef KRB4_ENCPWD
-extern krb4encpwd_init();
-extern krb4encpwd_send();
-extern krb4encpwd_is();
-extern krb4encpwd_reply();
-extern krb4encpwd_status();
-extern krb4encpwd_printsub();
-#endif
 
-#ifdef RSA_ENCPWD
-extern rsaencpwd_init();
-extern rsaencpwd_send();
-extern rsaencpwd_is();
-extern rsaencpwd_reply();
-extern rsaencpwd_status();
-extern rsaencpwd_printsub();
-#endif
 
 int auth_debug_mode = 0;
 int auth_has_failed = 0;
@@ -170,24 +154,6 @@ Authenticator authenticators[] = {
                                kerberos4_reply,
                                kerberos4_status,
                                kerberos4_printsub },
-#endif
-#ifdef KRB4_ENCPWD
-       { AUTHTYPE_KRB4_ENCPWD, AUTH_WHO_CLIENT|AUTH_HOW_MUTUAL,
-                               krb4encpwd_init,
-                               krb4encpwd_send,
-                               krb4encpwd_is,
-                               krb4encpwd_reply,
-                               krb4encpwd_status,
-                               krb4encpwd_printsub },
-#endif
-#ifdef RSA_ENCPWD
-       { AUTHTYPE_RSA_ENCPWD, AUTH_WHO_CLIENT|AUTH_HOW_ONE_WAY,
-                               rsaencpwd_init,
-                               rsaencpwd_send,
-                               rsaencpwd_is,
-                               rsaencpwd_reply,
-                               rsaencpwd_status,
-                               rsaencpwd_printsub },
 #endif
        { 0, },
 };
diff --git a/src/appl/telnet/libtelnet/krb4encpwd.c b/src/appl/telnet/libtelnet/krb4encpwd.c
deleted file mode 100644 (file)
index 6632e6e..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* based on @(#)krb4encpwd.c   8.1 (Berkeley) 6/4/93 */
-
-
-#ifdef KRB4_ENCPWD
-/*
- * COPYRIGHT (C) 1990 DIGITAL EQUIPMENT CORPORATION
- * ALL RIGHTS RESERVED
- *
- * "Digital Equipment Corporation authorizes the reproduction,
- * distribution and modification of this software subject to the following
- * restrictions:
- *
- * 1.  Any partial or whole copy of this software, or any modification
- * thereof, must include this copyright notice in its entirety.
- *
- * 2.  This software is supplied "as is" with no warranty of any kind,
- * expressed or implied, for any purpose, including any warranty of fitness
- * or merchantibility.  DIGITAL assumes no responsibility for the use or
- * reliability of this software, nor promises to provide any form of
- * support for it on any basis.
- *
- * 3.  Distribution of this software is authorized only if no profit or
- * remuneration of any kind is received in exchange for such distribution.
- *
- * 4.  This software produces public key authentication certificates
- * bearing an expiration date established by DIGITAL and RSA Data
- * Security, Inc.  It may cease to generate certificates after the expiration
- * date.  Any modification of this software that changes or defeats
- * the expiration date or its effect is unauthorized.
- *
- * 5.  Software that will renew or extend the expiration date of
- * authentication certificates produced by this software may be obtained
- * from RSA Data Security, Inc., 10 Twin Dolphin Drive, Redwood City, CA
- * 94065, (415)595-8782, or from DIGITAL"
- *
- */
-
-#include <sys/types.h>
-#include <arpa/telnet.h>
-#include <pwd.h>
-#include <stdio.h>
-
-#include <des.h>
-#include <krb.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#include "encrypt.h"
-#include "auth.h"
-#include "misc.h"
-
-int krb_mk_encpwd_req P((KTEXT, char *, char *, char *, char *, char *, char *));
-int krb_rd_encpwd_req P((KTEXT, char *, char *, u_long, AUTH_DAT *, char *, char *, char *, char *));
-
-extern auth_debug_mode;
-
-static unsigned char str_data[1024] = { IAC, SB, TELOPT_AUTHENTICATION, 0,
-                                       AUTHTYPE_KRB4_ENCPWD, };
-static unsigned char str_name[1024] = { IAC, SB, TELOPT_AUTHENTICATION,
-                                       TELQUAL_NAME, };
-
-#define        KRB4_ENCPWD_AUTH        0       /* Authentication data follows */
-#define        KRB4_ENCPWD_REJECT      1       /* Rejected (reason might follow) */
-#define KRB4_ENCPWD_ACCEPT     2       /* Accepted */
-#define        KRB4_ENCPWD_CHALLENGE   3       /* Challenge for mutual auth. */
-#define        KRB4_ENCPWD_ACK         4       /* Acknowledge */
-
-#define KRB_SERVICE_NAME    "rcmd"
-
-static KTEXT_ST auth;
-static char name[ANAME_SZ];
-static char user_passwd[ANAME_SZ];
-static AUTH_DAT adat = { 0 };
-#ifdef ENCRYPTION
-static Block   session_key     = { 0 };
-#endif /* ENCRYPTION */
-static Schedule sched;
-static char  challenge[REALM_SZ];
-
-       static int
-Data(ap, type, d, c)
-       Authenticator *ap;
-       int type;
-       void *d;
-       int c;
-{
-        unsigned char *p = str_data + 4;
-       unsigned char *cd = (unsigned char *)d;
-
-       if (c == -1)
-               c = strlen((char *)cd);
-
-        if (0) {
-                printf("%s:%d: [%d] (%d)",
-                        str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
-                        str_data[3],
-                        type, c);
-                printd(d, c);
-                printf("\r\n");
-        }
-       *p++ = ap->type;
-       *p++ = ap->way;
-       *p++ = type;
-        while (c-- > 0) {
-                if ((*p++ = *cd++) == IAC)
-                        *p++ = IAC;
-        }
-        *p++ = IAC;
-        *p++ = SE;
-       if (str_data[3] == TELQUAL_IS)
-               printsub('>', &str_data[2], p - (&str_data[2]));
-        return(net_write(str_data, p - str_data));
-}
-
-       int
-krb4encpwd_init(ap, server)
-       Authenticator *ap;
-       int server;
-{
-        char hostname[80], *cp, *realm;
-       C_Block skey;
-
-       if (server) {
-               str_data[3] = TELQUAL_REPLY;
-       } else {
-               str_data[3] = TELQUAL_IS;
-               gethostname(hostname, sizeof(hostname));
-               realm = krb_realmofhost(hostname);
-               cp = index(hostname, '.');
-               if (*cp != NULL) *cp = NULL;
-               if (read_service_key(KRB_SERVICE_NAME, hostname, realm, 0,
-                                       KEYFILE, (char *)skey)) {
-                 return(0);
-               }
-       }
-       return(1);
-}
-
-       int
-krb4encpwd_send(ap)
-       Authenticator *ap;
-{
-
-       printf("[ Trying KRB4ENCPWD ... ]\n");
-       if (!UserNameRequested) {
-               return(0);
-       }
-       if (!auth_sendname(UserNameRequested, strlen(UserNameRequested))) {
-               return(0);
-       }
-
-       if (!Data(ap, KRB4_ENCPWD_ACK, (void *)NULL, 0)) {
-               return(0);
-       }
-
-       return(1);
-}
-
-       void
-krb4encpwd_is(ap, data, cnt)
-       Authenticator *ap;
-       unsigned char *data;
-       int cnt;
-{
-       Session_Key skey;
-       Block datablock;
-       char  r_passwd[ANAME_SZ], r_user[ANAME_SZ];
-       char  lhostname[ANAME_SZ], *cp;
-       int r;
-       time_t now;
-
-       if (cnt-- < 1)
-               return;
-       switch (*data++) {
-       case KRB4_ENCPWD_AUTH:
-               memcpy((void *)auth.dat, (void *)data, auth.length = cnt);
-
-               gethostname(lhostname, sizeof(lhostname));
-               if ((cp = index(lhostname, '.')) != 0)  *cp = '\0';
-
-               if (r = krb_rd_encpwd_req(&auth, KRB_SERVICE_NAME, lhostname, 0, &adat, NULL, challenge, r_user, r_passwd)) {
-                       Data(ap, KRB4_ENCPWD_REJECT, (void *)"Auth failed", -1);
-                       auth_finished(ap, AUTH_REJECT);
-                       return;
-               }
-               auth_encrypt_userpwd(r_passwd);
-               if (passwdok(UserNameRequested, UserPassword) == 0) {
-                 /*
-                  *  illegal username and password
-                  */
-                 Data(ap, KRB4_ENCPWD_REJECT, (void *)"Illegal password", -1);
-                 auth_finished(ap, AUTH_REJECT);
-                 return;
-               }
-
-               memcpy((void *)session_key,(void *)adat.session,sizeof(Block));
-               Data(ap, KRB4_ENCPWD_ACCEPT, (void *)0, 0);
-               auth_finished(ap, AUTH_USER);
-               break;
-
-       case KRB4_ENCPWD_CHALLENGE:
-               /*
-                *  Take the received random challenge text and save
-                *  for future authentication.
-                */
-               memcpy((void *)challenge, (void *)data, sizeof(Block));
-               break;
-
-
-       case KRB4_ENCPWD_ACK:
-               /*
-                *  Receive ack, if mutual then send random challenge
-                */
-
-               /*
-                * If we are doing mutual authentication, get set up to send
-                * the challenge, and verify it when the response comes back.
-                */
-
-               if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) {
-                 register int i;
-
-                 time(&now);
-                 sprintf(challenge, "%x", now);
-                 Data(ap, KRB4_ENCPWD_CHALLENGE, (void *)challenge, strlen(challenge));
-               }
-               break;
-               
-       default:
-               Data(ap, KRB4_ENCPWD_REJECT, 0, 0);
-               break;
-       }
-}
-
-
-       void
-krb4encpwd_reply(ap, data, cnt)
-       Authenticator *ap;
-       unsigned char *data;
-       int cnt;
-{
-       Session_Key skey;
-       KTEXT_ST krb_token;
-       Block enckey;
-       CREDENTIALS cred;
-       int r;
-       char        randchal[REALM_SZ], instance[ANAME_SZ], *cp;
-        char        hostname[80], *realm;
-
-       if (cnt-- < 1)
-               return;
-       switch (*data++) {
-       case KRB4_ENCPWD_REJECT:
-               if (cnt > 0) {
-                       printf("[ KRB4_ENCPWD refuses authentication because %.*s ]\r\n",
-                               cnt, data);
-               } else
-                       printf("[ KRB4_ENCPWD refuses authentication ]\r\n");
-               auth_send_retry();
-               return;
-       case KRB4_ENCPWD_ACCEPT:
-               printf("[ KRB4_ENCPWD accepts you ]\n");
-               auth_finished(ap, AUTH_USER);
-               return;
-       case KRB4_ENCPWD_CHALLENGE:
-               /*
-                * Verify that the response to the challenge is correct.
-                */
-
-               gethostname(hostname, sizeof(hostname));
-               realm = krb_realmofhost(hostname);
-               memcpy((void *)challenge, (void *)data, cnt);
-               memset(user_passwd, 0, sizeof(user_passwd));
-               local_des_read_pw_string(user_passwd, sizeof(user_passwd)-1, "Password: ", 0);
-               UserPassword = user_passwd;
-               Challenge = challenge;
-               strcpy(instance, RemoteHostName);
-               if ((cp = index(instance, '.')) != 0)  *cp = '\0';
-
-               if (r = krb_mk_encpwd_req(&krb_token, KRB_SERVICE_NAME, instance, realm, Challenge, UserNameRequested, user_passwd)) {
-                 krb_token.length = 0;
-               }
-
-               if (!Data(ap, KRB4_ENCPWD_AUTH, (void *)krb_token.dat, krb_token.length)) {
-                 return;
-               }
-
-               break;
-
-       default:
-               return;
-       }
-}
-
-       int
-krb4encpwd_status(ap, name, level)
-       Authenticator *ap;
-       char *name;
-       int level;
-{
-
-       if (level < AUTH_USER)
-               return(level);
-
-       if (UserNameRequested && passwdok(UserNameRequested, UserPassword)) {
-               strcpy(name, UserNameRequested);
-               return(AUTH_VALID);
-       } else {
-               return(AUTH_USER);
-       }
-}
-
-#define        BUMP(buf, len)          while (*(buf)) {++(buf), --(len);}
-#define        ADDC(buf, len, c)       if ((len) > 0) {*(buf)++ = (c); --(len);}
-
-       void
-krb4encpwd_printsub(data, cnt, buf, buflen)
-       unsigned char *data, *buf;
-       int cnt, buflen;
-{
-       char lbuf[32];
-       register int i;
-
-       buf[buflen-1] = '\0';           /* make sure its NULL terminated */
-       buflen -= 1;
-
-       switch(data[3]) {
-       case KRB4_ENCPWD_REJECT:        /* Rejected (reason might follow) */
-               strncpy((char *)buf, " REJECT ", buflen);
-               goto common;
-
-       case KRB4_ENCPWD_ACCEPT:        /* Accepted (name might follow) */
-               strncpy((char *)buf, " ACCEPT ", buflen);
-       common:
-               BUMP(buf, buflen);
-               if (cnt <= 4)
-                       break;
-               ADDC(buf, buflen, '"');
-               for (i = 4; i < cnt; i++)
-                       ADDC(buf, buflen, data[i]);
-               ADDC(buf, buflen, '"');
-               ADDC(buf, buflen, '\0');
-               break;
-
-       case KRB4_ENCPWD_AUTH:          /* Authentication data follows */
-               strncpy((char *)buf, " AUTH", buflen);
-               goto common2;
-
-       case KRB4_ENCPWD_CHALLENGE:
-               strncpy((char *)buf, " CHALLENGE", buflen);
-               goto common2;
-
-       case KRB4_ENCPWD_ACK:
-               strncpy((char *)buf, " ACK", buflen);
-               goto common2;
-
-       default:
-               sprintf(lbuf, " %d (unknown)", data[3]);
-               strncpy((char *)buf, lbuf, buflen);
-       common2:
-               BUMP(buf, buflen);
-               for (i = 4; i < cnt; i++) {
-                       sprintf(lbuf, " %d", data[i]);
-                       strncpy((char *)buf, lbuf, buflen);
-                       BUMP(buf, buflen);
-               }
-               break;
-       }
-}
-
-int passwdok(name, passwd)
-char *name, *passwd;
-{
-  char *crypt();
-  char *salt, *p;
-  struct passwd *pwd;
-  int   passwdok_status = 0;
-
-  if (pwd = getpwnam(name))
-    salt = pwd->pw_passwd;
-  else salt = "xx";
-
-  p = crypt(passwd, salt);
-
-  if (pwd && !strcmp(p, pwd->pw_passwd)) {
-    passwdok_status = 1;
-  } else passwdok_status = 0;
-  return(passwdok_status);
-}
-#else
-#include "misc-proto.h"
-#endif
-
-#ifdef notdef
-
-prkey(msg, key)
-       char *msg;
-       unsigned char *key;
-{
-       register int i;
-       printf("%s:", msg);
-       for (i = 0; i < 8; i++)
-               printf(" %3d", key[i]);
-       printf("\r\n");
-}
-#endif
diff --git a/src/appl/telnet/libtelnet/read_password.c b/src/appl/telnet/libtelnet/read_password.c
deleted file mode 100644 (file)
index c48c209..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* based on @(#)read_password.c        8.1 (Berkeley) 6/4/93 */
-
-/*
- * appl/telnet/libtelnet/read_password.c
- *
- * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
- * of Technology.
- *
- * For copying and distribution information, please see the file
- * <mit-copyright.h>.
- *
- * This routine prints the supplied string to standard
- * output as a prompt, and reads a password string without
- * echoing.
- */
-
-#if    defined(RSA_ENCPWD) || defined(KRB4_ENCPWD)
-
-#include <stdio.h>
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-#include <sys/ioctl.h>
-#include <signal.h>
-#include <setjmp.h>
-
-static jmp_buf env;
-
-/*** Routines ****************************************************** */
-/*
- * This version just returns the string, doesn't map to key.
- *
- * Returns 0 on success, non-zero on failure.
- */
-
-int
-local_des_read_pw_string(s,max,prompt,verify)
-    char *s;
-    int        max;
-    char *prompt;
-    int        verify;
-{
-    int ok = 0;
-    char *ptr;
-    
-    jmp_buf old_env;
-    struct sgttyb tty_state;
-    char key_string[BUFSIZ];
-
-    if (max > BUFSIZ) {
-       return -1;
-    }
-
-    /* XXX assume jmp_buf is typedef'ed to an array */
-    memcpy((char *)env, (char *)old_env, sizeof(env));
-    if (setjmp(env))
-       goto lose;
-
-    /* save terminal state*/
-    if (ioctl(0,TIOCGETP,(char *)&tty_state) == -1) 
-       return -1;
-/*
-    push_signals();
-*/
-    /* Turn off echo */
-    tty_state.sg_flags &= ~ECHO;
-    if (ioctl(0,TIOCSETP,(char *)&tty_state) == -1)
-       return -1;
-    while (!ok) {
-       (void) printf(prompt);
-       (void) fflush(stdout);
-       while (!fgets(s, max, stdin));
-
-       if ((ptr = index(s, '\n')))
-           *ptr = '\0';
-       if (verify) {
-           printf("\nVerifying, please re-enter %s",prompt);
-           (void) fflush(stdout);
-           if (!fgets(key_string, sizeof(key_string), stdin)) {
-               clearerr(stdin);
-               continue;
-           }
-            if ((ptr = index(key_string, '\n')))
-           *ptr = '\0';
-           if (strcmp(s,key_string)) {
-               printf("\n\07\07Mismatch - try again\n");
-               (void) fflush(stdout);
-               continue;
-           }
-       }
-       ok = 1;
-    }
-
-lose:
-    if (!ok)
-       memset(s, 0, max);
-    printf("\n");
-    /* turn echo back on */
-    tty_state.sg_flags |= ECHO;
-    if (ioctl(0,TIOCSETP,(char *)&tty_state))
-       ok = 0;
-/*
-    pop_signals();
-*/
-    memcpy((char *)old_env, (char *)env, sizeof(env));
-    if (verify)
-       memset(key_string, 0, sizeof (key_string));
-    s[max-1] = 0;              /* force termination */
-    return !ok;                        /* return nonzero if not okay */
-}
-#else  /* defined(RSA_ENCPWD) || defined(KRB4_ENCPWD) */
-#include "misc-proto.h"
-#endif /* defined(RSA_ENCPWD) || defined(KRB4_ENCPWD) */
diff --git a/src/appl/telnet/libtelnet/rsaencpwd.c b/src/appl/telnet/libtelnet/rsaencpwd.c
deleted file mode 100644 (file)
index 5075537..0000000
+++ /dev/null
@@ -1,490 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* based on @(#)rsaencpwd.c    8.1 (Berkeley) 6/4/93 */
-
-#ifdef RSA_ENCPWD
-/*
- * COPYRIGHT (C) 1990 DIGITAL EQUIPMENT CORPORATION
- * ALL RIGHTS RESERVED
- *
- * "Digital Equipment Corporation authorizes the reproduction,
- * distribution and modification of this software subject to the following
- * restrictions:
- *
- * 1.  Any partial or whole copy of this software, or any modification
- * thereof, must include this copyright notice in its entirety.
- *
- * 2.  This software is supplied "as is" with no warranty of any kind,
- * expressed or implied, for any purpose, including any warranty of fitness
- * or merchantibility.  DIGITAL assumes no responsibility for the use or
- * reliability of this software, nor promises to provide any form of
- * support for it on any basis.
- *
- * 3.  Distribution of this software is authorized only if no profit or
- * remuneration of any kind is received in exchange for such distribution.
- *
- * 4.  This software produces public key authentication certificates
- * bearing an expiration date established by DIGITAL and RSA Data
- * Security, Inc.  It may cease to generate certificates after the expiration
- * date.  Any modification of this software that changes or defeats
- * the expiration date or its effect is unauthorized.
- *
- * 5.  Software that will renew or extend the expiration date of
- * authentication certificates produced by this software may be obtained
- * from RSA Data Security, Inc., 10 Twin Dolphin Drive, Redwood City, CA
- * 94065, (415)595-8782, or from DIGITAL"
- *
- */
-
-#include <sys/types.h>
-#include <arpa/telnet.h>
-#include <pwd.h>
-#include <stdio.h>
-
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#include "encrypt.h"
-#include "auth.h"
-#include "misc.h"
-#include "cdc.h"
-
-extern auth_debug_mode;
-
-static unsigned char str_data[1024] = { IAC, SB, TELOPT_AUTHENTICATION, 0,
-                                       AUTHTYPE_RSA_ENCPWD, };
-static unsigned char str_name[1024] = { IAC, SB, TELOPT_AUTHENTICATION,
-                                       TELQUAL_NAME, };
-
-#define        RSA_ENCPWD_AUTH 0       /* Authentication data follows */
-#define        RSA_ENCPWD_REJECT       1       /* Rejected (reason might follow) */
-#define RSA_ENCPWD_ACCEPT      2       /* Accepted */
-#define        RSA_ENCPWD_CHALLENGEKEY 3       /* Challenge and public key */
-
-#define NAME_SZ   40
-#define CHAL_SZ   20
-#define PWD_SZ    40
-
-static KTEXT_ST auth;
-static char name[NAME_SZ];
-static char user_passwd[PWD_SZ];
-static  char key_file[2*NAME_SZ];
-static  char lhostname[NAME_SZ];
-static char  challenge[CHAL_SZ];
-static int   challenge_len;
-
-       static int
-Data(ap, type, d, c)
-       Authenticator *ap;
-       int type;
-       void *d;
-       int c;
-{
-        unsigned char *p = str_data + 4;
-       unsigned char *cd = (unsigned char *)d;
-
-       if (c == -1)
-               c = strlen((char *)cd);
-
-        if (0) {
-                printf("%s:%d: [%d] (%d)",
-                        str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
-                        str_data[3],
-                        type, c);
-                printd(d, c);
-                printf("\r\n");
-        }
-       *p++ = ap->type;
-       *p++ = ap->way;
-       if (type != NULL) *p++ = type;
-        while (c-- > 0) {
-                if ((*p++ = *cd++) == IAC)
-                        *p++ = IAC;
-        }
-        *p++ = IAC;
-        *p++ = SE;
-       if (str_data[3] == TELQUAL_IS)
-               printsub('>', &str_data[2], p - (&str_data[2]));
-        return(net_write(str_data, p - str_data));
-}
-
-       int
-rsaencpwd_init(ap, server)
-       Authenticator *ap;
-       int server;
-{
-       char  *cp;
-       FILE  *fp;
-
-       if (server) {
-               str_data[3] = TELQUAL_REPLY;
-               memset(key_file, 0, sizeof(key_file));
-               gethostname(lhostname, sizeof(lhostname));
-               if ((cp = index(lhostname, '.')) != 0)  *cp = '\0';
-               strcpy(key_file, "/etc/.");
-               strcat(key_file, lhostname);
-               strcat(key_file, "_privkey");
-               if ((fp=fopen(key_file, "r"))==NULL) return(0);
-               fclose(fp);
-       } else {
-               str_data[3] = TELQUAL_IS;
-       }
-       return(1);
-}
-
-       int
-rsaencpwd_send(ap)
-       Authenticator *ap;
-{
-
-       printf("[ Trying RSAENCPWD ... ]\n");
-       if (!UserNameRequested) {
-               return(0);
-       }
-       if (!auth_sendname(UserNameRequested, strlen(UserNameRequested))) {
-               return(0);
-       }
-       if (!Data(ap, NULL, (void *)NULL, 0)) {
-               return(0);
-       }
-
-
-       return(1);
-}
-
-       void
-rsaencpwd_is(ap, data, cnt)
-       Authenticator *ap;
-       unsigned char *data;
-       int cnt;
-{
-       Session_Key skey;
-       Block datablock;
-       char  r_passwd[PWD_SZ], r_user[NAME_SZ];
-       char  *cp, key[160];
-       char  chalkey[160], *ptr;
-       FILE  *fp;
-       int r, i, j, chalkey_len, len;
-       time_t now;
-
-       cnt--;
-       switch (*data++) {
-       case RSA_ENCPWD_AUTH:
-               memcpy((void *)auth.dat, (void *)data, auth.length = cnt);
-
-               if ((fp=fopen(key_file, "r"))==NULL) {
-                 Data(ap, RSA_ENCPWD_REJECT, (void *)"Auth failed", -1);
-                 auth_finished(ap, AUTH_REJECT);
-                 return;
-               }
-               /*
-                *  get privkey
-                */
-               fscanf(fp, "%x;", &len);
-               for (i=0;i<len;i++) {
-                 j = getc(fp);  key[i]=j;
-               }
-               fclose(fp);
-
-               r = accept_rsa_encpwd(&auth, key, challenge,
-                                     challenge_len, r_passwd);
-               if (r < 0) {
-                 Data(ap, RSA_ENCPWD_REJECT, (void *)"Auth failed", -1);
-                 auth_finished(ap, AUTH_REJECT);
-                 return;
-               }
-               auth_encrypt_userpwd(r_passwd);
-               if (rsaencpwd_passwdok(UserNameRequested, UserPassword) == 0) {
-                 /*
-                  *  illegal username and password
-                  */
-                 Data(ap, RSA_ENCPWD_REJECT, (void *)"Illegal password", -1);
-                 auth_finished(ap, AUTH_REJECT);
-                 return;
-               }
-
-               Data(ap, RSA_ENCPWD_ACCEPT, (void *)0, 0);
-               auth_finished(ap, AUTH_USER);
-               break;
-
-
-       case IAC:
-
-               /*
-                * If we are doing mutual authentication, get set up to send
-                * the challenge, and verify it when the response comes back.
-                */
-               if ((ap->way & AUTH_HOW_MASK) == AUTH_HOW_ONE_WAY) {
-                 register int i;
-
-
-                 time(&now);
-                 if ((now % 2) == 0) {
-                   sprintf(challenge, "%x", now);
-                   challenge_len = strlen(challenge);
-                 } else {
-                   strcpy(challenge, "randchal");
-                   challenge_len = 8;
-                 }
-
-                 if ((fp=fopen(key_file, "r"))==NULL) {
-                   Data(ap, RSA_ENCPWD_REJECT, (void *)"Auth failed", -1);
-                   auth_finished(ap, AUTH_REJECT);
-                   return;
-                 }
-                 /*
-                  *  skip privkey
-                  */
-                 fscanf(fp, "%x;", &len);
-                 for (i=0;i<len;i++) {
-                   j = getc(fp);
-                 }
-                 /*
-                  * get pubkey
-                  */
-                 fscanf(fp, "%x;", &len);
-                 for (i=0;i<len;i++) {
-                   j = getc(fp);  key[i]=j;
-                 }
-                 fclose(fp);
-                 chalkey[0] = 0x30;
-                 ptr = (char *) &chalkey[1];
-                 chalkey_len = 1+NumEncodeLengthOctets(i)+i+1+NumEncodeLengthOctets(challenge_len)+challenge_len;
-                 EncodeLength(ptr, chalkey_len);
-                 ptr +=NumEncodeLengthOctets(chalkey_len);
-                 *ptr++ = 0x04;  /* OCTET STRING */
-                 *ptr++ = challenge_len;
-                 memcpy(ptr, challenge, challenge_len);
-                 ptr += challenge_len;
-                 *ptr++ = 0x04;  /* OCTET STRING */
-                 EncodeLength(ptr, i);
-                 ptr += NumEncodeLengthOctets(i);
-                 memcpy(ptr, key, i);
-                 chalkey_len = 1+NumEncodeLengthOctets(chalkey_len)+chalkey_len;
-                 Data(ap, RSA_ENCPWD_CHALLENGEKEY, (void *)chalkey, chalkey_len);
-               }
-               break;
-               
-       default:
-               Data(ap, RSA_ENCPWD_REJECT, 0, 0);
-               break;
-       }
-}
-
-
-       void
-rsaencpwd_reply(ap, data, cnt)
-       Authenticator *ap;
-       unsigned char *data;
-       int cnt;
-{
-       Session_Key skey;
-       KTEXT_ST token;
-       Block enckey;
-       int r, pubkey_len;
-       char        randchal[CHAL_SZ], *cp;
-       char        chalkey[160], pubkey[128], *ptr;
-
-       if (cnt-- < 1)
-               return;
-       switch (*data++) {
-       case RSA_ENCPWD_REJECT:
-               if (cnt > 0) {
-                       printf("[ RSA_ENCPWD refuses authentication because %.*s ]\r\n",
-                               cnt, data);
-               } else
-                       printf("[ RSA_ENCPWD refuses authentication ]\r\n");
-               auth_send_retry();
-               return;
-       case RSA_ENCPWD_ACCEPT:
-               printf("[ RSA_ENCPWD accepts you ]\n");
-               auth_finished(ap, AUTH_USER);
-               return;
-       case RSA_ENCPWD_CHALLENGEKEY:
-               /*
-                * Verify that the response to the challenge is correct.
-                */
-
-               memcpy((void *)chalkey, (void *)data, cnt);
-               ptr = (char *) &chalkey[0];
-               ptr += DecodeHeaderLength(chalkey);
-               if (*ptr != 0x04) {
-                  return;
-                }
-               *ptr++;
-               challenge_len = DecodeValueLength(ptr);
-               ptr += NumEncodeLengthOctets(challenge_len);
-               memcpy(challenge, ptr, challenge_len);
-               ptr += challenge_len;
-               if (*ptr != 0x04) {
-                  return;
-                }
-                *ptr++;
-               pubkey_len = DecodeValueLength(ptr);
-               ptr += NumEncodeLengthOctets(pubkey_len);
-               memcpy(pubkey, ptr, pubkey_len);
-               memset(user_passwd, 0, sizeof(user_passwd));
-               local_des_read_pw_string(user_passwd, sizeof(user_passwd)-1, "Password: ", 0);
-               UserPassword = user_passwd;
-               Challenge = challenge;
-               r = init_rsa_encpwd(&token, user_passwd, challenge, challenge_len, pubkey);
-               if (r < 0) {
-                 token.length = 1;
-               }
-
-               if (!Data(ap, RSA_ENCPWD_AUTH, (void *)token.dat, token.length)) {
-                 return;
-               }
-
-               break;
-
-       default:
-               return;
-       }
-}
-
-       int
-rsaencpwd_status(ap, name, level)
-       Authenticator *ap;
-       char *name;
-       int level;
-{
-
-       if (level < AUTH_USER)
-               return(level);
-
-       if (UserNameRequested && rsaencpwd_passwdok(UserNameRequested, UserPassword)) {
-               strcpy(name, UserNameRequested);
-               return(AUTH_VALID);
-       } else {
-               return(AUTH_USER);
-       }
-}
-
-#define        BUMP(buf, len)          while (*(buf)) {++(buf), --(len);}
-#define        ADDC(buf, len, c)       if ((len) > 0) {*(buf)++ = (c); --(len);}
-
-       void
-rsaencpwd_printsub(data, cnt, buf, buflen)
-       unsigned char *data, *buf;
-       int cnt, buflen;
-{
-       char lbuf[32];
-       register int i;
-
-       buf[buflen-1] = '\0';           /* make sure its NULL terminated */
-       buflen -= 1;
-
-       switch(data[3]) {
-       case RSA_ENCPWD_REJECT: /* Rejected (reason might follow) */
-               strncpy((char *)buf, " REJECT ", buflen);
-               goto common;
-
-       case RSA_ENCPWD_ACCEPT: /* Accepted (name might follow) */
-               strncpy((char *)buf, " ACCEPT ", buflen);
-       common:
-               BUMP(buf, buflen);
-               if (cnt <= 4)
-                       break;
-               ADDC(buf, buflen, '"');
-               for (i = 4; i < cnt; i++)
-                       ADDC(buf, buflen, data[i]);
-               ADDC(buf, buflen, '"');
-               ADDC(buf, buflen, '\0');
-               break;
-
-       case RSA_ENCPWD_AUTH:           /* Authentication data follows */
-               strncpy((char *)buf, " AUTH", buflen);
-               goto common2;
-
-       case RSA_ENCPWD_CHALLENGEKEY:
-               strncpy((char *)buf, " CHALLENGEKEY", buflen);
-               goto common2;
-
-       default:
-               sprintf(lbuf, " %d (unknown)", data[3]);
-               strncpy((char *)buf, lbuf, buflen);
-       common2:
-               BUMP(buf, buflen);
-               for (i = 4; i < cnt; i++) {
-                       sprintf(lbuf, " %d", data[i]);
-                       strncpy((char *)buf, lbuf, buflen);
-                       BUMP(buf, buflen);
-               }
-               break;
-       }
-}
-
-int rsaencpwd_passwdok(name, passwd)
-char *name, *passwd;
-{
-  char *crypt();
-  char *salt, *p;
-  struct passwd *pwd;
-  int   passwdok_status = 0;
-
-  if (pwd = getpwnam(name))
-    salt = pwd->pw_passwd;
-  else salt = "xx";
-
-  p = crypt(passwd, salt);
-
-  if (pwd && !strcmp(p, pwd->pw_passwd)) {
-    passwdok_status = 1;
-  } else passwdok_status = 0;
-  return(passwdok_status);
-}
-#else
-#include "misc-proto.h"
-#endif
-
-#ifdef notdef
-
-prkey(msg, key)
-       char *msg;
-       unsigned char *key;
-{
-       register int i;
-       printf("%s:", msg);
-       for (i = 0; i < 8; i++)
-               printf(" %3d", key[i]);
-       printf("\r\n");
-}
-#endif