X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=store_cred.c;h=c294841f8dd44561b8f23f1cbc89ca464944fad9;hb=refs%2Fheads%2Fddf-name;hp=3e0654bfc89622e45b276dd4605e2a0311459de1;hpb=31cef49681566dc99790812f31de834dfce02c74;p=mech_eap.orig diff --git a/store_cred.c b/store_cred.c index 3e0654b..c294841 100644 --- a/store_cred.c +++ b/store_cred.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, JANET(UK) + * Copyright (c) 2011, JANET(UK) * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -32,3 +32,52 @@ #include "gssapiP_eap.h" +OM_uint32 +gss_store_cred(OM_uint32 *minor, + const gss_cred_id_t cred, + gss_cred_usage_t input_usage, + const gss_OID desired_mech GSSEAP_UNUSED, +#ifdef GSSEAP_ENABLE_REAUTH + OM_uint32 overwrite_cred, + OM_uint32 default_cred, +#else + OM_uint32 overwrite_cred GSSEAP_UNUSED, + OM_uint32 default_cred GSSEAP_UNUSED, +#endif + gss_OID_set *elements_stored, + gss_cred_usage_t *cred_usage_stored) +{ + OM_uint32 major; + + if (elements_stored != NULL) + *elements_stored = GSS_C_NO_OID_SET; + if (cred_usage_stored != NULL) + *cred_usage_stored = input_usage; + + if (cred == GSS_C_NO_CREDENTIAL) { + *minor = EINVAL; + return GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CRED; + } + + GSSEAP_MUTEX_LOCK(&cred->mutex); + + major = GSS_S_COMPLETE; + *minor = 0; + +#ifdef GSSEAP_ENABLE_REAUTH + if (cred->krbCred != GSS_C_NO_CREDENTIAL) { + major = gssStoreCred(minor, + cred->krbCred, + input_usage, + (gss_OID)gss_mech_krb5, + overwrite_cred, + default_cred, + elements_stored, + cred_usage_stored); + } +#endif + + GSSEAP_MUTEX_UNLOCK(&cred->mutex); + + return major; +}