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:
@@ -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 */
|
||||
|
Reference in New Issue
Block a user