move kafs_settoken here

use struct kafs_token


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@11836 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2003-03-18 04:07:23 +00:00
parent 40e331ad93
commit 378f185c62

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1995 - 2001 Kungliga Tekniska H<>gskolan
* Copyright (c) 1995 - 2001, 2003 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -35,22 +35,27 @@
RCSID("$Id$");
#ifdef KRB4
struct krb_kafs_data {
const char *realm;
};
static int
get_cred(kafs_data *data, const char *name, const char *inst,
const char *realm, CREDENTIALS *c)
const char *realm, uid_t uid, struct kafs_token *kt)
{
CREDENTIALS c;
KTEXT_ST tkt;
int ret = krb_get_cred((char*)name, (char*)inst, (char*)realm, c);
int ret = krb_get_cred((char*)name, (char*)inst, (char*)realm, &c);
if (ret) {
ret = krb_mk_req(&tkt, (char*)name, (char*)inst, (char*)realm, 0);
if (ret == KSUCCESS)
ret = krb_get_cred((char*)name, (char*)inst, (char*)realm, c);
ret = krb_get_cred((char*)name, (char*)inst, (char*)realm, &c);
}
if (ret == 0)
ret = _kafs_v4_to_kt(&c, uid, kt);
return ret;
}
@@ -62,11 +67,13 @@ afslog_uid_int(kafs_data *data,
const char *homedir)
{
int ret;
CREDENTIALS c;
struct kafs_token kt;
char name[ANAME_SZ];
char inst[INST_SZ];
char realm[REALM_SZ];
kt.ticket = NULL;
if (cell == 0 || cell[0] == 0)
return _kafs_afslog_all_local_cells (data, uid, homedir);
@@ -75,10 +82,13 @@ afslog_uid_int(kafs_data *data,
if (ret != KSUCCESS)
return ret;
ret = _kafs_get_cred(data, cell, realm_hint, realm, &c);
kt.ticket = NULL;
ret = _kafs_get_cred(data, cell, realm_hint, realm, uid, &kt);
if (ret == 0)
ret = kafs_settoken(cell, uid, &c);
if (ret == 0) {
ret = kafs_settoken_rxkad(cell, &kt.ct, kt.ticket, kt.ticket_len);
free(kt.ticket);
}
return ret;
}
@@ -135,3 +145,27 @@ krb_realm_of_cell(const char *cell, char **realm)
kd.get_realm = get_realm;
return _kafs_realm_of_cell(&kd, cell, realm);
}
int
kafs_settoken(const char *cell, uid_t uid, CREDENTIALS *c)
{
struct kafs_token kt;
int ret;
kt.ticket = NULL;
ret = _kafs_v4_to_kt(c, uid, &kt);
if (ret)
return ret;
if (kt.ct.EndTimestamp < time(NULL)) {
free(kt.ticket);
return 0;
}
ret = kafs_settoken_rxkad(cell, &kt.ct, kt.ticket, kt.ticket_len);
free(kt.ticket);
return ret;
}
#endif /* KRB4 */