示例#1
0
文件: cns.c 项目: Akasurde/krb5
/*
 * Function: Restore the saved credentials.
 *
 *	c - Pointer to saved credential cache.
 *
 *	pname - Principal name of session.
 *
 *	pinstance - Principal instance of session.
 *
 *	ncred - Number of credentials saved.
 */
static void
pop_credentials(CREDENTIALS *c, char *pname, char *pinstance, int ncred)
{
#ifdef KRB4
  int i;

  if (pname[0])
    in_tkt(pname, pinstance);
  else
    dest_tkt();

  if (ncred <= 0)
    return;

  for (i = 0; i < ncred; i++) {
    krb_save_credentials(c[i].service, c[i].instance, c[i].realm,
			 c[i].session, c[i].lifetime, c[i].kvno,
			 &(c[i].ticket_st),
			 c[i].issue_date);
  }

  free(c);
#endif
#ifdef KRB5     /* FIXME */
  return;
#endif
}
示例#2
0
int
v4_save_credentials(const char *sname,
		    const char *sinstance,
		    const char *srealm,
		    unsigned char *session,
		    int lifetime,
		    int kvno,
		    KTEXT ticket,
		    int32_t issue_date)
{
	int i;
	char *vname, *vinstance, *vrealm;

	vname = xstrdup(sname);
	if (vname == NULL) {
		return KRB5KRB_ERR_GENERIC;
	}
	vinstance = xstrdup(sinstance);
	if (vinstance == NULL) {
		xstrfree(vname);
		return KRB5KRB_ERR_GENERIC;
	}
	vrealm = xstrdup(srealm);
	if (vrealm == NULL) {
		xstrfree(vinstance);
		xstrfree(vname);
		return KRB5KRB_ERR_GENERIC;
	}

#ifdef HAVE_KRB_SAVE_CREDENTIALS
	i = krb_save_credentials(vname, vinstance, vrealm,
				 session, lifetime, kvno,
				 ticket, issue_date);
#elif defined(HAVE_SAVE_CREDENTIALS)
	i = save_credentials(vname, vinstance, vrealm,
			     session, lifetime, kvno,
			     ticket, issue_date);
#else
#error "Don't know how to save v4 credentials for your Kerberos IV implementation!"
#endif
	xstrfree(vrealm);
	xstrfree(vinstance);
	xstrfree(vname);

	return i;
}