inquire_cred_by_mech.c revision 178826
1133819Stjr/* 2133819Stjr * Copyright (c) 2003, 2006, 2007 Kungliga Tekniska H�gskolan 3133819Stjr * (Royal Institute of Technology, Stockholm, Sweden). 4133819Stjr * All rights reserved. 5133819Stjr * 6227694Sed * Redistribution and use in source and binary forms, with or without 7133819Stjr * modification, are permitted provided that the following conditions 8133819Stjr * are met: 9133819Stjr * 10133819Stjr * 1. Redistributions of source code must retain the above copyright 11133819Stjr * notice, this list of conditions and the following disclaimer. 12133819Stjr * 13133819Stjr * 2. Redistributions in binary form must reproduce the above copyright 14177999Skib * notice, this list of conditions and the following disclaimer in the 15227776Slstewart * documentation and/or other materials provided with the distribution. 16164199Sru * 17133819Stjr * 3. Neither the name of the Institute nor the names of its contributors 18133819Stjr * may be used to endorse or promote products derived from this software 19161330Sjhb * without specific prior written permission. 20161330Sjhb * 21133819Stjr * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 22133819Stjr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23133819Stjr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24133819Stjr * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 25133819Stjr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26133819Stjr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27133819Stjr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28133819Stjr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29133819Stjr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30133819Stjr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31133819Stjr * SUCH DAMAGE. 32133819Stjr */ 33133819Stjr 34133819Stjr#include "krb5/gsskrb5_locl.h" 35133819Stjr 36143198SsobomaxRCSID("$Id: inquire_cred_by_mech.c 20634 2007-05-09 15:33:01Z lha $"); 37133819Stjr 38133819StjrOM_uint32 _gsskrb5_inquire_cred_by_mech ( 39133819Stjr OM_uint32 * minor_status, 40133819Stjr const gss_cred_id_t cred_handle, 41133819Stjr const gss_OID mech_type, 42133819Stjr gss_name_t * name, 43133819Stjr OM_uint32 * initiator_lifetime, 44133819Stjr OM_uint32 * acceptor_lifetime, 45133819Stjr gss_cred_usage_t * cred_usage 46133819Stjr ) 47133819Stjr{ 48133819Stjr gss_cred_usage_t usage; 49133819Stjr OM_uint32 maj_stat; 50133819Stjr OM_uint32 lifetime; 51133819Stjr 52133819Stjr maj_stat = 53133819Stjr _gsskrb5_inquire_cred (minor_status, cred_handle, 54133819Stjr name, &lifetime, &usage, NULL); 55133819Stjr if (maj_stat) 56133819Stjr return maj_stat; 57133819Stjr 58133819Stjr if (initiator_lifetime) { 59133819Stjr if (usage == GSS_C_INITIATE || usage == GSS_C_BOTH) 60133819Stjr *initiator_lifetime = lifetime; 61133819Stjr else 62133819Stjr *initiator_lifetime = 0; 63210432Skib } 64210432Skib 65133819Stjr if (acceptor_lifetime) { 66133819Stjr if (usage == GSS_C_ACCEPT || usage == GSS_C_BOTH) 67133819Stjr *acceptor_lifetime = lifetime; 68133819Stjr else 69133819Stjr *acceptor_lifetime = 0; 70133819Stjr } 71133819Stjr 72133819Stjr if (cred_usage) 73133819Stjr *cred_usage = usage; 74133819Stjr 75133819Stjr return GSS_S_COMPLETE; 76133819Stjr} 77133819Stjr