diff options
author | Sam Hartman <hartmans@mit.edu> | 2009-04-05 21:11:26 +0000 |
---|---|---|
committer | Sam Hartman <hartmans@mit.edu> | 2009-04-05 21:11:26 +0000 |
commit | 427b73f0c2e2c1278ae9dddfa18a35d01fd85a8d (patch) | |
tree | 30e7ebd3638bbc5296ccfabddea13e674470f6ab /src | |
parent | f7c71ff3c2d543986e3a9dbb881fcece4feefd3b (diff) | |
download | krb5-427b73f0c2e2c1278ae9dddfa18a35d01fd85a8d.tar.gz krb5-427b73f0c2e2c1278ae9dddfa18a35d01fd85a8d.tar.xz krb5-427b73f0c2e2c1278ae9dddfa18a35d01fd85a8d.zip |
Implement KDC side of TGS FAST
Most of the KDC side of TGS FAST was already present. This adds
correct generation of the reply key.
ticket: 6439
target_version: 1.7
tags: pullup
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@22171 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r-- | src/kdc/do_tgs_req.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/kdc/do_tgs_req.c b/src/kdc/do_tgs_req.c index 598c87971..f2cb61d44 100644 --- a/src/kdc/do_tgs_req.c +++ b/src/kdc/do_tgs_req.c @@ -98,12 +98,13 @@ process_tgs_req(krb5_data *pkt, const krb5_fulladdr *from, krb5_transited enc_tkt_transited; int newtransited = 0; krb5_error_code retval = 0; + krb5_keyblock encrypting_key; int nprincs = 0; krb5_boolean more; krb5_timestamp kdc_time, authtime=0; krb5_keyblock session_key; krb5_timestamp until, rtime; - krb5_keyblock encrypting_key; + krb5_keyblock *reply_key = NULL; krb5_keyblock *mkey_ptr; krb5_key_data *server_key; char *cname = 0, *sname = 0, *altcname = 0; @@ -884,10 +885,14 @@ tgt_again: status = "Preparing FAST padata"; goto cleanup; } + errcode =kdc_fast_handle_reply_key(state, subkey?subkey:header_ticket->enc_part2->session, &reply_key); + if (errcode) { + status = "generating reply key"; + goto cleanup; + } errcode = krb5_encode_kdc_rep(kdc_context, KRB5_TGS_REP, &reply_encpart, subkey ? 1 : 0, - subkey ? subkey : - header_ticket->enc_part2->session, + reply_key, &reply, response); if (errcode) { status = "ENCODE_KDC_REP"; @@ -906,6 +911,8 @@ tgt_again: cleanup: assert(status != NULL); + if (reply_key) + krb5_free_keyblock(kdc_context, reply_key); if (errcode) emsg = krb5_get_error_message (kdc_context, errcode); log_tgs_req(from, request, &reply, cname, sname, altcname, authtime, |