shishi

shishi

Synopsis

#define             SHISHI_VERSION
enum                Shishi_rc;
enum                Shishi_name_type;
enum                Shishi_padata_type;
enum                Shishi_tr_type;
enum                Shishi_apoptions;
enum                Shishi_ticketflags;
enum                Shishi_KDCOptions;
enum                Shishi_msgtype;
enum                Shishi_lrtype;
enum                Shishi_etype;
enum                Shishi_cksumtype;
enum                Shishi_filetype;
enum                Shishi_outputtype;
enum                Shishi_authorization;
enum                Shishi_keyusage;
enum                Shishi_krb_error;
enum                Shishi_tkts_hintflags;
typedef             Shishi_tkts_hint;
#define             SHISHI_DNS_IN
#define             SHISHI_DNS_TXT
#define             SHISHI_DNS_SRV
typedef             Shishi_dns;
typedef             Shishi_dns_srv;
typedef             Shishi;
typedef             Shishi_tkt;
typedef             Shishi_tkts;
typedef             Shishi_as;
typedef             Shishi_tgs;
typedef             Shishi_ap;
typedef             Shishi_key;
typedef             Shishi_keys;
typedef             Shishi_safe;
typedef             Shishi_priv;
typedef             Shishi_asn1;
typedef             Shishi_crypto;
#define             SHISHI_GENERALIZEDTIME_LENGTH
#define             SHISHI_GENERALIZEDTIMEZ_LENGTH
void                shishi_alloc_fail_function          (void);
Shishi*             shishi                              (void);
Shishi*             shishi_server                       (void);
void                shishi_done                         (Shishi *handle);
int                 shishi_init                         (Shishi **handle);
int                 shishi_init_with_paths              (Shishi **handle,
                                                         const char *tktsfile,
                                                         const char *systemcfgfile,
                                                         const char *usercfgfile);
int                 shishi_init_server                  (Shishi **handle);
int                 shishi_init_server_with_paths       (Shishi **handle,
                                                         const char *systemcfgfile);
int                 shishi_cfg                          (Shishi *handle,
                                                         char *option);
int                 shishi_cfg_from_file                (Shishi *handle,
                                                         const char *cfg);
int                 shishi_cfg_print                    (Shishi *handle,
                                                         FILE *fh);
const char*         shishi_cfg_default_systemfile       (Shishi *handle);
const char*         shishi_cfg_default_userdirectory    (Shishi *handle);
const char*         shishi_cfg_default_userfile         (Shishi *handle);
char*               shishi_cfg_userdirectory_file       (Shishi *handle,
                                                         const char *file);
int                 shishi_cfg_clientkdcetype           (Shishi *handle,
                                                         int32_t **etypes);
int32_t             shishi_cfg_clientkdcetype_fast      (Shishi *handle);
int                 shishi_cfg_clientkdcetype_set       (Shishi *handle,
                                                         char *value);
int                 shishi_cfg_authorizationtype_set    (Shishi *handle,
                                                         char *value);
const char*         shishi_strerror                     (int err);
const char*         shishi_error                        (Shishi *handle);
void                shishi_error_clear                  (Shishi *handle);
void                shishi_error_set                    (Shishi *handle,
                                                         const char *errstr);
void                shishi_error_printf                 (Shishi *handle,
                                                         const char *format,
                                                         ...);
int                 shishi_error_outputtype             (Shishi *handle);
void                shishi_error_set_outputtype         (Shishi *handle,
                                                         int type);
void                shishi_info                         (Shishi *handle,
                                                         const char *format,
                                                         ...);
void                shishi_warn                         (Shishi *handle,
                                                         const char *format,
                                                         ...);
void                shishi_verbose                      (Shishi *handle,
                                                         const char *format,
                                                         ...);
char*               shishi_realm_default_guess          (void);
const char*         shishi_realm_default                (Shishi *handle);
void                shishi_realm_default_set            (Shishi *handle,
                                                         const char *realm);
