Remove the S/Key key-handling apps, which are no longer needed, as

they are replaced by opiepasswd, opieinfo and opiekey.
This commit is contained in:
Mark Murray 2001-07-09 17:40:57 +00:00
parent 875afe974f
commit 8509234471
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=79468
10 changed files with 0 additions and 616 deletions

View File

@ -67,9 +67,6 @@ SUBDIR= apply \
jot \
kdump \
kenv \
key \
keyinfo \
keyinit \
keylogin \
keylogout \
killall \

View File

@ -1,12 +0,0 @@
# @(#)Makefile 5.6 (Berkeley) 3/5/91
# $FreeBSD$
PROG= key
SRCS= skey.c
CFLAGS+= -D_SKEY_INTERNAL
DPADD= ${LIBSKEY} ${LIBCRYPT} ${LIBMD}
LDADD= -lskey -lcrypt -lmd
.include <bsd.prog.mk>

View File

@ -1,50 +0,0 @@
.\" from: @(#)key.1 1.0 (Bellcore) 12/2/91
.\" $FreeBSD$
.\"
.Dd December 2, 1991
.Dt KEY 1
.Os
.Sh NAME
.Nm key
.Nd stand-alone program for computing responses to S/Key challenges
.Sh SYNOPSIS
.Nm
.Op Fl n Ar count
.Ar sequence
.Ar key
.Sh DESCRIPTION
.Nm Key
takes the optional count of the number of one time access
passwords to print
along with a (maximum) sequence number and key as command line arguments,
it prompts for the user's secret password, and produces both word
and hex format responses.
.Pp
The following option is available:
.Bl -tag -width Fl
.It Fl n Ar count
The number of one time access passwords to print.
The default is 1.
.El
.Sh EXAMPLES
Usage example:
.Bd -literal -offset indent -compact
>key -n 5 99 th91334
Enter password: <your secret password is entered here>
OMEN US HORN OMIT BACK AHOY
\&.... 4 more passwords.
>
.Ed
.Sh SEE ALSO
.Xr keyinfo 1 ,
.Xr keyinit 1 ,
.Xr skey 1
.\" .BR keysu(1),
.Sh AUTHORS
.An -nosplit
Command by
.An Phil Karn ,
.An Neil M. Haller ,
.An John S. Walden
.Sh CONTACT
.Aq staff@thumper.bellcore.com

View File

@ -1,125 +0,0 @@
/* Stand-alone program for computing responses to S/Key challenges.
* Takes the iteration count and seed as command line args, prompts
* for the user's key, and produces both word and hex format responses.
*
* Usage example:
* >skey 88 ka9q2
* Enter password:
* OMEN US HORN OMIT BACK AHOY
* C848 666B 6435 0A93
* >
*/
#ifndef lint
static const char rcsid[] =
"$FreeBSD$";
#endif /* not lint */
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#ifdef __MSDOS__
#include <dos.h>
#else /* Assume BSD Unix */
#include <fcntl.h>
#endif
#include <skey.h>
static void usage __P((void));
int
main(argc,argv)
int argc;
char *argv[];
{
int n,cnt,i;
char passwd[256] /* ,passwd2[256] */;
char key[8];
char *seed;
char buf[33];
char *slash;
cnt = 1;
while((i = getopt(argc,argv,"n:")) != -1){
switch(i){
case 'n':
cnt = atoi(optarg);
break;
}
}
/* could be in the form <number>/<seed> */
if(argc <= optind + 1){
/*look for / in it */
if(argc <= optind)
usage();
slash = strchr(argv[optind], '/');
if(slash == NULL)
usage();
*slash++ = '\0';
seed = slash;
if((n = atoi(argv[optind])) < 0){
warnx("%s not positive",argv[optind]);
usage();
}
}
else {
if((n = atoi(argv[optind])) < 0){
warnx("%s not positive",argv[optind]);
usage();
}
seed = argv[++optind];
}
fprintf(stderr,"Reminder - Do not use this program while logged in via telnet or rlogin.\n");
/* Get user's secret password */
for(;;){
fprintf(stderr,"Enter secret password: ");
readpass(passwd,sizeof(passwd));
break;
/************
fprintf(stderr,"Again secret password: ");
readpass(passwd2,sizeof(passwd));
if(strcmp(passwd,passwd2) == 0) break;
fprintf(stderr, "Sorry no match\n");
**************/
}
/* Crunch seed and password into starting key */
if(keycrunch(key,seed,passwd) != 0)
errx(1, "key crunch failed");
if(cnt == 1){
while(n-- != 0)
f(key);
printf("%s\n",btoe(buf,key));
#ifdef HEXIN
printf("%s\n",put8(buf,key));
#endif
} else {
for(i=0;i<=n-cnt;i++)
f(key);
for(;i<=n;i++){
#ifdef HEXIN
printf("%d: %-29s %s\n",i,btoe(buf,key),put8(buf,key));
#else
printf("%d: %-29s\n",i,btoe(buf,key));
#endif
f(key);
}
}
return 0;
}
static void
usage()
{
fprintf(stderr,"usage: key [-n count] <sequence #>[/] <key>\n");
exit(1);
}

