krb5_get_in_tkt() krb5_get_in_tkt_with_password() krb5_send_tgs() KDC_OPT_FORWARDABLE KDC_OPT_FORWARDED KDC_OPT_PROXIABLE KDC_OPT_PROXY KDC_OPT_ALLOW_POSTDATE KDC_OPT_POSTDATED KDC_OPT_RENEWABLE KDC_OPT_RENEWABLE_OK KDC_OPT_ENC_TKT_IN_SKEY KDC_OPT_RENEW KDC_OPT_VALIDATE KRB5_PADATA_NONE KRB5_PADATA_AP_REQ KRB5_PADATA_TGS_REQ KRB5_PADATA_PW_SALT KRB5_PADATA_ENC_TIMESTAMP KRB5_PADATA_ENC_SECURID KRB5_AUTH_CONTEXT_DO_TIME KRB5_AUTH_CONTEXT_RET_TIME KRB5_AUTH_CONTEXT_DO_SEQUENCE KRB5_AUTH_CONTEXT_RET_REQUENCE /* types */ krb5_error_code; krb5_context; typedef struct krb5_auth_context{ krb5_int32 flags; krb5_cksumtype cksumtype; krb5_address local_address; krb5_address remote_address; krb5_keyblock key; krb5_keyblock local_subkey; krb5_keyblock remote_subkey; krb5_int32 local_seqnumber; krb5_int32 remote_seqnumber; krb5_authenticator authenticator; krb5_pointer i_vector; krb5_rcache rcache; }krb5_auth_context; enum krb5_enc_type; krb5_int32; krb5_address; krb5_error_code krb5_init_context(krb5_context *context); void krb5_os_free_context(krb5_context context); void krb5_free_context(krb5_context context); krb5_error_code krb5_set_default_in_tkt_etypes(krb5_context context, const krb5_enc_type *etypes); krb5_error_code krb5_get_default_in_tkt_etypes(krb5_context context, krb5_enctype **etypes); krb5_error_code krb5_auth_con_init(krb5_context context, krb5_auth_context **auth_context); krb5_error_code krb5_auth_con_free(krb5_context context, krb5_auth_context *auth_context); krb5_error_code krb5_auth_con_setflags(krb5_context context, krb5_auth_context *auth_context, krb5_int32 flags); krb5_error_code krb5_auth_con_getflags(krb5_context context, krb5_auth_context *auth_context, krb5_int32 *flags); krb5_error_code krb5_auth_con_setaddrs(krb5_context context, krb5_auth_context *auth_context, krb5_address *local_addr, krb5_address *remote_addr); krb5_error_code krb5_auth_con_getaddrs(krb5_context context, krb5_auth_context *auth_context, krb5_address **local_addr, krb5_address **remote_addr); krb5_error_code krb5_auth_con_setuserkey(krb5_context context, krb5_auth_context *auth_context, krb5_keyblock *keyblock); krb5_error_code krb5_auth_con_getkey(krb5_context context, krb5_auth_context *auth_context, krb5_keyblock **keyblock); void krb5_free_keyblock(krb5_keyblock *keyblock); /* ??? */ krb5_error_code krb5_auth_setcksumtype(krb5_context context, krb5_auth_context *auth_context, krb5_cksumtype cksumtype); krb5_error_code krb5_auth_getlocalseqnumber(krb5_context context, krb5_auth_context *auth_context, krb5_int32 *seqnumber); krb5_error_code krb5_auth_getremoteseqnumber(krb5_context context, krb5_auth_context *auth_context, krb5_int32 *seqnumber); krb5_error_code krb5_auth_getauthenticator(krb5_context context, krb5_auth_context *auth_context, krb5_authenticator **authenticator); void krb5_free_authenticator(krb5_authenticator *authenticator); /* ??? */ krb5_error_code krb5_auth_initvector(krb5_context context, krb5_auth_context *auth_context); krb5_error_code krb5_set_initvector(krb5_context context, krb5_auth_context *auth_context, krb5_pointer ivector); krb5_error_code krb5_set_rcache(krb5_context context, krb5_auth_context *auth_context, krb5_rcache rcache); KRB5_PARSE_MALFORMED typedef struct krb5_principal{ }krb5_principal; krb5_err_code krb5_parse_name(krb5_context context, const char *name, krb5_principal *principal); void krb5_free_principal(krb5_principal *principal); krb5_error_code krb5_unparse_name(krb5_context context, krb5_const_principal principal, char **name); krb5_error_code krb5_unparse_name_ext(krb5_context context, krb5_const_principal principal, char **name, int *size); krb5_data krb5_princ_realm(krb5_context context, krb5_principal principal); krb5_data krb5_princ_set_realm(krb5_context context, krb5_principal principal, krb5_data *realm); krb5_error_code krb5_build_principal(krb5_context context, krb5_principal *principal, int rlen, const char *realm, ...); krb5_error_code krb5_build_principal(krb5_context context, krb5_principal *principal, int rlen, const char *realm, va_list ap); krb5_error_code krb5_copy_principal(krb5_context *context, krb5_const_principal inprinc, krb5_principal *outprinc); krb5_boolean krb5_principal_compare(krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2); krb5_boolean krb5_realm_compare(krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2); krb5_error_code krb5_425_conv_principal(krb5_context context, const char *name, const char *instance, const char *realm, krb5_principal *principal); krb5_error_code krb5_get_cred_from_kdc(krb5_context, krb5_ccache ccache, krb5_creds *in_cred, krb5_cred **out_cred, krb5_creds **tgts); krb5_keyblock{ krb5_keytype keytype; }; krb5_times{ krb5_time endtime; krb5_time starttime; krb5_time renew_till; }; struct krb5_creds { krb5_principal client; /* ? */ krb5_principal server; /* ? */ krb5_times times; krb5_keyblock keyblock second_ticket; krb5_data authdata; }; krb5_error_code krb5_get_credentials(krb5_context context, krb5_flags options, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds *out_creds); typedef krb5_error_code (*krb5_key_proc)(krb5_context context, const krb5_keytype type, krb5_data *salt; krb5_const_pointer keyseed, krb5_keyblock **key); typedef krb5_error_code (*krb5_decrypt_proc)(krb5_context context, const krb5_keyblock *key, krb5_const_pointer *decrypt_arg, krb5_kdc_rep *dec_rep); krb5_error_code krb5_get_in_tkt(krb5_context context, krb5_flags options, krb5_address *const *addrs, const krb5_enctype *etypes, const krb5_preauthtype *ptypes, krb5_key_proc key_proc, krb5_const_pointer keyseed, krb5_decrypt_proc decrypt_proc, krb5_const_pointer decryptarg, krb5_creds *creds, krb5_ccache ccache, krb5_kdc_rep **ret_as_reply); krb5_error_code krb5_mk_req(krb5_context context, krb5_auth_context **auth_context, const krb5_flags ap_req_options, char *service, char *hostname, krb5_data *in_data, krb5_ccache ccache, krb5_data *outbuf); krb5_error_code krb5_generate_subkey(krb5_context context, const krb5_keyblock *key, krb5_keyblock **subkey); krb5_error_code krb5_rd_req(krb5_context context, krb5_auth_context **auth_context, const krb5_data *inbuf, krb5_const_principal server, krb5_keytab keytab, krb5_flags *ap_req_options, krb5_ticket **ticket);