Branch trunk for FAST project

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22115 dc483132-0cff-0310-8789-dd5450dbe970
FAST data structures for protocol messages

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22116 dc483132-0cff-0310-8789-dd5450dbe970
Define FAST encoders and decoders

Initial implementation of FAST encoders and decoders

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22117 dc483132-0cff-0310-8789-dd5450dbe970
pa_fx_fast_reply is a choice of sequence of encrypted data

There is a decryption step that needs to go between unwrapping the
fx_fast_reply and decoding the fast_response.  Expose the necessary
encoders and decoders?

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22118 dc483132-0cff-0310-8789-dd5450dbe970
kdc_req_body in fast_req should be a pointer

The req_body needs to be a pointer so  after FAST processing it can replace the request.

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22119 dc483132-0cff-0310-8789-dd5450dbe970
Add KRB5KDC_UNKNOWN_FAST_CRITICAL_OPTION

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22120 dc483132-0cff-0310-8789-dd5450dbe970
Add #defines for fast options and to keep track of unsupported
critical fast options.

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22121 dc483132-0cff-0310-8789-dd5450dbe970
Add kdc_state field to krb5_kdc_req

Add a kdc_state field to track internal state in handling a request.
The current usage is to pass FAST information to pre-authentication
plugins.

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22122 dc483132-0cff-0310-8789-dd5450dbe970
defines for fast padata assignments

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22123 dc483132-0cff-0310-8789-dd5450dbe970
Function to parse FAST for KDC requests

* Add fast_util to KDC
* export fast_req decoder from libkrb5
* Function to find a fast request, extract and use inner body
* functions to free and create kdc_request_state

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22124 dc483132-0cff-0310-8789-dd5450dbe970
Integrate FAST into AS and TGS

Integrate calls to lookup FAST padata into the AS and TGS paths.
kdc_util needs to return a pointer to the pa-tgs-req padata for the
fast checksum.

This code does not generate fast responses or errors yet.

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22125 dc483132-0cff-0310-8789-dd5450dbe970
Integrate FAST in to client AS sending

Functions to generate  FAST request and to manage client fast state.  Integrate into client  AS req loop.

Most of this is stub code although the integration points and arguments should be correct.

* Call into fast to prepare the request body.  If FAST is being used,
this may end up hiding the names in the future in the outer request.

* Call into FAST to prepare the request before sending.  This will
generate the FAST padata  and return an encoded outer request.

* Call into fast to handle error replies, potentially extracting
padata and information on whether to continue processing.

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22126 dc483132-0cff-0310-8789-dd5450dbe970
Some fast free functions

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22127 dc483132-0cff-0310-8789-dd5450dbe970
Free the request in process_as_req for parallelism with TGS case. This permits the FAST code to free the outer request if FAST is in use

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22128 dc483132-0cff-0310-8789-dd5450dbe970
Implement KDC side FAST response

Implement generation of fast_response, partial finish and fx_error.
Add reply key to state.

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22129 dc483132-0cff-0310-8789-dd5450dbe970
Implement free_fast_response and free_fast_finished

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22130 dc483132-0cff-0310-8789-dd5450dbe970
Client AS-req error handling for FAST

Find and decode the fast_response and fx_error.
Pull out padata and re-encode as typed-data

* Implement krb5_free_typed_data
* implement error handling logic in krb5int_fast_handle_error
* Implement krb5int_find_pa_data

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22131 dc483132-0cff-0310-8789-dd5450dbe970
Integrate fast in KDC AS errors

Call kdc_fast_handle_error from prepare_as_error Also, decode either
td or pa sequence in e_data and feed into fast's idea of a pa
sequence.

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22132 dc483132-0cff-0310-8789-dd5450dbe970
default to not retrying after error in client preauth loop

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22133 dc483132-0cff-0310-8789-dd5450dbe970
Implement client AS armor

* fast_armor_ap_request: generate ap_request armor
* krb5int_fast_as_armor: parse GIC options and request armor
* krb5_get_init_creds: call
* krb5_get_init_creds_opt_set_fast_ccache_name: API to indicate where armor credentials are found
* krb5_free_fast_armored_req: implement

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/fast@22134 dc483132-0cff-0310-8789-dd5450dbe970