remove code that depend on kerberos 4 library

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20458 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2007-04-19 20:41:27 +00:00
parent 5ef5d670e0
commit 0d1b4d2de9
5 changed files with 4 additions and 310 deletions

View File

@@ -141,10 +141,6 @@ main (int argc, char **argv)
krb5_free_context (context); krb5_free_context (context);
#if KRB4
if(dest_tkt_flag && dest_tkt ())
exit_val = 1;
#endif
if (unlog_flag && k_hasafs ()) { if (unlog_flag && k_hasafs ()) {
if (k_unlog ()) if (k_unlog ())
exit_val = 1; exit_val = 1;

View File

@@ -34,9 +34,7 @@
#include "kuser_locl.h" #include "kuser_locl.h"
RCSID("$Id$"); RCSID("$Id$");
#ifndef KRB4
#include "krb5-v4compat.h" #include "krb5-v4compat.h"
#endif
struct krb5_pk_identity; struct krb5_pk_identity;
struct krb5_pk_cert; struct krb5_pk_cert;
@@ -183,130 +181,6 @@ usage (int ret)
exit (ret); exit (ret);
} }
#ifdef KRB4
/* for when the KDC tells us it's a v4 one, we try to talk that */
static int
key_to_key(const char *user,
char *instance,
const char *realm,
const void *arg,
des_cblock *key)
{
memcpy(key, arg, sizeof(des_cblock));
return 0;
}
static int
do_v4_fallback (krb5_context context,
const krb5_principal principal,
int lifetime,
int use_srvtab, const char *srvtab_str,
const char *passwd)
{
int ret;
krb_principal princ;
des_cblock key;
krb5_error_code kret;
if (lifetime == 0)
lifetime = DEFAULT_TKT_LIFE;
else
lifetime = krb_time_to_life (0, lifetime);
kret = krb5_524_conv_principal (context, principal,
princ.name,
princ.instance,
princ.realm);
if (kret) {
krb5_warn (context, kret, "krb5_524_conv_principal");
return 1;
}
if (use_srvtab || srvtab_str) {
if (srvtab_str == NULL)
srvtab_str = KEYFILE;
ret = read_service_key (princ.name, princ.instance, princ.realm,
0, srvtab_str, (char *)&key);
if (ret) {
warnx ("read_service_key %s: %s", srvtab_str,
krb_get_err_text (ret));
return 1;
}
ret = krb_get_in_tkt (princ.name, princ.instance, princ.realm,
KRB_TICKET_GRANTING_TICKET, princ.realm,
lifetime, key_to_key, NULL, key);
} else {
ret = krb_get_pw_in_tkt(princ.name, princ.instance, princ.realm,
KRB_TICKET_GRANTING_TICKET, princ.realm,
lifetime, passwd);
}
memset (key, 0, sizeof(key));
if (ret) {
warnx ("%s", krb_get_err_text(ret));
return 1;
}
if (do_afslog && k_hasafs()) {
if ((ret = krb_afslog(NULL, NULL)) != 0 && ret != KDC_PR_UNKNOWN) {
if(ret > 0)
warnx ("%s", krb_get_err_text(ret));
else
warnx ("failed to store AFS token");
}
}
return 0;
}
/*
* the special version of get_default_principal that takes v4 into account
*/
static krb5_error_code
kinit_get_default_principal (krb5_context context,
krb5_principal *princ)
{
krb5_error_code ret;
krb5_ccache id;
krb_principal v4_princ;
int kret;
ret = krb5_cc_default (context, &id);
if (ret == 0) {
ret = krb5_cc_get_principal (context, id, princ);
krb5_cc_close (context, id);
if (ret == 0)
return 0;
}
kret = krb_get_tf_fullname (tkt_string(),
v4_princ.name,
v4_princ.instance,
v4_princ.realm);
if (kret == KSUCCESS) {
ret = krb5_425_conv_principal (context,
v4_princ.name,
v4_princ.instance,
v4_princ.realm,
princ);
if (ret == 0)
return 0;
}
return krb5_get_default_principal (context, princ);
}
#else /* !KRB4 */
static krb5_error_code
kinit_get_default_principal (krb5_context context,
krb5_principal *princ)
{
return krb5_get_default_principal (context, princ);
}
#endif /* !KRB4 */
static krb5_error_code static krb5_error_code
get_server(krb5_context context, get_server(krb5_context context,
krb5_principal client, krb5_principal client,
@@ -635,19 +509,6 @@ get_new_tickets(krb5_context context,
opt); opt);
} }
krb5_get_init_creds_opt_free(context, opt); krb5_get_init_creds_opt_free(context, opt);
#ifdef KRB4
if (ret == KRB5KRB_AP_ERR_V4_REPLY || ret == KRB5_KDC_UNREACH) {
int exit_val;
exit_val = do_v4_fallback (context, principal, ticket_life,
use_keytab, keytab_str, passwd);
get_v4_tgt = 0;
do_afslog = 0;
memset(passwd, 0, sizeof(passwd));
if (exit_val == 0 || ret == KRB5KRB_AP_ERR_V4_REPLY)
return exit_val;
}
#endif
memset(passwd, 0, sizeof(passwd)); memset(passwd, 0, sizeof(passwd));
switch(ret){ switch(ret){
@@ -660,6 +521,9 @@ get_new_tickets(krb5_context context,
case KRB5KDC_ERR_PREAUTH_FAILED: case KRB5KDC_ERR_PREAUTH_FAILED:
krb5_errx(context, 1, "Password incorrect"); krb5_errx(context, 1, "Password incorrect");
break; break;
case KRB5KRB_AP_ERR_V4_REPLY:
krb5_errx(context, 1, "Looks like a Kerberos 4 reply");
break;
default: default:
krb5_err(context, 1, ret, "krb5_get_init_creds"); krb5_err(context, 1, ret, "krb5_get_init_creds");
} }
@@ -813,7 +677,7 @@ main (int argc, char **argv)
if (ret) if (ret)
krb5_err (context, 1, ret, "krb5_parse_name"); krb5_err (context, 1, ret, "krb5_parse_name");
} else { } else {
ret = kinit_get_default_principal (context, &principal); ret = krb5_get_default_principal (context, &principal);
if (ret) if (ret)
krb5_err (context, 1, ret, "krb5_get_default_principal"); krb5_err (context, 1, ret, "krb5_get_default_principal");
} }