char*               shishi_realm_for_server_file        (Shishi *handle,
                                                         char *server);
char*               shishi_realm_for_server_dns         (Shishi *handle,
                                                         char *server);
char*               shishi_realm_for_server             (Shishi *handle,
                                                         char *server);
char*               shishi_principal_default_guess      (void);
const char*         shishi_principal_default            (Shishi *handle);
void                shishi_principal_default_set        (Shishi *handle,
                                                         const char *principal);
int                 shishi_principal_name               (Shishi *handle,
                                                         Shishi_asn1 namenode,
                                                         const char *namefield,
                                                         char **out,
                                                         size_t *outlen);
int                 shishi_principal_name_realm         (Shishi *handle,
                                                         Shishi_asn1 namenode,
                                                         const char *namefield,
                                                         Shishi_asn1 realmnode,
                                                         const char *realmfield,
                                                         char **out,
                                                         size_t *outlen);
int                 shishi_principal_name_set           (Shishi *handle,
                                                         Shishi_asn1 namenode,
                                                         const char *namefield,
                                                         Shishi_name_type name_type,
                                                         const char *name[]);
int                 shishi_principal_set                (Shishi *handle,
                                                         Shishi_asn1 namenode,
                                                         const char *namefield,
                                                         const char *name);
int                 shishi_parse_name                   (Shishi *handle,
                                                         const char *name,
                                                         char **principal,
                                                         char **realm);
int                 shishi_derive_default_salt          (Shishi *handle,
                                                         const char *name,
                                                         char **salt);
char*               shishi_server_for_local_service     (Shishi *handle,
                                                         const char *service);
Shishi_asn1         shishi_ticket                       (Shishi *handle);
int                 shishi_ticket_server                (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         char **server,
                                                         size_t *serverlen);
int                 shishi_ticket_sname_set             (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         Shishi_name_type name_type,
                                                         char *sname[]);
int                 shishi_ticket_srealmserver_set      (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         const char *realm,
                                                         const char *server);
int                 shishi_ticket_set_server            (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         const char *server);
int                 shishi_ticket_realm_get             (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         char **realm,
                                                         size_t *realmlen);
int                 shishi_ticket_realm_set             (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         const char *realm);
int                 shishi_ticket_get_enc_part_etype    (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         int32_t *etype);
int                 shishi_ticket_set_enc_part          (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         int32_t etype,
                                                         uint32_t kvno,
                                                         const char *buf,
                                                         size_t buflen);
int                 shishi_ticket_add_enc_part          (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         Shishi_key *key,
                                                         Shishi_asn1 encticketpart);
int                 shishi_ticket_decrypt               (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         Shishi_key *key,
                                                         Shishi_asn1 *encticketpart);
Shishi_asn1         shishi_tkt_ticket                   (Shishi_tkt *tkt);
void                shishi_tkt_ticket_set               (Shishi_tkt *tkt,
                                                         Shishi_asn1 ticket);
Shishi_asn1         shishi_tkt_kdcrep                   (Shishi_tkt *tkt);
Shishi_asn1         shishi_tkt_enckdcreppart            (Shishi_tkt *tkt);
void                shishi_tkt_enckdcreppart_set        (Shishi_tkt *tkt,
                                                         Shishi_asn1 enckdcreppart);
Shishi_asn1         shishi_tkt_encticketpart            (Shishi_tkt *tkt);
void                shishi_tkt_encticketpart_set        (Shishi_tkt *tkt,
                                                         Shishi_asn1 encticketpart);
Shishi_key*         shishi_tkt_key                      (Shishi_tkt *tkt);
int                 shishi_tkt_key_set                  (Shishi_tkt *tkt,
                                                         Shishi_key *key);
int                 shishi_tkt                          (Shishi *handle,
                                                         Shishi_tkt **tkt);
Shishi_tkt*         shishi_tkt2                         (Shishi *handle,
                                                         Shishi_asn1 ticket,
                                                         Shishi_asn1 enckdcreppart,
                                                         Shishi_asn1 kdcrep);
