diff options
| author | cvs2svn <cvs2svn@FreeBSD.org> | 1995-09-15 20:15:11 +0000 |
|---|---|---|
| committer | cvs2svn <cvs2svn@FreeBSD.org> | 1995-09-15 20:15:11 +0000 |
| commit | bfbc580797babffd502df152b40ad384c9638c2c (patch) | |
| tree | d1b8ea42f49e396daa8df631fbbd15a1973c8fdc /eBones/lib/libkrb/get_cred.c | |
| parent | 93ecce1be0f50592ae4f2c3dc798a862c4fae52c (diff) | |
Notes
Diffstat (limited to 'eBones/lib/libkrb/get_cred.c')
| -rw-r--r-- | eBones/lib/libkrb/get_cred.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/eBones/lib/libkrb/get_cred.c b/eBones/lib/libkrb/get_cred.c new file mode 100644 index 000000000000..60233867ebd5 --- /dev/null +++ b/eBones/lib/libkrb/get_cred.c @@ -0,0 +1,63 @@ +/* + * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute + * of Technology. + * For copying and distribution information, please see the file + * <Copyright.MIT>. + * + * from: get_cred.c,v 4.10 89/05/31 17:46:22 jtkohl Exp $ + * $Id: get_cred.c,v 1.3 1995/07/18 16:38:28 mark Exp $ + */ + +#if 0 +#ifndef lint +static char *rcsid = +"$Id: get_cred.c,v 1.3 1995/07/18 16:38:28 mark Exp $"; +#endif /* lint */ +#endif + +#include <stdio.h> +#include <krb.h> + +/* + * krb_get_cred takes a service name, instance, and realm, and a + * structure of type CREDENTIALS to be filled in with ticket + * information. It then searches the ticket file for the appropriate + * ticket and fills in the structure with the corresponding + * information from the file. If successful, it returns KSUCCESS. + * On failure it returns a Kerberos error code. + */ + +int +krb_get_cred(service,instance,realm,c) + char *service; /* Service name */ + char *instance; /* Instance */ + char *realm; /* Auth domain */ + CREDENTIALS *c; /* Credentials struct */ +{ + int tf_status; /* return value of tf function calls */ + + /* Open ticket file and lock it for shared reading */ + if ((tf_status = tf_init(TKT_FILE, R_TKT_FIL)) != KSUCCESS) + return(tf_status); + + /* Copy principal's name and instance into the CREDENTIALS struc c */ + + if ( (tf_status = tf_get_pname(c->pname)) != KSUCCESS || + (tf_status = tf_get_pinst(c->pinst)) != KSUCCESS ) + return (tf_status); + + /* Search for requested service credentials and copy into c */ + + while ((tf_status = tf_get_cred(c)) == KSUCCESS) { + /* Is this the right ticket? */ + if ((strcmp(c->service,service) == 0) && + (strcmp(c->instance,instance) == 0) && + (strcmp(c->realm,realm) == 0)) + break; + } + (void) tf_close(); + + if (tf_status == EOF) + return (GC_NOTKT); + return(tf_status); +} |
