diff options
-rw-r--r-- | usr.bin/newkey/Makefile | 5 | ||||
-rw-r--r-- | usr.bin/newkey/extern.h | 46 | ||||
-rw-r--r-- | usr.bin/newkey/generic.c | 21 | ||||
-rw-r--r-- | usr.bin/newkey/newkey.c | 16 | ||||
-rw-r--r-- | usr.bin/newkey/update.c | 27 |
5 files changed, 81 insertions, 34 deletions
diff --git a/usr.bin/newkey/Makefile b/usr.bin/newkey/Makefile index fbe8e3b..a083a07 100644 --- a/usr.bin/newkey/Makefile +++ b/usr.bin/newkey/Makefile @@ -1,10 +1,9 @@ # $FreeBSD$ PROG= newkey -SRCS= generic.c newkey.c update.c +SRCS= newkey.c generic.c update.c MAN= newkey.8 -# For later: -#CFLAGS+= -DYP +CFLAGS+= -DYP DPADD= ${LIBRPCSVC} ${LIBMP} ${LIBCRYPTO} LDADD= -lrpcsvc -lmp -lcrypto diff --git a/usr.bin/newkey/extern.h b/usr.bin/newkey/extern.h new file mode 100644 index 0000000..d39baa0 --- /dev/null +++ b/usr.bin/newkey/extern.h @@ -0,0 +1,46 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user or with the express written consent of + * Sun Microsystems, Inc. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + * + * $FreeBSD$ + */ + +#ifdef YP +#define MAXMAPNAMELEN 256 +#else +#define YPOP_CHANGE 1 /* change, do not add */ +#define YPOP_INSERT 2 /* add, do not change */ +#define YPOP_DELETE 3 /* delete this entry */ +#define YPOP_STORE 4 /* add, or change */ +#endif + +void genkeys(char *, char *, char *); +int setpublicmap(char *, char *, char *); +int mapupdate(char *, char *, u_int, u_int, char *, u_int, char *); +void xencrypt(char *, char *); +void xdecrypt(char *, char *); diff --git a/usr.bin/newkey/generic.c b/usr.bin/newkey/generic.c index 39e40f0..223dcf4 100644 --- a/usr.bin/newkey/generic.c +++ b/usr.bin/newkey/generic.c @@ -39,18 +39,22 @@ static const char rcsid[] = * Copyright (C) 1986, Sun Microsystems, Inc. */ -#include <stdio.h> -#include <stdlib.h> -#include <rpc/rpc.h> #include <sys/file.h> -#include <mp.h> +#include <rpc/rpc.h> #include <rpc/key_prot.h> +#include <mp.h> +#include <stdio.h> +#include <stdlib.h> + +#include "extern.h" + +static void adjust __P((char[], char *)); +static void getseed __P((char *, int, unsigned char *)); -static int adjust __P(( char[], char * )); /* * Generate a seed */ -static +static void getseed(seed, seedsize, pass) char *seed; int seedsize; @@ -66,12 +70,13 @@ getseed(seed, seedsize, pass) /* * Generate a random public/secret key pair */ +void genkeys(public, secret, pass) char *public; char *secret; char *pass; { - int i; + unsigned int i; # define BASEBITS (8*sizeof (short) - 1) # define BASE (1 << BASEBITS) @@ -112,7 +117,7 @@ genkeys(public, secret, pass) /* * Adjust the input key so that it is 0-filled on the left */ -static +static void adjust(keyout, keyin) char keyout[HEXKEYBYTES+1]; char *keyin; diff --git a/usr.bin/newkey/newkey.c b/usr.bin/newkey/newkey.c index 141614e..6b98709 100644 --- a/usr.bin/newkey/newkey.c +++ b/usr.bin/newkey/newkey.c @@ -42,20 +42,24 @@ static const char rcsid[] = /* * Administrative tool to add a new user to the publickey database */ -#include <err.h> -#include <stdio.h> +#include <sys/types.h> +#include <sys/time.h> +#include <sys/resource.h> #include <rpc/rpc.h> #include <rpc/key_prot.h> #ifdef YP +#include <sys/wait.h> #include <rpcsvc/yp_prot.h> #include <rpcsvc/ypclnt.h> -#include <sys/wait.h> #include <netdb.h> #endif /* YP */ +#include <err.h> #include <pwd.h> +#include <stdio.h> #include <string.h> #include <unistd.h> -#include <sys/resource.h> + +#include "extern.h" #ifdef YP #define MAXMAPNAMELEN 256 @@ -73,11 +77,8 @@ static const char rcsid[] = #endif #ifdef YP -static char *basename(); -static char SHELL[] = "/bin/sh"; static char YPDBPATH[]="/var/yp"; static char PKMAP[] = "publickey.byname"; -static char UPDATEFILE[] = "updaters"; #else static char PKFILE[] = "/etc/publickey"; static char *err_string(); @@ -173,6 +174,7 @@ usage() /* * Set the entry in the public key file */ +int setpublicmap(name, public, secret) char *name; char *public; diff --git a/usr.bin/newkey/update.c b/usr.bin/newkey/update.c index 23248ef..972c0e3 100644 --- a/usr.bin/newkey/update.c +++ b/usr.bin/newkey/update.c @@ -42,48 +42,43 @@ static const char rcsid[] = /* * Administrative tool to add a new user to the publickey database */ -#include <stdio.h> -#include <stdlib.h> +#include <sys/types.h> +#include <sys/time.h> +#include <sys/resource.h> #include <rpc/rpc.h> #include <rpc/key_prot.h> #ifdef YP +#include <sys/wait.h> #include <rpcsvc/yp_prot.h> #include <rpcsvc/ypclnt.h> -#include <sys/wait.h> #include <netdb.h> #endif /* YP */ +#include <stdio.h> +#include <stdlib.h> #include <pwd.h> #include <string.h> #include <unistd.h> -#include <sys/resource.h> -#ifdef YP -#define MAXMAPNAMELEN 256 -#else -#define YPOP_CHANGE 1 /* change, do not add */ -#define YPOP_INSERT 2 /* add, do not change */ -#define YPOP_DELETE 3 /* delete this entry */ -#define YPOP_STORE 4 /* add, or change */ -#endif +#include "extern.h" #ifdef YP -static char *basename(); static char SHELL[] = "/bin/sh"; static char YPDBPATH[]="/var/yp"; /* This is defined but not used! */ -static char PKMAP[] = "publickey.byname"; static char UPDATEFILE[] = "updaters"; #else static char PKFILE[] = "/etc/publickey"; #endif /* YP */ #ifdef YP -static int _openchild __P(( char *, FILE **, FILE ** )); +static int _openchild __P((char *, FILE **, FILE **)); +static char *basename __P((char *path)); /* * Determine if requester is allowed to update the given map, * and update it if so. Returns the yp status, which is zero * if there is no access violation. */ +int mapupdate(requester, mapname, op, keylen, key, datalen, data) char *requester; char *mapname; @@ -148,7 +143,7 @@ mapupdate(requester, mapname, op, keylen, key, datalen, data) /* * returns pid, or -1 for failure */ -static +static pid_t _openchild(command, fto, ffrom) char *command; FILE **fto; |