void                shishi_tkt_pretty_print             (Shishi_tkt *tkt,
                                                         FILE *fh);
int                 shishi_tkt_realm                    (Shishi_tkt *tkt,
                                                         char **realm,
                                                         size_t *realmlen);
int                 shishi_tkt_client                   (Shishi_tkt *tkt,
                                                         char **client,
                                                         size_t *clientlen);
int                 shishi_tkt_client_p                 (Shishi_tkt *tkt,
                                                         const char *client);
int                 shishi_tkt_clientrealm              (Shishi_tkt *tkt,
                                                         char **client,
                                                         size_t *clientlen);
int                 shishi_tkt_clientrealm_p            (Shishi_tkt *tkt,
                                                         const char *client);
int                 shishi_tkt_clientrealm_set          (Shishi_tkt *tkt,
                                                         const char *realm,
                                                         const char *client);
int                 shishi_tkt_serverrealm_set          (Shishi_tkt *tkt,
                                                         const char *realm,
                                                         const char *server);
int                 shishi_tkt_build                    (Shishi_tkt *tkt,
                                                         Shishi_key *key);
int                 shishi_tkt_lastreq                  (Shishi_tkt *tkt,
                                                         char **lrtime,
                                                         size_t *lrtimelen,
                                                         int32_t lrtype);
time_t              shishi_tkt_lastreqc                 (Shishi_tkt *tkt,
                                                         Shishi_lrtype lrtype);
void                shishi_tkt_lastreq_pretty_print     (Shishi_tkt *tkt,
                                                         FILE *fh);
int                 shishi_tkt_authtime                 (Shishi_tkt *tkt,
                                                         char **authtime,
                                                         size_t *authtimelen);
time_t              shishi_tkt_authctime                (Shishi_tkt *tkt);
int                 shishi_tkt_starttime                (Shishi_tkt *tkt,
                                                         char **starttime,
                                                         size_t *starttimelen);
time_t              shishi_tkt_startctime               (Shishi_tkt *tkt);
int                 shishi_tkt_endtime                  (Shishi_tkt *tkt,
                                                         char **endtime,
                                                         size_t *endtimelen);
time_t              shishi_tkt_endctime                 (Shishi_tkt *tkt);
int                 shishi_tkt_renew_till               (Shishi_tkt *tkt,
                                                         char **renewtilltime,
                                                         size_t *renewtilllen);
time_t              shishi_tkt_renew_tillc              (Shishi_tkt *tkt);
int                 shishi_tkt_keytype                  (Shishi_tkt *tkt,
                                                         int32_t *etype);
int32_t             shishi_tkt_keytype_fast             (Shishi_tkt *tkt);
int                 shishi_tkt_keytype_p                (Shishi_tkt *tkt,
                                                         int32_t etype);
int                 shishi_tkt_server                   (Shishi_tkt *tkt,
                                                         char **server,
                                                         size_t *serverlen);
int                 shishi_tkt_server_p                 (Shishi_tkt *tkt,
                                                         const char *server);
int                 shishi_tkt_valid_at_time_p          (Shishi_tkt *tkt,
                                                         time_t now);
int                 shishi_tkt_valid_now_p              (Shishi_tkt *tkt);
int                 shishi_tkt_expired_p                (Shishi_tkt *tkt);
int                 shishi_tkt_decrypt                  (Shishi_tkt *tkt,
                                                         Shishi_key *key);
void                shishi_tkt_done                     (Shishi_tkt *tkt);
int                 shishi_tkt_flags                    (Shishi_tkt *tkt,
                                                         uint32_t *flags);
int                 shishi_tkt_flags_set                (Shishi_tkt *tkt,
                                                         uint32_t flags);
int                 shishi_tkt_flags_add                (Shishi_tkt *tkt,
                                                         uint32_t flag);