View File

@@ -45,7 +45,6 @@
.Xc .Xc
.Oc .Oc
.Op Fl s | Fl t | Fl -test .Op Fl s | Fl t | Fl -test
.Op Fl 4 | Fl -v4
.Op Fl T | Fl -tokens .Op Fl T | Fl -tokens
.Op Fl 5 | Fl -v5 .Op Fl 5 | Fl -v5
.Op Fl v | Fl -verbose .Op Fl v | Fl -verbose
@@ -74,11 +73,6 @@ credential cache to list
Test for there being an active and valid TGT for the local realm of Test for there being an active and valid TGT for the local realm of
the user in the credential cache. the user in the credential cache.
.It Xo .It Xo
.Fl 4 ,
.Fl -v4
.Xc
display v4 tickets
.It Xo
.Fl T , .Fl T ,
.Fl -tokens .Fl -tokens
.Xc .Xc

View File

@@ -353,145 +353,6 @@ check_for_tgt (krb5_context context,
return expired; return expired;
} }
#ifdef KRB4
/* prints the approximate kdc time differential as something human
readable */
static void
print_time_diff(int do_verbose)
{
int d = abs(krb_get_kdc_time_diff());
char buf[80];
if ((do_verbose && d > 0) || d > 60) {
unparse_time_approx (d, buf, sizeof(buf));
printf ("Time diff:\t%s\n", buf);
}
}
/*
* return a short representation of `dp' in string form.
*/
static char *
short_date(int32_t dp)
{
char *cp;
time_t t = (time_t)dp;
if (t == (time_t)(-1L)) return "*** Never *** ";
cp = ctime(&t) + 4;
cp[15] = '\0';
return (cp);
}
/*
* Print a list of all the v4 tickets
*/
static int
display_v4_tickets (int do_verbose)
{
char *file;
int ret;
krb_principal princ;
CREDENTIALS cred;
int found = 0;
rtbl_t ct;
file = getenv ("KRBTKFILE");
if (file == NULL)
file = TKT_FILE;
printf("%17s: %s\n", "V4-ticket file", file);
ret = krb_get_tf_realm (file, princ.realm);
if (ret) {
warnx ("%s", krb_get_err_text(ret));
return 1;
}
ret = tf_init (file, R_TKT_FIL);
if (ret) {
warnx ("tf_init: %s", krb_get_err_text(ret));
return 1;
}
ret = tf_get_pname (princ.name);
if (ret) {
tf_close ();
warnx ("tf_get_pname: %s", krb_get_err_text(ret));
return 1;
}
ret = tf_get_pinst (princ.instance);
if (ret) {
tf_close ();
warnx ("tf_get_pname: %s", krb_get_err_text(ret));
return 1;
}
printf ("%17s: %s\n", "Principal", krb_unparse_name(&princ));
print_time_diff(do_verbose);
printf("\n");
ct = rtbl_create();
rtbl_add_column(ct, COL_ISSUED, 0);
rtbl_add_column(ct, COL_EXPIRES, 0);
if (do_verbose)
rtbl_add_column(ct, COL_PRINCIPAL_KVNO, 0);
else
rtbl_add_column(ct, COL_PRINCIPAL, 0);
rtbl_set_prefix(ct, " ");
rtbl_set_column_prefix(ct, COL_ISSUED, "");
while ((ret = tf_get_cred(&cred)) == KSUCCESS) {
struct timeval tv;
char buf1[20], buf2[20];
const char *pp;
found++;
strlcpy(buf1,
short_date(cred.issue_date),
sizeof(buf1));
cred.issue_date = krb_life_to_time(cred.issue_date, cred.lifetime);
krb_kdctimeofday(&tv);
if (do_verbose || tv.tv_sec < (unsigned long) cred.issue_date)
strlcpy(buf2,
short_date(cred.issue_date),
sizeof(buf2));
else
strlcpy(buf2,
">>> Expired <<<",
sizeof(buf2));
rtbl_add_column_entry(ct, COL_ISSUED, buf1);
rtbl_add_column_entry(ct, COL_EXPIRES, buf2);
pp = krb_unparse_name_long(cred.service,
cred.instance,
cred.realm);
if (do_verbose) {
char *tmp;
asprintf(&tmp, "%s (%d)", pp, cred.kvno);
rtbl_add_column_entry(ct, COL_PRINCIPAL_KVNO, tmp);
free(tmp);
} else {
rtbl_add_column_entry(ct, COL_PRINCIPAL, pp);
}
}
rtbl_format(ct, stdout);
rtbl_destroy(ct);
if (!found && ret == EOF)
printf("No tickets in file.\n");
tf_close();
/*
* should do NAT stuff here
*/
return 0;
}
#endif /* KRB4 */
/* /*
* Print a list of all AFS tokens * Print a list of all AFS tokens
*/ */
@@ -685,9 +546,6 @@ static int help_flag = 0;
static int do_verbose = 0; static int do_verbose = 0;
static int do_list_caches = 0; static int do_list_caches = 0;
static int do_test = 0; static int do_test = 0;
#ifdef KRB4
static int do_v4 = 1;
#endif
static int do_tokens = 0; static int do_tokens = 0;
static int do_v5 = 1; static int do_v5 = 1;
static char *cred_cache; static char *cred_cache;
@@ -700,10 +558,6 @@ static struct getargs args[] = {
{ "test", 't', arg_flag, &do_test, { "test", 't', arg_flag, &do_test,
"test for having tickets", NULL }, "test for having tickets", NULL },
{ NULL, 's', arg_flag, &do_test }, { NULL, 's', arg_flag, &do_test },
#ifdef KRB4
{ "v4", '4', arg_flag, &do_v4,
"display v4 tickets", NULL },
#endif
{ "tokens", 'T', arg_flag, &do_tokens, { "tokens", 'T', arg_flag, &do_tokens,
"display AFS tokens", NULL }, "display AFS tokens", NULL },
{ "v5", '5', arg_flag, &do_v5, { "v5", '5', arg_flag, &do_v5,
@@ -765,20 +619,9 @@ main (int argc, char **argv)
do_verbose, do_flags); do_verbose, do_flags);
if (!do_test) { if (!do_test) {
#ifdef KRB4
if (do_v4) {
if (do_v5)
printf ("\n");
display_v4_tickets (do_verbose);
}
#endif
if (do_tokens && k_hasafs ()) { if (do_tokens && k_hasafs ()) {
if (do_v5) if (do_v5)
printf ("\n"); printf ("\n");
#ifdef KRB4
else if (do_v4)
printf ("\n");
#endif
display_tokens (do_verbose); display_tokens (do_verbose);
} }
} }

View File

@@ -75,9 +75,6 @@
#include <err.h> #include <err.h>
#include <krb5.h> #include <krb5.h>
#ifdef KRB4
#include <krb.h>
#endif
#if defined(HAVE_SYS_IOCTL_H) && SunOS != 40 #if defined(HAVE_SYS_IOCTL_H) && SunOS != 40
#include <sys/ioctl.h> #include <sys/ioctl.h>
#endif #endif