X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=mech_eap%2Fstore_cred.c;h=2847f426ff570f80297bf6d63e29bada6f54de5e;hb=70aabaea618f8dc42336a8f27e6443b3f2655830;hp=ce45d02ead4b60bb6878e0e7e938e5f01f406b57;hpb=c9ee9a0e791adbddcf06191a26bfaf7f9bc936a8;p=moonshot.git diff --git a/mech_eap/store_cred.c b/mech_eap/store_cred.c index ce45d02..2847f42 100644 --- a/mech_eap/store_cred.c +++ b/mech_eap/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 @@ -34,13 +34,50 @@ OM_uint32 gss_store_cred(OM_uint32 *minor, - const gss_cred_id_t input_cred_handle, + const gss_cred_id_t cred, gss_cred_usage_t input_usage, - const gss_OID desired_mech, + 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) { - GSSEAP_NOT_IMPLEMENTED; + 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->reauthCred != GSS_C_NO_CREDENTIAL) { + major = gssStoreCred(minor, + cred->reauthCred, + input_usage, + (gss_OID)gss_mech_krb5, + overwrite_cred, + default_cred, + elements_stored, + cred_usage_stored); + } +#endif + + GSSEAP_MUTEX_UNLOCK(&cred->mutex); + + return major; }