int                 shishi_tkt_forwardable_p            (Shishi_tkt *tkt);
int                 shishi_tkt_forwarded_p              (Shishi_tkt *tkt);
int                 shishi_tkt_proxiable_p              (Shishi_tkt *tkt);
int                 shishi_tkt_proxy_p                  (Shishi_tkt *tkt);
int                 shishi_tkt_may_postdate_p           (Shishi_tkt *tkt);
int                 shishi_tkt_postdated_p              (Shishi_tkt *tkt);
int                 shishi_tkt_invalid_p                (Shishi_tkt *tkt);
int                 shishi_tkt_renewable_p              (Shishi_tkt *tkt);
int                 shishi_tkt_initial_p                (Shishi_tkt *tkt);
int                 shishi_tkt_pre_authent_p            (Shishi_tkt *tkt);
int                 shishi_tkt_hw_authent_p             (Shishi_tkt *tkt);
int                 shishi_tkt_transited_policy_checked_p
                                                        (Shishi_tkt *tkt);
int                 shishi_tkt_ok_as_delegate_p         (Shishi_tkt *tkt);
char*               shishi_tkts_default_file_guess      (Shishi *handle);
const char*         shishi_tkts_default_file            (Shishi *handle);
void                shishi_tkts_default_file_set        (Shishi *handle,
                                                         const char *tktsfile);
Shishi_tkts*        shishi_tkts_default                 (Shishi *handle);
int                 shishi_tkts_default_to_file         (Shishi_tkts *tkts);
int                 shishi_tkts                         (Shishi *handle,
                                                         Shishi_tkts **tkts);
Shishi_tkt*         shishi_tkts_nth                     (Shishi_tkts *tkts,
                                                         int ticketno);
int                 shishi_tkts_size                    (Shishi_tkts *tkts);
int                 shishi_tkts_add                     (Shishi_tkts *tkts,
                                                         Shishi_tkt *tkt);
int                 shishi_tkts_new                     (Shishi_tkts *tkts,
                                                         Shishi_asn1 ticket,
                                                         Shishi_asn1 enckdcreppart,
                                                         Shishi_asn1 kdcrep);
int                 shishi_tkts_remove                  (Shishi_tkts *tkts,
                                                         int ticketno);
int                 shishi_tkts_expire                  (Shishi_tkts *tkts);
int                 shishi_tkts_print_for_service       (Shishi_tkts *tkts,
                                                         FILE *fh,
                                                         const char *service);
int                 shishi_tkts_print                   (Shishi_tkts *tkts,
                                                         FILE *fh);
int                 shishi_tkts_write                   (Shishi_tkts *tkts,
                                                         FILE *fh);
int                 shishi_tkts_to_file                 (Shishi_tkts *tkts,
                                                         const char *filename);
int                 shishi_tkts_read                    (Shishi_tkts *tkts,
                                                         FILE *fh);
int                 shishi_tkts_from_file               (Shishi_tkts *tkts,
                                                         const char *filename);
void                shishi_tkts_done                    (Shishi_tkts **tkts);
int                 shishi_tkt_match_p                  (Shishi_tkt *tkt,
                                                         Shishi_tkts_hint *hint);
Shishi_tkt*         shishi_tkts_find                    (Shishi_tkts *tkts,
                                                         Shishi_tkts_hint *hint);
Shishi_tkt*         shishi_tkts_find_for_clientserver   (Shishi_tkts *tkts,
                                                         const char *client,
                                                         const char *server);
Shishi_tkt*         shishi_tkts_find_for_server         (Shishi_tkts *tkts,
                                                         const char *server);
Shishi_tkt*         shishi_tkts_get                     (Shishi_tkts *tkts,
                                                         Shishi_tkts_hint *hint);
Shishi_tkt*         shishi_tkts_get_tgt                 (Shishi_tkts *tkts,
                                                         Shishi_tkts_hint *hint);
Shishi_tkt*         shishi_tkts_get_tgs                 (Shishi_tkts *tkts,
                                                         Shishi_tkts_hint *hint,
                                                         Shishi_tkt *tgt);
