48376fccd4edca3c1b92100f2f8d893118593668
[krb5.git] / src / lib / krb5 / krb / init_creds_ctx.h
1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
3 #ifndef KRB5_INIT_CREDS_CONTEXT
4 #define KRB5_INIT_CREDS_CONTEXT 1
5
6 struct _krb5_init_creds_context {
7     krb5_gic_opt_ext *opte;
8     char *in_tkt_service;
9     krb5_prompter_fct prompter;
10     void *prompter_data;
11     krb5_gic_get_as_key_fct gak_fct;
12     void *gak_data;
13     krb5_timestamp request_time;
14     krb5_deltat start_time;
15     krb5_deltat tkt_life;
16     krb5_deltat renew_life;
17     krb5_boolean complete;
18     unsigned int loopcount;
19     krb5_data password;
20     krb5_error *err_reply;
21     krb5_pa_data **err_padata;
22     krb5_creds cred;
23     krb5_kdc_req *request;
24     krb5_kdc_rep *reply;
25     /**
26      * Stores the outer request body in order to feed into FAST for
27      * checksumming.  This is maintained even if FAST is not used. This is not
28      * used for preauth: that requires the inner request body.  For AS-only
29      * FAST it would be better for krb5int_fast_prep_req() to simply generate
30      * this.  However for TGS FAST, the client needs to supply the
31      * to_be_checksummed data. Whether this should be refactored should be
32      * revisited as TGS fast is integrated.
33      */
34     krb5_data *outer_request_body;
35     krb5_data *inner_request_body; /**< For preauth */
36     krb5_data *encoded_previous_request;
37     struct krb5int_fast_request_state *fast_state;
38     krb5_pa_data **preauth_to_use;
39     krb5_data salt;
40     krb5_data s2kparams;
41     krb5_keyblock as_key;
42     krb5_enctype etype;
43     struct krb5_clpreauth_rock_st preauth_rock;
44     krb5_boolean enc_pa_rep_permitted;
45     krb5_boolean have_restarted;
46     krb5_boolean sent_nontrivial_preauth;
47     krb5_boolean preauth_required;
48 };
49
50 krb5_error_code
51 krb5_get_as_key_password(krb5_context context,
52                          krb5_principal client,
53                          krb5_enctype etype,
54                          krb5_prompter_fct prompter,
55                          void *prompter_data,
56                          krb5_data *salt,
57                          krb5_data *params,
58                          krb5_keyblock *as_key,
59                          void *gak_data);
60
61 #endif /* !KRB5_INIT_CREDS_CONTEXT */