int did_log = 0;
const char *emsg = 0;
krb5_keylist_node *tmp_mkey_list;
+ struct kdc_request_state *state = NULL;
+
#if APPLE_PKINIT
asReqDebug("process_as_req top realm %s name %s\n",
session_key.contents = 0;
enc_tkt_reply.authorization_data = NULL;
+ errcode = kdc_make_rstate(&state);
+ if (errcode != 0) {
+ status = "constructing state";
+ goto errout;
+ }
+ errcode = kdc_find_fast(&request, req_pkt, NULL /*TGS key*/, state);
+ if (errcode)
+ goto errout;
+
if (!request->client) {
status = "NULL_CLIENT";
errcode = KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN;
}
krb5_free_data_contents(kdc_context, &e_data);
+ kdc_free_rstate(state);
assert(did_log != 0);
return errcode;
}
krb5_data *tgs_1 =NULL, *server_1 = NULL;
krb5_principal krbtgt_princ;
krb5_kvno ticket_kvno = 0;
+ struct kdc_request_state *state = NULL;
+ krb5_pa_data *pa_tgs_req; /*points into request*/
+ krb5_data scratch;
session_key.contents = NULL;
return retval;
}
errcode = kdc_process_tgs_req(request, from, pkt, &header_ticket,
- &krbtgt, &k_nprincs, &subkey);
+ &krbtgt, &k_nprincs, &subkey, &pa_tgs_req);
if (header_ticket && header_ticket->enc_part2 &&
(errcode2 = krb5_unparse_name(kdc_context,
header_ticket->enc_part2->client,
status="UNEXPECTED NULL in header_ticket";
goto cleanup;
}
-
+ scratch.length = pa_tgs_req->length;
+ scratch.data = (char *) pa_tgs_req->contents;
+ errcode = kdc_find_fast(&request, &scratch, subkey, state);
+ if (errcode !=0) {
+ status = "kdc_find_fast";
+ goto cleanup;
+ }
+
+
/*
* Pointer to the encrypted part of the header ticket, which may be
* replaced to point to the encrypted part of the evidence ticket
krb5_free_ticket(kdc_context, header_ticket);
if (request != NULL)
krb5_free_kdc_req(kdc_context, request);
+ if (state)
+ kdc_free_rstate(state);
if (cname != NULL)
free(cname);
if (sname != NULL)
kdc_process_tgs_req(krb5_kdc_req *request, const krb5_fulladdr *from,
krb5_data *pkt, krb5_ticket **ticket,
krb5_db_entry *krbtgt, int *nprincs,
- krb5_keyblock **subkey)
+ krb5_keyblock **subkey,
+ krb5_pa_data **pa_tgs_req)
{
krb5_pa_data * tmppa;
krb5_ap_req * apreq;
}
}
+ if (retval == 0)
+ *pa_tgs_req = tmppa;
cleanup_authenticator:
krb5_free_authenticator(kdc_context, authenticator);