View File

@ -1,10 +0,0 @@
# @(#)Makefile 5.5 (Berkeley) 7/1/90
# $FreeBSD$
PROG= keyinfo
CFLAGS+=-Wall
DPADD= ${LIBSKEY} ${LIBCRYPT} ${LIBMD}
LDADD= -lskey -lcrypt -lmd
BINMODE=4555
.include <bsd.prog.mk>

View File

@ -1,64 +0,0 @@
.\" from: @(#)keyinfo.1 1.1 (Bellcore) 7/20/93
.\" $FreeBSD$
.\"
.Dd April 26, 1996
.Dt KEYINFO 1
.Os
.Sh NAME
.Nm keyinfo
.Nd display current S/Key sequence number and seed
.Sh SYNOPSIS
.Nm
.Op Ar username
.Sh DESCRIPTION
.Nm
takes an optional user name and displays the user\'s current sequence
number and seed found in the S/Key database
.Pa /etc/skeykeys .
.Pp
The command can be useful when generating a list of passwords for use
on a field trip, by combining with the command
.Xr key 1
in the form:
.Bd -literal -offset indent
key -n <number of passwords> `keyinfo` | lpr
.Ed
.Pp
The optional
.Ar username
argument specifies the S/Key user for whom to display the information.
The default is to display S/Key information
on the user who invokes the command.
Only the superuser can ask for another user's key information.
.Sh EXAMPLES
Usage example:
.Bd -literal -offset indent
$ keyinfo
.Ed
.Pp
This would produce the following output:
.Bd -literal -offset indent
98 ws91340
.Ed
.Sh DIAGNOSTICS
The
.Nm
utility
exits with status 0 if a key for the requested user has been found,
else with status 1.
.Sh SEE ALSO
.Xr key 1 ,
.Xr keyinit 1
.Sh AUTHORS
.An -nosplit
Original command by
.An Phil Karn ,
.An Neil M. Haller
and
.An John S. Walden .
Rewritten in Perl by
.An J\(:org Wunsch
so that it could be made setuid, with the S/Key keys file read-protected
from the users.
Rewritten in C by
.An Warner Losh .

View File

@ -1,58 +0,0 @@
/*-
* Copyright (c) 2000 Warner Losh.
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <stdio.h>
#include <string.h>
#include <skey.h>
#include <unistd.h>
#include <err.h>
int
main(int argc, char *argv[])
{
struct skey skey;
char *login;
char *name;
int serr;
login = getlogin();
if (login == NULL)
errx(1, "Cannot find login name");
if (getuid() != 0 && argc > 1 && strcmp(login, argv[1]) != 0)
errx(1, "Only superuser may get another user's keys");
name = argc > 1 ? argv[1] : login;
serr = skeylookup(&skey, name);
if (serr == -1)
err(1, "skeylookup os failure");
fclose(skey.keyfile);
if (serr != 0)
errx(1, "skeylookup: user %s not found", name);
printf("%d %s\n", skey.n - 1, skey.seed);
return (0);
}

View File

@ -1,14 +0,0 @@
# @(#)Makefile 5.6 (Berkeley) 3/5/91
# $FreeBSD$
PROG= keyinit
SRCS= skeyinit.c
CFLAGS+= -D_SKEY_INTERNAL
BINMODE=4555
DPADD= ${LIBSKEY} ${LIBCRYPT} ${LIBMD}
LDADD= -lskey -lcrypt -lmd
.include <bsd.prog.mk>

View File

@ -1,90 +0,0 @@
.\" @(#)keyinit.1 1.0 (Bellcore) 7/20/93
.\" $FreeBSD$
.\"
.Dd July 20, 1993
.Dt KEYINIT 1
.Os
.Sh NAME
.Nm keyinit
.Nd change password or add user to S/Key authentication system
.Sh SYNOPSIS
.Nm
.Op Fl s
.Op Ar userID
.Sh DESCRIPTION
.Nm Keyinit
initializes the system so you can use S/Key one-time passwords to
login. The program will ask you to enter a secret pass phrase; enter a
phrase of several words in response.
After the S/Key database has been
updated you can login using either your regular UNIX password or using
S/Key one-time passwords.
.Pp
When logging in from another machine you can avoid typing a real
password over the network, by typing your S/Key pass phrase to the
.Nm key
command on the local machine: the program will respond with
the one-time password that you should use to log into the remote
machine. This is most conveniently done with cut-and-paste operations
using a mouse. Alternatively, you can pre-compute one-time passwords
using the
.Nm key
command and carry them with you on a piece of paper.
.Pp
.Nm Keyinit
requires you to type your secret password, so it should
be used only on a secure terminal.
For example, on the console of a
workstation.
If you are using
.Nm
while logged in over an
untrusted network, follow the instructions given below with the
.Fl s
option.
.Sh OPTIONS
.Bl -tag -width indent
.It Fl s
Set secure mode where the user is expected to have used a secure
machine to generate the first one time password. Without the
.Fl s
the
system will assume you are direct connected over secure communications
and prompt you for your secret password.
The
.Fl s
option also allows one to set the seed and count for complete
control of the parameters. You can use
.Nm
.Fl s
in combination with
the
.Nm key
command to set the seed and count if you do not like the defaults.
To do this run
.Nm
in one window and put in your count and seed
then run
.Nm key
in another window to generate the correct 6 English words
for that count and seed.
You can then
"cut" and "paste" them or copy them into the
.Nm
window.
.It Ar userID
The ID for the user to be changed/added
.El
.Sh FILES
.Pa /etc/skeykeys
data base of information for S/Key system.
.Sh SEE ALSO
.Xr key 1 ,
.Xr keyinfo 1 ,
.Xr skey 1 ,
.Xr su 1
.Sh AUTHORS
Command by
.An Phil Karn ,
.An Neil M. Haller ,
.An John S. Walden

View File

@ -1,190 +0,0 @@
/* change password or add user to S/KEY authentication system.
* S/KEY is a tradmark of Bellcore */
#include <ctype.h>
#include <err.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <skey.h>
#include <unistd.h>
#define NAMELEN 2
int
main(argc,argv)
int argc;
char *argv[];
{
struct skey skey;
int rval,n,nn,i,defaultsetup;
char seed[18],tmp[80],key[8];
struct passwd *ppuser,*pp;
char defaultseed[17], passwd[256],passwd2[256] ;
time_t now;
struct tm *tm;
char tbuf[27],buf[60];
char lastc, me[80];
int l;
time(&now);
#if 0 /* Choose a more random seed */
tm = localtime(&now);
strftime(tbuf, sizeof(tbuf), "%M%j", tm);
#else
sprintf(tbuf, "%05ld", (long) (now % 100000));
#endif
gethostname(defaultseed,NAMELEN);
strcpy(&defaultseed[NAMELEN],tbuf);
pp = ppuser = getpwuid(getuid());
strcpy(me,pp->pw_name);
defaultsetup = 1;
if( argc > 1){
if(strcmp("-s", argv[1]) == 0)
defaultsetup = 0;
else
pp = getpwnam(argv[1]);
if(argc > 2)
pp = getpwnam(argv[2]);
}
if(pp == NULL){
printf("User unknown\n");
return 1;
}
if(strcmp( pp->pw_name,me) != 0){
if(getuid() != 0){
/* Only root can change other's passwds */
printf("Permission denied.\n");
return(1);
}
}
rval = skeylookup(&skey,pp->pw_name);
switch(rval){
case -1:
perror("error in opening database");
return 1;
case 0:
printf("Updating %s:\n",pp->pw_name);
printf("Old key: %s\n",skey.seed);
/* lets be nice if they have a skey.seed that ends in 0-8 just add one*/
l = strlen(skey.seed);
if( l > 0){
lastc = skey.seed[l-1];
if( isdigit(lastc) && lastc != '9' ){
strcpy(defaultseed, skey.seed);
defaultseed[l-1] = lastc + 1;
}
if( isdigit(lastc) && lastc == '9' && l < 16){
strcpy(defaultseed, skey.seed);
defaultseed[l-1] = '0';
defaultseed[l] = '0';
defaultseed[l+1] = '\0';
}
}
break;
case 1:
skey.val = 0; /* XXX */
printf("Adding %s:\n",pp->pw_name);
break;
}
n = 99;
if( ! defaultsetup){
printf("Reminder you need the 6 english words from the key command.\n");
for(i=0;;i++){
if(i >= 2) exit(1);
printf("Enter sequence count from 1 to 9999: ");
fgets(tmp,sizeof(tmp),stdin);
n = atoi(tmp);
if(n > 0 && n < 10000)
break; /* Valid range */
printf("Count must be > 0 and < 10000\n");
}
}
if( !defaultsetup){
printf("Enter new key [default %s]: ", defaultseed);
fflush(stdout);
fgets(seed,sizeof(seed),stdin);
rip(seed);
if(strlen(seed) > 16){
printf("Seed truncated to 16 chars\n");
seed[16] = '\0';
}
if( seed[0] == '\0') strcpy(seed,defaultseed);
for(i=0;;i++){
if(i >= 2) exit(1);
printf("s/key %d %s\ns/key access password: ",n,seed);
fgets(tmp,sizeof(tmp),stdin);
rip(tmp);
if(tmp[0] == '?'){
printf("Enter 6 English words from secure S/Key calculation.\n");
continue;
}
if(tmp[0] == '\0'){
exit(1);
}
if(etob(key,tmp) == 1 || atob8(key,tmp) == 0)
break; /* Valid format */
printf("Invalid format, try again with 6 English words.\n");
}
} else {
/* Get user's secret password */
fprintf(stderr,"Reminder - Only use this method if you are directly connected.\n");
fprintf(stderr,"If you are using telnet or rlogin exit with no password and use keyinit -s.\n");
for(i=0;;i++){
if(i >= 2) exit(1);
fprintf(stderr,"Enter secret password: ");
readpass(passwd,sizeof(passwd));
if(passwd[0] == '\0'){
exit(1);
}
fprintf(stderr,"Again secret password: ");
readpass(passwd2,sizeof(passwd));
if(passwd2[0] == '\0'){
exit(1);
}
if(strlen(passwd) < 4 && strlen(passwd2) < 4) {
fprintf(stderr, "Sorry your password must be longer\n\r");
exit(1);
}
if(strcmp(passwd,passwd2) == 0) break;
fprintf(stderr, "Sorry no match\n");
}
strcpy(seed,defaultseed);
/* Crunch seed and password into starting key */
if(keycrunch(key,seed,passwd) != 0)
errx(1, "key crunch failed");
nn = n;
while(nn-- != 0)
f(key);
}
time(&now);
tm = localtime(&now);
strftime(tbuf, sizeof(tbuf), " %b %d,%Y %T", tm);
if (skey.val == NULL)
skey.val = (char *) malloc(16+1);
btoa8(skey.val,key);
fprintf(skey.keyfile,"%s %04d %-16s %s %-21s\n",pp->pw_name,n,
seed,skey.val, tbuf);
fclose(skey.keyfile);
printf("\nID %s s/key is %d %s\n",pp->pw_name,n,seed);
printf("%s\n",btoe(buf,key));
#ifdef HEXIN
printf("%s\n",put8(buf,key));
#endif
return 0;
}