&ptr, KG_TOK_CTX_AP_REQ,
input_token->length, 1))) {
mech_used = gss_mech_krb5;
+ } else if ((code == G_WRONG_MECH)
+ &&!(code = g_verify_token_header((gss_OID) gss_mech_iakerb,
+ &(ap_req.length),
+ &ptr, KG_TOK_CTX_AP_REQ,
+ input_token->length, 1))) {
+ mech_used = gss_mech_iakerb;
} else if ((code == G_WRONG_MECH)
&&!(code = g_verify_token_header((gss_OID) gss_mech_krb5_wrong,
&(ap_req.length),
input_token,
input_chan_bindings,
src_name,
- mech_type,
+ NULL,
output_token,
ret_flags,
time_rec,
ctx->gssc = NULL;
iakerb_release_context(ctx);
}
+ if (mech_type != NULL)
+ *mech_type = (gss_OID)gss_mech_krb5;
}
cleanup:
(gss_cred_id_t) kcred,
&ctx->gssc,
target_name,
- GSS_C_NULL_OID,
+ (gss_OID)gss_mech_iakerb,
req_flags,
time_req,
input_chan_bindings,
input_token,
- actual_mech_type,
+ NULL,
output_token,
ret_flags,
time_rec,
ctx->gssc = GSS_C_NO_CONTEXT;
iakerb_release_context(ctx);
}
+ if (actual_mech_type != NULL)
+ *actual_mech_type = (gss_OID)gss_mech_krb5;
} else {
if (actual_mech_type != NULL)
*actual_mech_type = (gss_OID)gss_mech_iakerb;
return major_status;
}
-
mech_type = (gss_OID) gss_mech_krb5_old;
} else if (g_OID_equal(mech_type, gss_mech_krb5_wrong)) {
mech_type = (gss_OID) gss_mech_krb5_wrong;
+ } else if (g_OID_equal(mech_type, gss_mech_iakerb)) {
+ mech_type = (gss_OID) gss_mech_iakerb;
} else {
k5_mutex_unlock(&cred->lock);
if (claimant_cred_handle == GSS_C_NO_CREDENTIAL)
if ((*oid != gss_mech_krb5) &&
(*oid != gss_mech_krb5_old) &&
(*oid != gss_mech_krb5_wrong) &&
+ (*oid != gss_mech_iakerb) &&
(*oid != gss_nt_krb5_name) &&
(*oid != gss_nt_krb5_principal)) {
/* We don't know about this OID */