+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
/*
* Copyright (c) 1991, 1992 Regents of the University of Michigan.
* All rights reserved.
#include <lber.h>
#include <ldap.h>
-#include <ldapconfig.h>
+#include "ldap_defaults.h"
#include "ud.h"
-#ifdef HAVE_KERBEROS
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
static char tktpath[20]; /* ticket file path */
static int kinit();
static int valid_tgt();
char *user;
#endif
char uidname[20];
-#ifdef HAVE_KERBEROS
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
char **krbnames; /* for kerberos names */
int kinited, ikrb;
char buf[5];
rdns = ldap_explode_dn(Entry.DN, TRUE);
printf(" Authenticating to the directory as \"%s\"...\n", *rdns );
-#ifdef HAVE_KERBEROS
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
/*
* First, if the user has a choice of auth methods, ask which
* one they want to use. if they want kerberos, ask which
(void) ldap_value_free(rdns);
return(0);
}
-#ifdef HAVE_KERBEROS
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
}
(void) ldap_value_free(krbnames);
#endif
if (ld_errno == LDAP_NO_SUCH_ATTRIBUTE)
fprintf(stderr, " Entry has no password\n");
else if (ld_errno == LDAP_INVALID_CREDENTIALS)
-#ifdef HAVE_KERBEROS
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
if ( authmethod == LDAP_AUTH_KRBV4 ) {
fprintf(stderr, " The Kerberos credentials are invalid.\n");
} else {
#endif
fprintf(stderr, " The password you provided is incorrect.\n");
-#ifdef HAVE_KERBEROS
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
}
#endif
else
return(0);
}
-#ifdef HAVE_KERBEROS
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
#define FIVEMINS ( 5 * 60 )
#define TGT "krbtgt"
-static void
-str2upper( char *s )
-{
- char *p;
-
- for ( p = s; *p != '\0'; ++p ) {
- *p = TOUPPER( (unsigned char) *p );
- }
-}
-
-
static int
valid_tgt( char **names )
{
/*
* realm must be uppercase for krb_ routines
*/
- str2upper( realm );
+ ldap_pvt_str2upper( realm );
#endif /* HAVE_AFS_KERBEROS */
/*
static char *kauth_name;
+#ifndef HAVE_KTH_KERBEROS
+
/*ARGSUSED*/
int
krbgetpass( char *user, char *inst, char *realm, char *pw, C_Block key )
return( 0 );
}
+#endif /* HAVE_KTH_KERBEROS */
static int
kinit( char *kname )
}
#ifdef HAVE_AFS_KERBEROS
- /*
- * realm must be uppercase for krb_ routines
- */
- str2upper( realm );
+ /* realm must be uppercase for AFS krb_ routines */
+ ldap_pvt_str2upper( realm );
#endif /* HAVE_AFS_KERBEROS */
+#ifdef HAVE_KTH_KERBEROS
+ /* Kth kerberos knows how to do both string to keys */
+ rc = krb_get_pw_in_tkt( name, inst, realm, TGT, realm,
+ DEFAULT_TKT_LIFE, 0 );
+#else
rc = krb_get_in_tkt( name, inst, realm, TGT, realm,
DEFAULT_TKT_LIFE, krbgetpass, NULL, NULL );
+#endif
if ( rc != KSUCCESS ) {
switch ( rc ) {