Shishi_tkt*         shishi_tkts_get_for_clientserver    (Shishi_tkts *tkts,
                                                         const char *client,
                                                         const char *server);
Shishi_tkt*         shishi_tkts_get_for_server          (Shishi_tkts *tkts,
                                                         const char *server);
Shishi_tkt*         shishi_tkts_get_for_localservicepasswd
                                                        (Shishi_tkts *tkts,
                                                         const char *service,
                                                         const char *passwd);
char*               shishi_tkts_default_ccache_guess    (Shishi *handle);
const char*         shishi_tkts_default_ccache          (Shishi *handle);
void                shishi_tkts_default_ccache_set      (Shishi *handle,
                                                         const char *ccache);
int                 shishi_tkts_add_ccache_mem          (Shishi *handle,
                                                         const char *data,
                                                         size_t len,
                                                         Shishi_tkts *tkts);
int                 shishi_tkts_add_ccache_file         (Shishi *handle,
                                                         const char *filename,
                                                         Shishi_tkts *tkts);
int                 shishi_tkts_from_ccache_mem         (Shishi *handle,
                                                         const char *data,
                                                         size_t len,
                                                         Shishi_tkts **outtkts);
int                 shishi_tkts_from_ccache_file        (Shishi *handle,
                                                         const char *filename,
                                                         Shishi_tkts **outtkts);
