summaryrefslogtreecommitdiffstats
path: root/src/admin
diff options
context:
space:
mode:
Diffstat (limited to 'src/admin')
-rw-r--r--src/admin/edit/loadv4.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/admin/edit/loadv4.c b/src/admin/edit/loadv4.c
index d2d063a1d..1d9def177 100644
--- a/src/admin/edit/loadv4.c
+++ b/src/admin/edit/loadv4.c
@@ -37,6 +37,8 @@ static C_Block master_key;
static Key_schedule master_key_schedule;
static long master_key_version;
+static char *v4_mkeyfile = "/.k";
+
#include "k5-int.h"
#include "com_err.h"
#include "adm.h"
@@ -434,8 +436,21 @@ char *pname, *name;
int manual;
char *dumpfile;
{
- des_read_password(master_key, "Kerberos master key: ", 1);
- printf("\n");
+ int fd;
+ int ok = 0;
+
+ if (!manual) {
+ fd = open(v4_mkeyfile, O_RDONLY, 0600);
+ if (fd >= 0) {
+ if (read(fd, master_key, sizeof(master_key)) == sizeof(master_key))
+ ok = 1;
+ close(fd);
+ }
+ }
+ if (!ok) {
+ des_read_password(master_key, "V4 Kerberos master key: ", 0);
+ printf("\n");
+ }
key_sched(master_key, master_key_schedule);
return 0;
}