move common code for opening the keytab to ktutil.c

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10383 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
2001-07-23 09:46:41 +00:00
parent fd34ebd90c
commit 4d7d46d8b7
7 changed files with 36 additions and 79 deletions

View File

@@ -78,24 +78,9 @@ kt_add(int argc, char **argv)
arg_printusage(args, num_args, "ktutil add", ""); arg_printusage(args, num_args, "ktutil add", "");
return 1; return 1;
} }
if (keytab_string == NULL) { if((keytab = ktutil_open_keytab()) == NULL)
ret = krb5_kt_default_modify_name (context, keytab_buf,
sizeof(keytab_buf));
if (ret) {
krb5_warn(context, ret, "krb5_kt_default_modify_name");
return 1;
}
keytab_string = keytab_buf;
}
ret = krb5_kt_resolve(context, keytab_string, &keytab);
if (ret) {
krb5_warn(context, ret, "resolving keytab %s", keytab_string);
return 1; return 1;
}
if (verbose_flag)
fprintf (stderr, "Using keytab %s\n", keytab_string);
memset(&entry, 0, sizeof(entry)); memset(&entry, 0, sizeof(entry));
if(principal_string == NULL) { if(principal_string == NULL) {
printf("Principal: "); printf("Principal: ");

View File

@@ -150,24 +150,9 @@ kt_change (int argc, char **argv)
return 1; return 1;
} }
if (keytab_string == NULL) { if((keytab = ktutil_open_keytab()) == NULL)
ret = krb5_kt_default_modify_name (context, keytab_buf,
sizeof(keytab_buf));
if (ret) {
krb5_warn(context, ret, "krb5_kt_default_modify_name");
return 1;
}
keytab_string = keytab_buf;
}
ret = krb5_kt_resolve(context, keytab_string, &keytab);
if (ret) {
krb5_warn(context, ret, "resolving keytab %s", keytab_string);
return 1; return 1;
}
if (verbose_flag)
fprintf (stderr, "Using keytab %s\n", keytab_string);
j = 0; j = 0;
max = 10; max = 10;
princs = malloc (max * sizeof(*princs)); princs = malloc (max * sizeof(*princs));

View File

@@ -87,20 +87,8 @@ kt_get(int argc, char **argv)
return 1; return 1;
} }
if (keytab_string == NULL) { if((keytab = ktutil_open_keytab()) == NULL)
ret = krb5_kt_default_modify_name (context, keytab_buf,
sizeof(keytab_buf));
if (ret) {
krb5_warn(context, ret, "krb5_kt_default_modify_name");
return 1;
}
keytab_string = keytab_buf;
}
ret = krb5_kt_resolve(context, keytab_string, &keytab);
if (ret) {
krb5_warn(context, ret, "resolving keytab %s", keytab_string);
return 1; return 1;
}
if (etype_strs.num_strings) { if (etype_strs.num_strings) {
int i; int i;
@@ -140,6 +128,9 @@ kt_get(int argc, char **argv)
conf.mask |= KADM5_CONFIG_KADMIND_PORT; conf.mask |= KADM5_CONFIG_KADMIND_PORT;
} }
/* should get realm from each principal, instead of doing
everything with the same (local) realm */
ret = kadm5_init_with_password_ctx(context, ret = kadm5_init_with_password_ctx(context,
principal, principal,
NULL, NULL,

View File

@@ -40,7 +40,7 @@ static int help_flag;
static int version_flag; static int version_flag;
int verbose_flag; int verbose_flag;
char *keytab_string; char *keytab_string;
char keytab_buf[256]; static char keytab_buf[256];
static int help(int argc, char **argv); static int help(int argc, char **argv);
@@ -108,6 +108,31 @@ static int num_args = sizeof(args) / sizeof(args[0]);
krb5_context context; krb5_context context;
krb5_keytab
ktutil_open_keytab(void)
{
krb5_error_code ret;
krb5_keytab keytab;
if (keytab_string == NULL) {
ret = krb5_kt_default_modify_name (context, keytab_buf,
sizeof(keytab_buf));
if (ret) {
krb5_warn(context, ret, "krb5_kt_default_modify_name");
return NULL;
}
keytab_string = keytab_buf;
}
ret = krb5_kt_resolve(context, keytab_string, &keytab);
if (ret) {
krb5_warn(context, ret, "resolving keytab %s", keytab_string);
return NULL;
}
if (verbose_flag)
fprintf (stderr, "Using keytab %s\n", keytab_string);
return keytab;
}
static int static int
help(int argc, char **argv) help(int argc, char **argv)
{ {

View File

@@ -71,7 +71,8 @@ extern krb5_context context;
extern int verbose_flag; extern int verbose_flag;
extern char *keytab_string; extern char *keytab_string;
extern char keytab_buf[256];
krb5_keytab ktutil_open_keytab(void);
int kt_add (int argc, char **argv); int kt_add (int argc, char **argv);
int kt_change (int argc, char **argv); int kt_change (int argc, char **argv);

View File

@@ -132,20 +132,8 @@ kt_purge(int argc, char **argv)
return 1; return 1;
} }
if (keytab_string == NULL) { if((keytab = ktutil_open_keytab()) == NULL)
ret = krb5_kt_default_modify_name (context, keytab_buf,
sizeof(keytab_buf));
if (ret) {
krb5_warn(context, ret, "krb5_kt_default_modify_name");
return 1;
}
keytab_string = keytab_buf;
}
ret = krb5_kt_resolve(context, keytab_string, &keytab);
if (ret) {
krb5_warn(context, ret, "resolving keytab %s", keytab_string);
return 1; return 1;
}
ret = krb5_kt_start_seq_get(context, keytab, &cursor); ret = krb5_kt_start_seq_get(context, keytab, &cursor);
if(ret){ if(ret){
@@ -153,9 +141,6 @@ kt_purge(int argc, char **argv)
goto out; goto out;
} }
if (verbose_flag)
fprintf (stderr, "Using keytab %s\n", keytab_string);
while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0) { while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0) {
add_entry (entry.principal, entry.vno, &head); add_entry (entry.principal, entry.vno, &head);
krb5_kt_free_entry(context, &entry); krb5_kt_free_entry(context, &entry);

View File

@@ -96,24 +96,9 @@ kt_remove(int argc, char **argv)
return 1; return 1;
} }
if (keytab_string == NULL) { if((keytab = ktutil_open_keytab()) == NULL)
ret = krb5_kt_default_modify_name (context, keytab_buf,
sizeof(keytab_buf));
if (ret) {
krb5_warn(context, ret, "krb5_kt_default_modify_name");
return 1;
}
keytab_string = keytab_buf;
}
ret = krb5_kt_resolve(context, keytab_string, &keytab);
if (ret) {
krb5_warn(context, ret, "resolving keytab %s", keytab_string);
return 1; return 1;
}
if (verbose_flag)
fprintf (stderr, "Using keytab %s\n", keytab_string);
entry.principal = principal; entry.principal = principal;
entry.keyblock.keytype = enctype; entry.keyblock.keytype = enctype;
entry.vno = kvno; entry.vno = kvno;