/*
 * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
 * of Technology 
 *
 * For copying and distribution information, please see the file
 * <mit-copyright.h>.
 *
 * Description.
 */

#include "adm_locl.h"

RCSID("$Id: kstash.c,v 1.8 1996/05/29 23:23:15 assar Exp $");

/* change this later, but krblib_dbm needs it for now */
char   *progname;

static des_cblock master_key;
static des_key_schedule master_key_schedule;

static void 
clear_secrets(void)
{
    memset(master_key_schedule, 0, sizeof(master_key_schedule));
    memset(master_key, 0, sizeof(master_key));
}

int
main(int argc, char **argv)
{
    long    n;
    int ret = 0;
    if ((n = kerb_init())) {
	fprintf(stderr, "Kerberos db and cache init failed = %ld\n", n);
	exit(1);
    }

    if (kdb_get_master_key (KDB_GET_PROMPT, &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);
    }

    ret = kdb_kstash(&master_key, MKEYFILE);
    if(ret < 0)
	perror("Error writing master key");
    else
	fprintf(stderr, "Wrote master key to %s\n", MKEYFILE);
    
    clear_secrets();
    return ret;
}
