summaryrefslogtreecommitdiff
path: root/usr.bin/keylogin
diff options
context:
space:
mode:
authorBill Paul <wpaul@FreeBSD.org>1997-05-28 15:58:29 +0000
committerBill Paul <wpaul@FreeBSD.org>1997-05-28 15:58:29 +0000
commit568e1ef3f7bf2879e546e02095c7a20b47ee5843 (patch)
tree4ed4d2bf63beb825dd94a2ae46feced68d6ce489 /usr.bin/keylogin
parentd9126ba1adb6d145cfebe495aa467a91e6892895 (diff)
downloadsrc-test-568e1ef3f7bf2879e546e02095c7a20b47ee5843.tar.gz
src-test-568e1ef3f7bf2879e546e02095c7a20b47ee5843.zip
Import keylogin.
This is the program used to loadsecret keys into the keyserv on the local host. Note: on some platforms, keylogin is automatically invoked by /usr/bin/login. We don't have any burning need for this yet.
Notes
Notes: svn path=/cvs2svn/branches/WPAUL/dist/; revision=26242
Diffstat (limited to 'usr.bin/keylogin')
-rw-r--r--usr.bin/keylogin/Makefile10
-rw-r--r--usr.bin/keylogin/keylogin.125
-rw-r--r--usr.bin/keylogin/keylogin.c80
3 files changed, 115 insertions, 0 deletions
diff --git a/usr.bin/keylogin/Makefile b/usr.bin/keylogin/Makefile
new file mode 100644
index 0000000000000..971a74623b79b
--- /dev/null
+++ b/usr.bin/keylogin/Makefile
@@ -0,0 +1,10 @@
+# @(#)Makefile 8.1 (Berkeley) 6/6/93
+
+PROG= keylogin
+SRCS= keylogin.c
+
+MAN1= keylogin.1
+
+LDADD+= -lrpcsvc
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/keylogin/keylogin.1 b/usr.bin/keylogin/keylogin.1
new file mode 100644
index 0000000000000..4244549821f4c
--- /dev/null
+++ b/usr.bin/keylogin/keylogin.1
@@ -0,0 +1,25 @@
+.\" @(#)keylogin.1 1.5 91/03/11 TIRPC 1.0;
+.\" Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved.
+.\"
+.TH KEYLOGIN 1 "9 September 1987"
+.SH NAME
+keylogin \- decrypt and store secret key
+.SH SYNOPSIS
+.B keylogin
+.SH DESCRIPTION
+.LP
+.B keylogin
+prompts the user for their login password, and uses it to decrypt
+the user's secret key stored in the
+.BR publickey (5)
+database. Once decrypted, the user's key is stored by the local
+key server process
+.BR keyserv (8C)
+to be used by any secure network services, such as
+.SM NFS\s0.
+.SH "SEE ALSO"
+.BR chkey (1),
+.BR login (1),
+.BR publickey (5),
+.BR keyserv (8C),
+.BR newkey (8)
diff --git a/usr.bin/keylogin/keylogin.c b/usr.bin/keylogin/keylogin.c
new file mode 100644
index 0000000000000..55529c85aeb89
--- /dev/null
+++ b/usr.bin/keylogin/keylogin.c
@@ -0,0 +1,80 @@
+/*
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)keylogin.c 1.4 91/03/11 Copyr 1986 Sun Micro";
+#endif
+
+/*
+ * Copyright (C) 1986, Sun Microsystems, Inc.
+ */
+
+/*
+ * Set secret key on local machine
+ */
+#include <stdio.h>
+#include <string.h>
+#include <pwd.h>
+#include <unistd.h>
+#include <rpc/rpc.h>
+#include <rpc/key_prot.h>
+
+int
+main()
+{
+ char fullname[MAXNETNAMELEN + 1];
+ struct netstarg netst;
+
+ if (!getnetname(fullname)) {
+ fprintf(stderr, "netname lookup failed -- make sure the ");
+ fprintf(stderr, "system domain name is set.\n");
+ exit(1);
+ }
+
+ if (! getsecretkey(fullname, (char *)&(netst.st_priv_key),
+ getpass("Password:"))) {
+ fprintf(stderr, "Can't find %s's secret key\n", fullname);
+ exit(1);
+ }
+ if (netst.st_priv_key[0] == 0) {
+ fprintf(stderr, "Password incorrect for %s\n", fullname);
+ exit(1);
+ }
+
+ netst.st_pub_key[0] = 0;
+ netst.st_netname = strdup(fullname);
+
+ if (key_setnet(&netst) < 0) {
+ fprintf(stderr, "Could not set %s's secret key\n", fullname);
+ fprintf(stderr, "Maybe the keyserver is down?\n");
+ exit(1);
+ }
+ exit(0);
+ /* NOTREACHED */
+}