int                 shishi_enckdcreppart_print          (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 enckdcreppart);
int                 shishi_enckdcreppart_save           (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 enckdcreppart);
int                 shishi_enckdcreppart_parse          (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *enckdcreppart);
int                 shishi_enckdcreppart_read           (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *enckdcreppart);
int                 shishi_ticket_save                  (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 ticket);
int                 shishi_ticket_print                 (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 ticket);
int                 shishi_kdcreq_print                 (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcrep_print                 (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 kdcrep);
int                 shishi_kdc_print                    (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 asreq,
                                                         Shishi_asn1 asrep,
                                                         Shishi_asn1 encasreppart);
int                 shishi_kdcreq_parse                 (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *kdcreq);
int                 shishi_kdcrep_parse                 (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *kdcrep);
int                 shishi_ticket_parse                 (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *ticket);
int                 shishi_ticket_read                  (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *ticket);
int                 shishi_etype_info_print             (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 etypeinfo);
int                 shishi_etype_info2_print            (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 etypeinfo2);
Shishi_asn1         shishi_authenticator                (Shishi *handle);
int                 shishi_authenticator_set_crealm     (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         const char *crealm);
int                 shishi_authenticator_set_cname      (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         Shishi_name_type name_type,
                                                         const char *cname[]);
int                 shishi_authenticator_client_set     (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         const char *client);
int                 shishi_authenticator_ctime          (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         char **t);
int                 shishi_authenticator_ctime_set      (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         const char *t);
int                 shishi_authenticator_cusec_get      (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         uint32_t *cusec);
int                 shishi_authenticator_cusec_set      (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         uint32_t cusec);
int                 shishi_authenticator_seqnumber_get  (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         uint32_t *seqnumber);
int                 shishi_authenticator_seqnumber_remove
                                                        (Shishi *handle,
                                                         Shishi_asn1 authenticator);
int                 shishi_authenticator_seqnumber_set  (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         uint32_t seqnumber);
int                 shishi_authenticator_client         (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         char **client,
                                                         size_t *clientlen);
int                 shishi_authenticator_clientrealm    (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         char **client,
                                                         size_t *clientlen);
int                 shishi_authenticator_remove_cksum   (Shishi *handle,
                                                         Shishi_asn1 authenticator);
int                 shishi_authenticator_cksum          (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         int32_t *cksumtype,
                                                         char **cksum,
                                                         size_t *cksumlen);
int                 shishi_authenticator_set_cksum      (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         int cksumtype,
                                                         char *cksum,
                                                         size_t cksumlen);
int                 shishi_authenticator_add_cksum      (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         Shishi_key *key,
                                                         int keyusage,
                                                         char *data,
                                                         size_t datalen);
int                 shishi_authenticator_add_cksum_type (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         Shishi_key *key,
                                                         int keyusage,
                                                         int cksumtype,
                                                         char *data,
                                                         size_t datalen);
int                 shishi_authenticator_remove_subkey  (Shishi *handle,
                                                         Shishi_asn1 authenticator);
Shishi_asn1         shishi_authenticator_subkey         (Shishi *handle);
int                 shishi_authenticator_get_subkey     (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         Shishi_key **subkey);
int                 shishi_authenticator_set_subkey     (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         int32_t subkeytype,
                                                         char *subkey,
                                                         size_t subkeylen);
int                 shishi_authenticator_add_random_subkey
                                                        (Shishi *handle,
                                                         Shishi_asn1 authenticator);
int                 shishi_authenticator_add_random_subkey_etype
                                                        (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         int etype);
int                 shishi_authenticator_add_subkey     (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         Shishi_key *subkey);
int                 shishi_authenticator_clear_authorizationdata
                                                        (Shishi *handle,
                                                         Shishi_asn1 authenticator);
int                 shishi_authenticator_add_authorizationdata
                                                        (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         int32_t adtype,
                                                         const char *addata,
                                                         size_t addatalen);
int                 shishi_authenticator_authorizationdata
                                                        (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         int32_t *adtype,
                                                         char **addata,
                                                         size_t *addatalen,
                                                         size_t nth);
int                 shishi_authenticator_read           (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *authenticator);
int                 shishi_authenticator_parse          (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *authenticator);
int                 shishi_authenticator_from_file      (Shishi *handle,
                                                         Shishi_asn1 *authenticator,
                                                         int filetype,
                                                         const char *filename);
int                 shishi_authenticator_print          (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 authenticator);
int                 shishi_authenticator_to_file        (Shishi *handle,
                                                         Shishi_asn1 authenticator,
                                                         int filetype,
                                                         const char *filename);
int                 shishi_authenticator_save           (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 authenticator);
int                 shishi_as                           (Shishi *handle,
                                                         Shishi_as **as);
void                shishi_as_done                      (Shishi_as *as);
Shishi_asn1         shishi_as_req                       (Shishi_as *as);
int                 shishi_as_req_build                 (Shishi_as *as);
void                shishi_as_req_set                   (Shishi_as *as,
                                                         Shishi_asn1 asreq);
int                 shishi_as_req_der                   (Shishi_as *as,
                                                         char **out,
                                                         size_t *outlen);
int                 shishi_as_req_der_set               (Shishi_as *as,
                                                         char *der,
                                                         size_t derlen);
Shishi_asn1         shishi_as_rep                       (Shishi_as *as);
void                shishi_as_rep_set                   (Shishi_as *as,
                                                         Shishi_asn1 asrep);
int                 shishi_as_rep_build                 (Shishi_as *as,
                                                         Shishi_key *key);
int                 shishi_as_rep_der                   (Shishi_as *as,
                                                         char **out,
                                                         size_t *outlen);
int                 shishi_as_rep_der_set               (Shishi_as *as,
                                                         char *der,
                                                         size_t derlen);
Shishi_asn1         shishi_as_krberror                  (Shishi_as *as);
int                 shishi_as_krberror_der              (Shishi_as *as,
                                                         char **out,
                                                         size_t *outlen);
void                shishi_as_krberror_set              (Shishi_as *as,
                                                         Shishi_asn1 krberror);
Shishi_tkt*         shishi_as_tkt                       (Shishi_as *as);
void                shishi_as_tkt_set                   (Shishi_as *as,
                                                         Shishi_tkt *tkt);
int                 shishi_as_sendrecv                  (Shishi_as *as);
int                 shishi_as_sendrecv_hint             (Shishi_as *as,
                                                         Shishi_tkts_hint *hint);
int                 shishi_as_rep_process               (Shishi_as *as,
                                                         Shishi_key *key,
                                                         const char *password);
int                 shishi_tgs                          (Shishi *handle,
                                                         Shishi_tgs **tgs);
void                shishi_tgs_done                     (Shishi_tgs *tgs);
Shishi_tkt*         shishi_tgs_tgtkt                    (Shishi_tgs *tgs);
void                shishi_tgs_tgtkt_set                (Shishi_tgs *tgs,
                                                         Shishi_tkt *tgtkt);
Shishi_ap*          shishi_tgs_ap                       (Shishi_tgs *tgs);
Shishi_asn1         shishi_tgs_req                      (Shishi_tgs *tgs);
int                 shishi_tgs_req_der                  (Shishi_tgs *tgs,
                                                         char **out,
                                                         size_t *outlen);
int                 shishi_tgs_req_der_set              (Shishi_tgs *tgs,
                                                         char *der,
                                                         size_t derlen);
void                shishi_tgs_req_set                  (Shishi_tgs *tgs,
                                                         Shishi_asn1 tgsreq);
int                 shishi_tgs_req_build                (Shishi_tgs *tgs);
int                 shishi_tgs_req_process              (Shishi_tgs *tgs);
Shishi_asn1         shishi_tgs_rep                      (Shishi_tgs *tgs);
int                 shishi_tgs_rep_der                  (Shishi_tgs *tgs,
                                                         char **out,
                                                         size_t *outlen);
int                 shishi_tgs_rep_build                (Shishi_tgs *tgs,
                                                         int keyusage,
                                                         Shishi_key *key);
int                 shishi_tgs_rep_process              (Shishi_tgs *tgs);
Shishi_asn1         shishi_tgs_krberror                 (Shishi_tgs *tgs);
int                 shishi_tgs_krberror_der             (Shishi_tgs *tgs,
                                                         char **out,
                                                         size_t *outlen);
void                shishi_tgs_krberror_set             (Shishi_tgs *tgs,
                                                         Shishi_asn1 krberror);
Shishi_tkt*         shishi_tgs_tkt                      (Shishi_tgs *tgs);
void                shishi_tgs_tkt_set                  (Shishi_tgs *tgs,
                                                         Shishi_tkt *tkt);
int                 shishi_tgs_sendrecv                 (Shishi_tgs *tgs);
int                 shishi_tgs_sendrecv_hint            (Shishi_tgs *tgs,
                                                         Shishi_tkts_hint *hint);
int                 shishi_tgs_set_server               (Shishi_tgs *tgs,
                                                         const char *server);
int                 shishi_tgs_set_realm                (Shishi_tgs *tgs,
                                                         const char *realm);
int                 shishi_tgs_set_realmserver          (Shishi_tgs *tgs,
                                                         const char *realm,
                                                         const char *server);
int                 shishi_kdcreq                       (Shishi *handle,
                                                         char *realm,
                                                         char *service,
                                                         Shishi_asn1 *req);
Shishi_asn1         shishi_asreq                        (Shishi *handle);
Shishi_asn1         shishi_asreq_rsc                    (Shishi *handle,
                                                         char *realm,
                                                         char *server,
                                                         char *client);
Shishi_asn1         shishi_tgsreq                       (Shishi *handle);
Shishi_asn1         shishi_tgsreq_rst                   (Shishi *handle,
                                                         char *realm,
                                                         char *server,
                                                         Shishi_tkt *tkt);
int                 shishi_kdcreq_save                  (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_to_file               (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         int filetype,
                                                         const char *filename);
int                 shishi_kdcreq_read                  (Shishi *handle,
                                                         FILE *fh,
                                                         Shishi_asn1 *kdcreq);
int                 shishi_kdcreq_from_file             (Shishi *handle,
                                                         Shishi_asn1 *kdcreq,
                                                         int filetype,
                                                         const char *filename);
int                 shishi_asreq_clientrealm            (Shishi *handle,
                                                         Shishi_asn1 asreq,
                                                         char **client,
                                                         size_t *clientlen);
int                 shishi_kdcreq_nonce                 (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         uint32_t *nonce);
int                 shishi_kdcreq_nonce_set             (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         uint32_t nonce);
int                 shishi_kdcreq_client                (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         char **client,
                                                         size_t *clientlen);
int                 shishi_kdcreq_set_cname             (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_name_type name_type,
                                                         const char *principal);
int                 shishi_kdcreq_server                (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         char **server,
                                                         size_t *serverlen);
int                 shishi_kdcreq_set_sname             (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_name_type name_type,
                                                         const char *sname[]);
int                 shishi_kdcreq_realm                 (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         char **realm,
                                                         size_t *realmlen);
int                 shishi_kdcreq_realm_get             (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         char **realm,
                                                         size_t *realmlen);
int                 shishi_kdcreq_set_realm             (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         const char *realm);
int                 shishi_kdcreq_set_server            (Shishi *handle,
                                                         Shishi_asn1 req,
                                                         const char *service);
int                 shishi_kdcreq_set_realmserver       (Shishi *handle,
                                                         Shishi_asn1 req,
                                                         char *realm,
                                                         char *service);
int                 shishi_kdcreq_till                  (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         char **till,
                                                         size_t *tilllen);
time_t              shishi_kdcreq_tillc                 (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_etype                 (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         int32_t *etype,
                                                         int netype);
int                 shishi_kdcreq_set_etype             (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         int32_t *etype,
                                                         int netype);
int                 shishi_kdcreq_options               (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         uint32_t *flags);
int                 shishi_kdcreq_forwardable_p         (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_forwarded_p           (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_proxiable_p           (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_proxy_p               (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_allow_postdate_p      (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_postdated_p           (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_renewable_p           (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_disable_transited_check_p
                                                        (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_renewable_ok_p        (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_enc_tkt_in_skey_p     (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_renew_p               (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_validate_p            (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_options_set           (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         uint32_t options);
int                 shishi_kdcreq_options_add           (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         uint32_t option);
int                 shishi_kdcreq_clear_padata          (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_kdcreq_get_padata            (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_padata_type padatatype,
                                                         char **out,
                                                         size_t *outlen);
int                 shishi_kdcreq_get_padata_tgs        (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_asn1 *apreq);
int                 shishi_kdcreq_add_padata            (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         int padatatype,
                                                         const char *data,
                                                         size_t datalen);
int                 shishi_kdcreq_add_padata_tgs        (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_asn1 apreq);
int                 shishi_kdcreq_add_padata_preauth    (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_key *key);
int                 shishi_kdcreq_build                 (Shishi *handle,
                                                         Shishi_asn1 kdcreq);
int                 shishi_as_derive_salt               (Shishi *handle,
                                                         Shishi_asn1 asreq,
                                                         Shishi_asn1 asrep,
                                                         char **salt,
                                                         size_t *saltlen);
int                 shishi_tgs_process                  (Shishi *handle,
                                                         Shishi_asn1 tgsreq,
                                                         Shishi_asn1 tgsrep,
                                                         Shishi_asn1 authenticator,
                                                         Shishi_asn1 oldenckdcreppart,
                                                         Shishi_asn1 *enckdcreppart);
int                 shishi_as_process                   (Shishi *handle,
                                                         Shishi_asn1 asreq,
                                                         Shishi_asn1 asrep,
                                                         const char *string,
                                                         Shishi_asn1 *enckdcreppart);
int                 shishi_kdc_process                  (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_asn1 kdcrep,
                                                         Shishi_key *key,
                                                         int keyusage,
                                                         Shishi_asn1 *enckdcreppart);
int                 shishi_kdcreq_sendrecv              (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_asn1 *kdcrep);
int                 shishi_kdcreq_sendrecv_hint         (Shishi *handle,
                                                         Shishi_asn1 kdcreq,
                                                         Shishi_asn1 *kdcrep,