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:
@@ -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;
|
||||||
|
144
kuser/kinit.c
144
kuser/kinit.c
@@ -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");
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
157
kuser/klist.c
157
kuser/klist.c
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user