From 17a4f4083decb34eb35b56bb29c94d47f40fea07 Mon Sep 17 00:00:00 2001 From: CSRG Date: Sun, 24 Jun 1990 23:33:18 -0800 Subject: [PATCH] BSD 4_4 development Work on file usr/src/kerberosIV/kstash/kstash.c Synthesized-from: CSRG/cd3/4.4 --- usr/src/kerberosIV/kstash/kstash.c | 97 ++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 usr/src/kerberosIV/kstash/kstash.c diff --git a/usr/src/kerberosIV/kstash/kstash.c b/usr/src/kerberosIV/kstash/kstash.c new file mode 100644 index 0000000000..cd11ad6400 --- /dev/null +++ b/usr/src/kerberosIV/kstash/kstash.c @@ -0,0 +1,97 @@ +/* + * $Source: /usr/src/kerberosIV/kstash/RCS/kstash.c,v $ + * $Author: kfall $ + * + * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute + * of Technology + * + * For copying and distribution information, please see the file + * . + * + * Description. + */ + +#ifndef lint +static char rcsid_kstash_c[] = +"$Header: /usr/src/kerberosIV/kstash/RCS/kstash.c,v 4.1 90/06/25 21:33:13 kfall Exp $"; +#endif lint + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +extern int errno; + +/* change this later, but krblib_dbm needs it for now */ +char *progname; + +static C_Block master_key; +static Key_schedule master_key_schedule; +static Principal s_name_data; /* for services requested */ +static unsigned char master_key_version; +int debug; +static int more; +static int kfile; +static void clear_secrets(); + +main(argc, argv) + int argc; + char **argv; +{ + long n; + if (n = kerb_init()) { + fprintf(stderr, "Kerberos db and cache init failed = %d\n", n); + exit(1); + } + + if (kdb_get_master_key (TRUE, master_key, master_key_schedule) != 0) { + fprintf (stderr, "%s: Couldn't read master key.\n", argv[0]); + fflush (stderr); + clear_secrets(); + exit (-1); + } + + if (kdb_verify_master_key (master_key, master_key_schedule, stderr) < 0) { + clear_secrets(); + exit (-1); + } + + kfile = open(MKEYFILE, O_TRUNC | O_RDWR | O_CREAT, 0600); + if (kfile < 0) { + clear_secrets(); + fprintf(stderr, "\n\07\07%s: Unable to open master key file\n", + argv[0]); + exit(1); + } + if (write(kfile, (char *) master_key, 8) < 0) { + clear_secrets(); + fprintf(stderr, "\n%s: Write I/O error on master key file\n", + argv[0]); + exit(1); + } + (void) close(kfile); + clear_secrets(); +} + +static void +clear_secrets() +{ + bzero(master_key_schedule, sizeof(master_key_schedule)); + bzero(master_key, sizeof(master_key)); +} -- 2.20.1