add --keytab

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@8715 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
2000-07-20 06:53:42 +00:00
parent 7fe00714e8
commit b32eab5560

View File

@@ -169,6 +169,7 @@ static char *local_realm=NULL;
#ifdef KRB4 #ifdef KRB4
static int v4dump; static int v4dump;
#endif #endif
static char *ktname = NULL;
struct getargs args[] = { struct getargs args[] = {
{ "database", 'd', arg_string, &database, "database", "file" }, { "database", 'd', arg_string, &database, "database", "file" },
@@ -176,6 +177,7 @@ struct getargs args[] = {
{ "print", 0, arg_flag, &print_dump, "print dump to stdout" }, { "print", 0, arg_flag, &print_dump, "print dump to stdout" },
{ "inetd", 'i', arg_negative_flag, &inetd_flag, { "inetd", 'i', arg_negative_flag, &inetd_flag,
"Not started from inetd" }, "Not started from inetd" },
{ "keytab", 'k', arg_string, &ktname, "keytab to use for authentication", "keytab" },
#ifdef KRB4 #ifdef KRB4
{ "v4dump", '4', arg_flag, &v4dump, "create v4 type DB" }, { "v4dump", '4', arg_flag, &v4dump, "create v4 type DB" },
#endif #endif
@@ -295,10 +297,20 @@ main(int argc, char **argv)
krb5_princ_set_realm(context,server,&my_realm); krb5_princ_set_realm(context,server,&my_realm);
} }
ret = krb5_kt_default(context, &keytab); ret = krb5_kt_register(context, &hdb_kt_ops);
if(ret) if(ret)
krb5_err(context, 1, ret, "krb5_kt_default"); krb5_err(context, 1, ret, "krb5_kt_register");
if (ktname != NULL) {
ret = krb5_kt_resolve(context, ktname, &keytab);
if (ret)
krb5_err (context, 1, ret, "krb5_kt_resolve %s", ktname);
} else {
ret = krb5_kt_default (context, &keytab);
if (ret)
krb5_err (context, 1, ret, "krb5_kt_default");
}
ret = krb5_recvauth(context, &ac, &fd, HPROP_VERSION, ret = krb5_recvauth(context, &ac, &fd, HPROP_VERSION,
server, 0, keytab, NULL); server, 0, keytab, NULL);
if(ret) if(ret)
@@ -359,11 +371,11 @@ main(int argc, char **argv)
krb5_data data; krb5_data data;
hdb_entry entry; hdb_entry entry;
if(from_stdin){ if(from_stdin) {
ret = recv_clear(context, fd, &data); ret = recv_clear(context, fd, &data);
if(ret) if(ret)
krb5_err(context, 1, ret, "recv_clear"); krb5_err(context, 1, ret, "recv_clear");
}else{ } else {
ret = recv_priv(context, ac, fd, &data); ret = recv_priv(context, ac, fd, &data);
if(ret) if(ret)
krb5_err(context, 1, ret, "recv_priv"); krb5_err(context, 1, ret, "recv_priv");