home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / k95source / ckoath.h < prev    next >
C/C++ Source or Header  |  2020-01-01  |  49KB  |  1,319 lines

  1. /*
  2. C K O A T H . H  --  Authentication for Kermit 95
  3.  
  4. Copyright (C) 1998, 2004, Trustees of Columbia University in the City of New
  5.     York.
  6.   Author:  Jeffrey E Altman (jaltman@secure-endpoints.com)
  7.            Secure Endpoints Inc., New York City
  8.  
  9.   Specify the function mappings you need to have applied by #define's
  10.   set before including this file:
  11.  
  12.     MAP_DES
  13.     MAP_SRP
  14.     MAP_KRYPTO
  15.     MAP_KRB4
  16.     MAP_KRB5
  17.     MAP_NTLM
  18.     MAP_GSSAPI
  19.     MAP_CRYPT
  20. */
  21.  
  22.  
  23. #ifdef OS2
  24. #ifdef MAP_DES
  25. #define des_new_random_key            ck_des_new_random_key
  26. #define des_set_random_generator_seed ck_des_set_random_generator_seed
  27. #ifdef FTP_KRB4
  28. #define des_key_sched                 ck_k4_des_key_sched
  29. #else /* FTP_KRB4 */
  30. #define des_key_sched                 ck_des_key_sched
  31. #endif /* FTP_KRB4 */
  32. #define des_ecb_encrypt               ck_des_ecb_encrypt
  33. #define des_string_to_key             ck_des_string_to_key
  34. #ifdef des_fixup_key_parity
  35. #undef des_fixup_key_parity
  36. #endif
  37. #define des_fixup_key_parity          ck_des_fixup_key_parity
  38. #define des_pcbc_encrypt              ck_des_pcbc_encrypt
  39.  
  40. int ck_des_new_random_key(Block B);
  41. void ck_des_set_random_generator_seed(Block B);
  42. int ck_des_key_sched(Block B, Schedule S);
  43. int ck_k4_des_key_sched(Block B, Schedule S);
  44. void ck_des_ecb_encrypt(Block B1, Block B2, Schedule S, int I);
  45. int ck_des_string_to_key(char * p, Block B);
  46. void ck_des_fixup_key_parity(Block B);
  47. void ck_des_pcbc_encrypt(Block input, Block output, long length,
  48.                     Schedule schedule, Block ivec, int enc);
  49. #endif /* MAP_DES */
  50.  
  51. #ifdef MAP_SRP
  52. #define t_clientresponse  ck_t_clientresponse
  53. #define t_clientgetkey    ck_t_clientgetkey
  54. #define t_clientpasswd    ck_t_clientpasswd
  55. #define t_clientgenexp    ck_t_clientgenexp
  56. #define t_clientopen      ck_t_clientopen
  57. #define t_clientverify    ck_t_clientverify
  58.  
  59. unsigned char * ck_t_clientresponse(struct t_client *);
  60. unsigned char * ck_t_clientgetkey(struct t_client *, struct t_num *);
  61. void ck_t_clientpasswd(struct t_client *, char *);
  62. struct t_num * ck_t_clientgenexp(struct t_client *);
  63. struct t_client * ck_t_clientopen(const char *, struct t_num *, struct t_num *, struct t_num *);
  64. int ck_t_clientverify(struct t_client *, unsigned char *);
  65. #endif /* MAP_SRP */
  66.  
  67. #ifdef MAP_KRYPTO
  68. #define cipher_getdescbyid    (struct _cipher_desc *)ck_cipher_getdescbyid
  69. #define cipher_getlist        (unsigned char *)ck_cipher_getlist
  70. #define cipher_getdescbyname  (struct _cipher_desc *)ck_cipher_getdescbyname
  71. #define hash_getdescbyid      (struct _hash_desc *)ck_hash_getdescbyid
  72. #define hash_getlist          (unsigned char *)ck_hash_getlist
  73. #define hash_getdescbyname    (struct _hash_desc *)ck_hash_getdescbyname
  74. #define krypto_delete         ck_krypto_delete
  75. #define krypto_new            (struct _krypto_context *)ck_krypto_new
  76. #define hash_supported        ck_hash_supported
  77. #define cipher_supported      ck_cipher_supported
  78. #define krypto_msg_safe       ck_krypto_msg_safe
  79. #define krypto_msg_priv       ck_krypto_msg_priv
  80. #endif /* MAP_KRYPTO */
  81.  
  82. #ifdef MAP_KRB4
  83. #ifndef ADDR_SZ
  84. #define ADDR_SZ 40      /* From Leash krb.h */
  85. #endif /* ADDR_SZ */
  86.  
  87. /* The Leash implementation of Kerberos 4 used by Kermit 95 */
  88. /* has an extended Credentials structure that includes the  */
  89. /* ip address of the ticket in readable form.               */
  90. struct leash_credentials {
  91.     char    service[ANAME_SZ];  /* Service name */
  92.     char    instance[INST_SZ];  /* Instance */
  93.     char    realm[REALM_SZ];    /* Auth domain */
  94.     C_Block session;            /* Session key */
  95.     int     lifetime;           /* Lifetime */
  96.     int     kvno;               /* Key version number */
  97.     KTEXT_ST ticket_st;         /* The ticket itself */
  98.     long    issue_date;         /* The issue time */
  99.     char    pname[ANAME_SZ];    /* Principal's name */
  100.     char    pinst[INST_SZ];     /* Principal's instance */
  101.     char    address[ADDR_SZ];   /* IP Address in ticket */
  102. };
  103.  
  104. typedef struct leash_credentials LEASH_CREDENTIALS;
  105.  
  106. #define krb_get_err_text_entry       ck_krb_get_err_text_entry
  107. #define krb_get_cred                 ck_krb_get_cred
  108. #define krb_mk_req                   ck_krb_mk_req
  109. #define krb_realmofhost              ck_krb_realmofhost
  110. #define krb_get_phost                ck_krb_get_phost
  111. #define krb_get_pw_in_tkt            ck_krb_get_pw_in_tkt
  112. #define krb_get_pw_in_tkt_preauth    ck_krb_get_pw_in_tkt_preauth
  113. #define krb_get_lrealm               ck_krb_get_lrealm
  114. #define krb_get_err_text             ck_krb_get_err_text
  115. #define kname_parse                  ck_kname_parse
  116. #define dest_tkt                     ck_dest_tkt
  117. #define krb_get_tf_realm             ck_krb_get_tf_realm
  118. #define krb_get_tf_fullname          ck_krb_get_tf_fullname
  119. #define tf_get_pname                 ck_tf_get_pname
  120. #define tf_get_pinst                 ck_tf_get_pinst
  121. #define tf_get_cred                  ck_tf_get_cred
  122. #define tf_close                     ck_tf_close
  123. #define tf_init                      ck_tf_init
  124. #define tkt_string                   ck_tkt_string
  125. #define krb_check_serv               ck_krb_check_serv
  126. #define kuserok                      ck_kuserok
  127. #define krb_kntoln                   ck_krb_kntoln
  128. #define krb_rd_req                   ck_krb_rd_req
  129. #define krb_sendauth                 ck_krb_sendauth
  130. #define set_krb_debug                ck_set_krb_debug
  131. #define set_krb_ap_req_debug         ck_set_krb_ap_req_debug
  132. #define krb_mk_safe                  ck_krb_mk_safe
  133. #define krb_mk_priv                  ck_krb_mk_priv
  134. #define krb_rd_priv                  ck_krb_rd_priv
  135. #define krb_rd_safe                  ck_krb_rd_safe
  136. #define krb_in_tkt                   ck_krb_in_tkt
  137. #define krb_save_credentials         ck_krb_save_credentials
  138.  
  139. const char * ck_krb_get_err_text_entry(int _errno);
  140. int ck_krb_get_cred(char *service, char *instance,
  141.                         char *realm, LEASH_CREDENTIALS *c);
  142. int ck_krb_mk_req(KTEXT authent, char *service,
  143.                      char *instance, char *realm,
  144.                      KRB4_32 checksum);
  145. char * ck_krb_realmofhost(char *host);
  146. char * ck_krb_get_phost(char *alias);
  147. int ck_krb_get_pw_in_tkt(char  *user, char  *instance, char  *realm,
  148.                           char  *service, char  *sinstance,
  149.                           int life, char  *password);
  150. int ck_krb_get_pw_in_tkt_preauth
  151.     (char  *user, char  *instance, char  *realm,
  152.                    char  *service, char  *sinstance,
  153.                    int life, char  *password);
  154. int ck_krb_get_lrealm(char  *realm, int index);
  155. const char * ck_krb_get_err_text(int _errno);
  156. int ck_krb_in_tkt(char *, char *, char *);
  157. int ck_krb_save_credentials(char *, char *, char *, C_Block, int, int, KTEXT, long);
  158. int ck_kname_parse(char  *name, char  *inst,
  159.                               char  *realm,char  *fullname);
  160. int ck_dest_tkt(void);
  161.  
  162. int ck_tf_get_pname(char*);
  163. int ck_tf_get_pinst(char*);
  164. int ck_tf_get_cred(LEASH_CREDENTIALS*);
  165. void ck_tf_close(void);
  166. int ck_tf_init(char *,int);
  167. char * ck_tkt_string(void);
  168. int ck_krb_get_tf_realm(char *ticket_file,
  169.                                              char *realm);
  170. int ck_krb_get_tf_fullname(char *ticket_file,
  171.                                      char *name, char *inst,
  172.                                        char *realm);
  173. int ck_krb_check_serv(char * service);
  174. int ck_kuserok(AUTH_DAT *kdata, char *luser);
  175. int ck_k95_k4_userok( const char * princ_name,
  176.                                 const char * princ_inst,
  177.                                 const char * princ_realm,
  178.                                 const char * local_realm,
  179.                                 const char *luser);
  180. int ck_krb_kntoln(AUTH_DAT *kdata, char *luser);
  181. int ck_k95_k4_princ_to_userid( const char * princ_name,
  182.                                const char * princ_inst,
  183.                                const char * princ_realm,
  184.                                const char * local_realm,
  185.                                char *luser, int len);
  186. int ck_krb_rd_req(KTEXT, char *service, char *inst,
  187.                    unsigned int from_addr, AUTH_DAT  *,
  188.                    char  *srvtab);
  189. int ck_krb_sendauth(long,int,KTEXT,CHAR *,CHAR *,CHAR *,
  190.                      unsigned long,MSG_DAT *,LEASH_CREDENTIALS *, Key_schedule *,
  191.                      struct sockaddr_in *,struct sockaddr_in *, CHAR *);
  192. int ck_set_krb_debug(int);
  193. int ck_set_krb_ap_req_debug(int);
  194. long ck_krb_mk_safe(char * in, char * out,
  195.                      unsigned long length,
  196.                      C_Block block,
  197.                      struct sockaddr_in * sender,
  198.                      struct sockaddr_in * receiver);
  199. long ck_krb_mk_priv(char * in, char * out,
  200.                      unsigned long length,
  201.                      Schedule sched,
  202.                      C_Block block,
  203.                      struct sockaddr_in * sender,
  204.                      struct sockaddr_in * receiver);
  205. long ck_krb_rd_priv(char * in, unsigned long in_length,
  206.                      Schedule sched,
  207.                      C_Block block,
  208.                      struct sockaddr_in * sender,
  209.                      struct sockaddr_in * receiver,
  210.                      MSG_DAT * m_data);
  211. long ck_krb_rd_safe(char * in, unsigned long in_length,
  212.                      C_Block block,
  213.                      struct sockaddr_in * sender,
  214.                      struct sockaddr_in * receiver,
  215.                      MSG_DAT * m_data);
  216. #endif /* MAP_KRB4 */
  217.  
  218. #ifdef MAP_KRB5
  219. #ifndef krb5_const
  220. #define krb5_const const
  221. #endif
  222. #define com_err                       ck_com_err
  223. #define error_message                 ck_error_message
  224. #define krb5_free_creds               ck_krb5_free_creds
  225. #define krb5_free_data                ck_krb5_free_data
  226. #define krb5_free_data_contents       ck_krb5_free_data_contents
  227. #define krb5_copy_keyblock            ck_krb5_copy_keyblock
  228. #define krb5_free_keyblock            ck_krb5_free_keyblock
  229. #define krb5_auth_con_getlocalsubkey  ck_krb5_auth_con_getlocalsubkey
  230. #define krb5_mk_req_extended          ck_krb5_mk_req_extended
  231. #define krb5_mk_req                   ck_krb5_mk_req
  232. #define krb5_auth_con_setflags        ck_krb5_auth_con_setflags
  233. #define krb5_auth_con_init            ck_krb5_auth_con_init
  234. #define krb5_auth_con_free            ck_krb5_auth_con_free
  235. #define krb5_get_credentials          ck_krb5_get_credentials
  236. #define krb5_free_cred_contents       ck_krb5_free_cred_contents
  237. #define krb5_sname_to_principal       ck_krb5_sname_to_principal
  238. #define krb5_cc_default               ck_krb5_cc_default
  239. #define krb5_free_ap_rep_enc_part     ck_krb5_free_ap_rep_enc_part
  240. #define krb5_rd_rep                   ck_krb5_rd_rep
  241. #define krb5_init_context             ck_krb5_init_context
  242. #define krb5_init_ets                 ck_krb5_init_ets
  243. #define krb5_free_context             ck_krb5_free_context
  244. #define krb5_free_unparsed_name       ck_krb5_free_unparsed_name
  245. #define krb5_free_principal           ck_krb5_free_principal
  246. #define krb5_fwd_tgt_creds            ck_krb5_fwd_tgt_creds
  247. #define krb5_auth_con_genaddrs        ck_krb5_auth_con_genaddrs
  248.  
  249. #define krb5_get_host_realm             ck_krb5_get_host_realm
  250. #define krb5_free_host_realm            ck_krb5_free_host_realm
  251. #define krb5_get_in_tkt_with_keytab     ck_krb5_get_in_tkt_with_keytab
  252. #define krb5_get_in_tkt_with_password   ck_krb5_get_in_tkt_with_password
  253. #define krb5_read_password              ck_krb5_read_password
  254. #define krb5_build_principal_ext        ck_krb5_build_principal_ext
  255. #define krb5_unparse_name               ck_krb5_unparse_name
  256. #define krb5_parse_name                 ck_krb5_parse_name
  257. #define krb5_cc_resolve                 ck_krb5_cc_resolve
  258. #define krb5_cc_default_name            ck_krb5_cc_default_name
  259. #define krb5_string_to_timestamp        ck_krb5_string_to_timestamp
  260. #define krb5_kt_resolve                 ck_krb5_kt_resolve
  261. #define krb5_string_to_deltat           ck_krb5_string_to_deltat
  262. #define krb5_timeofday                  ck_krb5_timeofday
  263. #define krb5_get_credentials_renew      ck_krb5_get_credentials_renew
  264. #define krb5_get_credentials_validate   ck_krb5_get_credentials_validate
  265. #define krb5_copy_principal             ck_krb5_copy_principal
  266. #define krb5_timestamp_to_sfstring      ck_krb5_timestamp_to_sfstring
  267. #define krb5_kt_default                 ck_krb5_kt_default
  268. #define krb5_free_ticket                ck_krb5_free_ticket
  269. #define decode_krb5_ticket              ck_decode_krb5_ticket
  270.  
  271. #ifdef CHECKADDRS
  272. #define krb5_os_localaddr               ck_krb5_os_localaddr
  273. #define krb5_address_search             ck_krb5_address_search
  274. #define krb5_free_addresses             ck_krb5_free_addresses
  275. #endif /* CHECKADDRS */
  276.  
  277. #define krb5_auth_con_getremotesubkey   ck_krb5_auth_con_getremotesubkey
  278. #define krb5_mk_rep                     ck_krb5_mk_rep
  279. #define krb5_free_authenticator         ck_krb5_free_authenticator
  280. #define krb5_verify_checksum            ck_krb5_verify_checksum
  281. #define krb5_auth_con_getkey            ck_krb5_auth_con_getkey
  282. #define krb5_auth_con_getauthenticator  ck_krb5_auth_con_getauthenticator
  283. #define krb5_rd_req                     ck_krb5_rd_req
  284. #define krb5_auth_con_setrcache         ck_krb5_auth_con_setrcache
  285. #define krb5_get_server_rcache          ck_krb5_get_server_rcache
  286. #define krb5_auth_con_getrcache         ck_krb5_auth_con_getrcache
  287. #define krb5_free_tgt_creds             ck_krb5_free_tgt_creds
  288. #define krb5_rd_cred                    ck_krb5_rd_cred
  289. #define krb5_c_enctype_compare          ck_krb5_c_enctype_compare
  290. #define krb5_c_encrypt_length           ck_krb5_c_encrypt_length
  291. #define krb5_write_message              ck_krb5_write_message
  292. #define krb5_free_error                 ck_krb5_free_error
  293. #define krb5_sendauth                   ck_krb5_sendauth
  294. #define krb5_process_key                ck_krb5_process_key
  295. #define krb5_use_enctype                ck_krb5_use_enctype
  296. #define krb5_encrypt                    ck_krb5_encrypt
  297. #define krb5_decrypt                    ck_krb5_decrypt
  298. #define krb5_encrypt_size               ck_krb5_encrypt_size
  299. #define krb5_kuserok                    ck_krb5_kuserok
  300. #define krb5_aname_to_localname         ck_krb5_aname_to_localname
  301.  
  302. #define krb5_appdefault_boolean         ck_krb5_appdefault_boolean
  303. #define krb5_appdefault_string          ck_krb5_appdefault_string
  304. #define krb5_get_init_creds_password              ck_krb5_get_init_creds_password
  305. #define krb5_get_init_creds_opt_set_address_list  ck_krb5_get_init_creds_opt_set_address_list
  306. #define krb5_get_renewed_creds                    ck_krb5_get_renewed_creds
  307. #define krb5_get_validated_creds                  ck_krb5_get_validated_creds
  308. #define krb5_get_init_creds_opt_set_tkt_life      ck_krb5_get_init_creds_opt_set_tkt_life
  309. #define krb5_get_init_creds_opt_set_forwardable   ck_krb5_get_init_creds_opt_set_forwardable
  310. #define krb5_get_init_creds_opt_set_proxiable     ck_krb5_get_init_creds_opt_set_proxiable
  311. #define krb5_get_init_creds_opt_set_renew_life    ck_krb5_get_init_creds_opt_set_renew_life
  312. #define krb5_get_init_creds_opt_init              ck_krb5_get_init_creds_opt_init
  313. #define krb5_get_init_creds_opt_set_etype_list    ck_krb5_get_init_creds_opt_set_etype_list
  314. #define krb5_get_init_creds_opt_set_preauth_list  ck_krb5_get_init_creds_opt_set_preauth_list
  315. #define krb5_get_init_creds_opt_set_salt          ck_krb5_get_init_creds_opt_set_salt
  316. #define krb5_rd_safe                              ck_krb5_rd_safe
  317. #define krb5_mk_safe                              ck_krb5_mk_safe
  318. #define krb5_rd_priv                              ck_krb5_rd_priv
  319. #define krb5_mk_priv                              ck_krb5_mk_priv
  320. #define krb5_auth_con_setuseruserkey              ck_krb5_auth_con_setuseruserkey
  321. #define krb5_read_message                         ck_krb5_read_message
  322. #define krb5_get_profile                          ck_krb5_get_profile
  323. #define profile_get_relation_names                ck_profile_get_relation_names
  324. #define profile_get_subsection_names              ck_profile_get_subsection_names
  325. #define krb5_free_keyblock_contents               ck_krb5_free_keyblock_contents
  326. #define krb5_c_encrypt                            ck_krb5_c_encrypt
  327. #define krb5_c_decrypt                            ck_krb5_c_decrypt
  328. #define krb5_c_make_random_key                    ck_krb5_c_make_random_key
  329. #define krb5_c_random_seed                        ck_krb5_c_random_seed
  330. #define krb5_c_block_size                         ck_krb5_c_block_size
  331. #define krb5_kt_default_name                      ck_krb5_kt_default_name
  332.  
  333. #ifdef  krb5_cc_get_principal
  334. #define NO_DEF_KRB5_CCACHE
  335. #undef  krb5_cc_get_principal
  336. #endif
  337. #define krb5_cc_get_principal                     ck_krb5_cc_get_principal
  338. #ifdef krb5_cc_store_cred
  339. #undef krb5_cc_store_cred
  340. #endif
  341. #define krb5_cc_store_cred                        ck_krb5_cc_store_cred
  342. #ifdef krb5_cc_initialize
  343. #undef krb5_cc_initialize
  344. #endif
  345. #define krb5_cc_initialize                        ck_krb5_cc_initialize
  346. #ifdef krb5_cc_destroy
  347. #undef krb5_cc_destroy
  348. #endif
  349. #define krb5_cc_destroy                           ck_krb5_cc_destroy
  350. #ifdef krb5_cc_end_seq_get
  351. #undef krb5_cc_end_seq_get
  352. #endif
  353. #define krb5_cc_end_seq_get                       ck_krb5_cc_end_seq_get
  354. #ifdef krb5_cc_next_cred
  355. #undef krb5_cc_next_cred
  356. #endif
  357. #define krb5_cc_next_cred                         ck_krb5_cc_next_cred
  358. #ifdef krb5_cc_start_seq_get
  359. #undef krb5_cc_start_seq_get
  360. #endif
  361. #define krb5_cc_start_seq_get                     ck_krb5_cc_start_seq_get
  362. #ifdef krb5_cc_get_type
  363. #undef krb5_cc_get_type
  364. #endif
  365. #define krb5_cc_get_type                          ck_krb5_cc_get_type
  366. #ifdef krb5_cc_get_name
  367. #undef krb5_cc_get_name
  368. #endif
  369. #define krb5_cc_get_name                          ck_krb5_cc_get_name
  370. #ifdef krb5_cc_set_flags
  371. #undef krb5_cc_set_flags
  372. #endif
  373. #define krb5_cc_set_flags                         ck_krb5_cc_set_flags
  374. #ifdef krb5_cc_close
  375. #undef krb5_cc_close
  376. #endif
  377. #define krb5_cc_close                             ck_krb5_cc_close
  378.  
  379. #ifdef krb5_kt_get_type
  380. #define NO_DEF_KRB5_KT
  381. #undef krb5_kt_get_type
  382. #endif
  383. #define krb5_kt_get_type                          ck_krb5_kt_get_type
  384. #ifdef krb5_kt_get_name
  385. #undef krb5_kt_get_name
  386. #endif
  387. #define krb5_kt_get_name                          ck_krb5_kt_get_name
  388. #ifdef krb5_kt_close
  389. #undef krb5_kt_close
  390. #endif
  391. #define krb5_kt_close                             ck_krb5_kt_close
  392. #ifdef krb5_kt_get_entry
  393. #undef krb5_kt_get_entry
  394. #endif
  395. #define krb5_kt_get_entry                         ck_krb5_kt_get_entry
  396. #ifdef krb5_kt_start_seq_get
  397. #undef krb5_kt_start_seq_get
  398. #endif
  399. #define krb5_kt_start_seq_get                     ck_krb5_kt_start_seq_get
  400. #ifdef krb5_kt_next_entry
  401. #undef krb5_kt_next_entry
  402. #endif
  403. #define krb5_kt_next_entry                        ck_krb5_kt_next_entry
  404. #ifdef krb5_kt_end_seq_get
  405. #undef krb5_kt_end_seq_get
  406. #endif
  407. #define krb5_kt_end_seq_get                       ck_krb5_kt_end_seq_get
  408. #define krb5_build_principal                      ck_krb5_build_principal
  409.  
  410. #define krb524_init_ets                           ck_krb524_init_ets
  411. #define krb524_convert_creds_kdc                  ck_krb524_convert_creds_kdc
  412.  
  413. void
  414. ck_com_err(const char *, errcode_t, const char *, ...);
  415. void ck_com_err_va(const char *, errcode_t, const char *, va_list);
  416. const char * ck_error_message(errcode_t);
  417. void ck_krb5_free_creds(krb5_context, krb5_creds*);
  418. void ck_krb5_free_data(krb5_context, krb5_data *);
  419. void ck_krb5_free_data_contents(krb5_context, krb5_data *);
  420. krb5_error_code ck_krb5_copy_keyblock(krb5_context,
  421.                                        krb5_const krb5_keyblock  *,
  422.                                        krb5_keyblock  *  *);
  423. void ck_krb5_free_keyblock(krb5_context, krb5_keyblock  *);
  424. krb5_error_code ck_krb5_auth_con_getlocalsubkey(krb5_context,
  425.                                                  krb5_auth_context,
  426.                                                  krb5_keyblock  *  *);
  427. krb5_error_code ck_krb5_mk_req_extended (krb5_context,
  428.                                           krb5_auth_context  *,
  429.                                           krb5_const krb5_flags,
  430.                                           krb5_data  *,
  431.                                           krb5_creds  *,
  432.                                           krb5_data  * );
  433. krb5_error_code ck_krb5_mk_req(krb5_context,
  434.                 krb5_auth_context *,
  435.                 krb5_const krb5_flags,
  436.                 char *,
  437.                 char *,
  438.                 krb5_data *,
  439.                 krb5_ccache,
  440.                 krb5_data * );
  441. krb5_error_code
  442. ck_krb5_auth_con_setflags(krb5_context,
  443.                                         krb5_auth_context,
  444.                                         krb5_int32);
  445. krb5_error_code
  446. ck_krb5_auth_con_init(krb5_context,
  447.                                     krb5_auth_context  *);
  448. krb5_error_code
  449. ck_krb5_auth_con_free(krb5_context,
  450.                                     krb5_auth_context);
  451. krb5_error_code
  452. ck_krb5_get_credentials(krb5_context,
  453.                                      krb5_const krb5_flags,
  454.                                      krb5_ccache,
  455.                                      krb5_creds  *,
  456.                                      krb5_creds  *  *);
  457. void
  458. ck_krb5_free_cred_contents(krb5_context, krb5_creds  *);
  459. krb5_error_code
  460. ck_krb5_sname_to_principal(krb5_context,
  461.                                         krb5_const char  *,
  462.                                         krb5_const char  *,
  463.                                         krb5_int32,
  464.                                         krb5_principal  *);
  465. krb5_error_code
  466. ck_krb5_cc_default(krb5_context,
  467.                                 krb5_ccache  *);
  468. void
  469. ck_krb5_free_ap_rep_enc_part(krb5_context,
  470.                                           krb5_ap_rep_enc_part  *);
  471. krb5_error_code
  472. ck_krb5_rd_rep(krb5_context,
  473.                             krb5_auth_context,
  474.                             krb5_const krb5_data  *,
  475.                             krb5_ap_rep_enc_part  *  *);
  476. krb5_error_code ck_krb5_init_context(krb5_context *);
  477. void ck_krb5_free_context(krb5_context);
  478. krb5_error_code ck_krb5_init_ets(krb5_context);
  479. void ck_krb5_free_principal(krb5_context, krb5_principal );
  480. void ck_krb5_free_unparsed_name(krb5_context, char *);
  481. krb5_error_code ck_krb5_fwd_tgt_creds(krb5_context,
  482.                                      krb5_auth_context,
  483.                                      char  *,
  484.                                      krb5_principal,
  485.                                      krb5_principal,
  486.                                      krb5_ccache,
  487.                                      int forwardable,
  488.                                      krb5_data  *);
  489. krb5_error_code
  490. ck_krb5_auth_con_genaddrs(krb5_context,
  491.                            krb5_auth_context,
  492.                            int, int);
  493.  
  494. krb5_error_code
  495. ck_krb5_get_host_realm(krb5_context,
  496.                         const char *,
  497.                         char ***);
  498. krb5_error_code
  499. ck_krb5_free_host_realm(krb5_context,
  500.                          char **);
  501. krb5_error_code
  502. ck_krb5_get_in_tkt_with_keytab(krb5_context,
  503.                                 krb5_const krb5_flags,
  504.                                 krb5_address * krb5_const *,
  505.                                 krb5_enctype *,
  506.                                 krb5_preauthtype *,
  507.                                 krb5_const krb5_keytab,
  508.                                 krb5_ccache,
  509.                                 krb5_creds *,
  510.                                 krb5_kdc_rep ** );
  511.  
  512. krb5_error_code
  513. ck_krb5_get_in_tkt_with_password(krb5_context,
  514.                                   krb5_const krb5_flags,
  515.                                   krb5_address * krb5_const *,
  516.                                   krb5_enctype *,
  517.                                   krb5_preauthtype *,
  518.                                   krb5_const char *,
  519.                                   krb5_ccache,
  520.                                   krb5_creds *,
  521.                                   krb5_kdc_rep **);
  522.  
  523. krb5_error_code
  524. ck_krb5_read_password(krb5_context,
  525.                        const char *,
  526.                        const char *,
  527.                        char *,
  528.                        int * );
  529.  
  530. krb5_error_code
  531. ck_krb5_build_principal_ext(krb5_context,
  532.                              krb5_principal *,
  533.                              int,
  534.                              krb5_const char *,
  535.                              int n2,
  536.                              krb5_const char * sz2,
  537.                              int n3,
  538.                              krb5_const char * sz3,
  539.                              ...);
  540.  
  541. krb5_error_code
  542. ck_krb5_unparse_name(krb5_context,
  543.                       krb5_const_principal,
  544.                       char ** );
  545.  
  546. krb5_error_code
  547. ck_krb5_parse_name(krb5_context,
  548.                     krb5_const char *,
  549.                     krb5_principal *);
  550.  
  551. krb5_error_code
  552. ck_krb5_cc_resolve(krb5_context,
  553.                     char *,
  554.                     krb5_ccache *);
  555.  
  556. const char *
  557. ck_krb5_cc_default_name(krb5_context);
  558.  
  559. krb5_error_code
  560. ck_krb5_string_to_timestamp(char *,
  561.                              krb5_timestamp *);
  562.  
  563. krb5_error_code
  564. ck_krb5_kt_resolve(krb5_context,
  565.                     krb5_const char *,
  566.                     krb5_keytab *);
  567.  
  568. krb5_error_code
  569. ck_krb5_string_to_deltat(char *, krb5_deltat *);
  570.  
  571. krb5_error_code
  572. ck_krb5_timeofday(krb5_context,
  573.                    krb5_int32 *);
  574.  
  575. krb5_error_code
  576. ck_krb5_get_credentials_renew(krb5_context,
  577.                                krb5_const krb5_flags,
  578.                                krb5_ccache,
  579.                                krb5_creds *,
  580.                                krb5_creds **);
  581.  
  582. krb5_error_code
  583. ck_krb5_get_credentials_validate(krb5_context,
  584.                                   krb5_const krb5_flags,
  585.                                   krb5_ccache,
  586.                                   krb5_creds *,
  587.                                   krb5_creds **);
  588.  
  589. krb5_error_code
  590. ck_krb5_copy_principal(krb5_context,
  591.                         krb5_const_principal,
  592.                         krb5_principal *);
  593.  
  594. krb5_error_code
  595. ck_krb5_timestamp_to_sfstring(krb5_timestamp,
  596.                                char *,
  597.                                size_t,
  598.                                char *);
  599.  
  600. krb5_error_code
  601. ck_krb5_kt_default(krb5_context,
  602.                     krb5_keytab *);
  603.  
  604. krb5_error_code
  605. ck_krb5_free_ticket(krb5_context, krb5_ticket *);
  606.  
  607. krb5_error_code
  608. ck_decode_krb5_ticket(const krb5_data *code,
  609.                        krb5_ticket **rep);
  610.  
  611. krb5_error_code
  612. ck_cygnus_decode_krb5_ticket(const krb5_data *code,
  613.                               krb5_ticket **rep);
  614.  
  615. #ifdef CHECKADDRS
  616. krb5_error_code
  617. ck_krb5_os_localaddr(krb5_context con,
  618.                       krb5_address *** ppp);
  619.  
  620. krb5_boolean
  621. ck_krb5_address_search(krb5_context con,
  622.                           krb5_const krb5_address * p,
  623.                           krb5_address * krb5_const * pp);
  624.  
  625. void
  626. ck_krb5_free_addresses(krb5_context con,
  627.                         krb5_address ** pp);
  628. #endif /* CHECKADDRS */
  629.  
  630. krb5_error_code
  631. ck_krb5_auth_con_getremotesubkey(krb5_context,
  632.                                   krb5_auth_context,
  633.                                   krb5_keyblock **);
  634.  
  635. krb5_error_code
  636. ck_krb5_mk_rep(krb5_context, krb5_auth_context,
  637.                 krb5_data *);
  638.  
  639. krb5_error_code
  640. ck_krb5_free_authenticator(krb5_context,
  641.                             krb5_authenticator *);
  642.  
  643. krb5_error_code
  644. ck_krb5_verify_checksum(krb5_context context,
  645.                          krb5_const krb5_cksumtype ctype,
  646.                          krb5_const krb5_checksum * cksum,
  647.                          krb5_const krb5_pointer in, krb5_const size_t in_length,
  648.                          krb5_const krb5_pointer seed, krb5_const size_t seed_length);
  649.  
  650. krb5_error_code
  651. ck_krb5_auth_con_getkey(krb5_context, krb5_auth_context, krb5_keyblock **);
  652.  
  653. krb5_error_code
  654. ck_krb5_auth_con_getauthenticator
  655. (krb5_context, krb5_auth_context, krb5_authenticator **);
  656.  
  657. krb5_error_code
  658. ck_krb5_rd_req
  659. (krb5_context, krb5_auth_context *, krb5_const krb5_data *,
  660.     krb5_const_principal, krb5_keytab, krb5_flags *,
  661.     krb5_ticket **);
  662.  
  663. krb5_error_code
  664. ck_krb5_auth_con_setrcache
  665. (krb5_context, krb5_auth_context, krb5_rcache);
  666.  
  667. krb5_error_code
  668. ck_krb5_get_server_rcache
  669. (krb5_context, krb5_const krb5_data *, krb5_rcache *);
  670.  
  671. krb5_error_code
  672. ck_krb5_auth_con_getrcache
  673. (krb5_context, krb5_auth_context, krb5_rcache *);
  674.  
  675. krb5_error_code
  676. ck_krb5_free_tgt_creds
  677. (krb5_context, krb5_creds ** );
  678.  
  679. krb5_error_code
  680. ck_krb5_rd_cred
  681. (krb5_context,krb5_auth_context,krb5_data *, krb5_creds ***,
  682.     krb5_replay_data *);
  683.  
  684. krb5_error_code
  685. ck_krb5_c_enctype_compare
  686. (krb5_context, krb5_enctype, krb5_enctype, krb5_boolean *);
  687.  
  688. krb5_error_code
  689. ck_krb5_write_message
  690. (krb5_context, krb5_pointer, krb5_data *);
  691.  
  692. krb5_error_code
  693. ck_krb5_free_error
  694. (krb5_context, krb5_error *);
  695.  
  696. krb5_error_code
  697. ck_krb5_sendauth
  698. (krb5_context,
  699.     krb5_auth_context *,
  700.     krb5_pointer,
  701.     char *,
  702.     krb5_principal,
  703.     krb5_principal,
  704.     krb5_flags,
  705.     krb5_data *,
  706.     krb5_creds *,
  707.     krb5_ccache,
  708.     krb5_error **,
  709.     krb5_ap_rep_enc_part **,
  710.     krb5_creds **);
  711.  
  712. krb5_error_code
  713. ck_krb5_process_key
  714. (krb5_context, krb5_encrypt_block *, const krb5_keyblock *);
  715.  
  716. krb5_error_code
  717. ck_krb5_use_enctype
  718. (krb5_context, krb5_encrypt_block *, const krb5_enctype);
  719.  
  720. krb5_error_code
  721. ck_krb5_encrypt
  722. (krb5_context context,
  723.     krb5_const krb5_pointer inptr,
  724.     krb5_pointer outptr,
  725.     krb5_const size_t size,
  726.     krb5_encrypt_block * eblock,
  727.     krb5_pointer ivec);
  728.  
  729. size_t
  730. ck_krb5_encrypt_size
  731. (krb5_const size_t length,
  732.     krb5_enctype crypto);
  733.  
  734. krb5_error_code
  735. ck_krb5_decrypt
  736. (krb5_context context,
  737.     krb5_const krb5_pointer inptr,
  738.     krb5_pointer outptr,
  739.     krb5_const size_t size,
  740.     krb5_encrypt_block  * eblock,
  741.     krb5_pointer ivec);
  742.  
  743. krb5_boolean
  744. ck_krb5_kuserok
  745. (krb5_context context,krb5_principal princ, const char * p);
  746.  
  747. krb5_error_code
  748. ck_krb5_aname_to_localname
  749. (krb5_context context, krb5_const_principal aname, const int lnsize, char *lname);
  750.  
  751. int
  752. ck_k95_k5_userok
  753. (const char * princ_name, const char * princ_inst, const char * princ_realm,
  754.    const char * local_realm, const char * userid);
  755.  
  756. int
  757. ck_k95_k5_principal_to_localname
  758. (const char * princ_name, const char * local_realm, char * userid, int len);
  759.  
  760. void
  761. ck_krb5_appdefault_boolean
  762. (krb5_context,const char *,const krb5_data *,const char *,
  763.      int,int * );
  764. void
  765. ck_krb5_appdefault_string
  766. (krb5_context,const char *,const krb5_data *,const char *,
  767.     char ** );
  768.  
  769. void ck_krb5_get_init_creds_opt_init
  770. (krb5_get_init_creds_opt *opt);
  771.  
  772. void ck_krb5_get_init_creds_opt_set_tkt_life
  773. (krb5_get_init_creds_opt *opt,
  774.                  krb5_deltat tkt_life);
  775.  
  776. void ck_krb5_get_init_creds_opt_set_renew_life
  777. (krb5_get_init_creds_opt *opt,
  778.         krb5_deltat renew_life);
  779.  
  780. void ck_krb5_get_init_creds_opt_set_forwardable
  781. (krb5_get_init_creds_opt *opt,
  782.         int forwardable);
  783.  
  784. void ck_krb5_get_init_creds_opt_set_proxiable
  785. (krb5_get_init_creds_opt *opt,
  786.         int proxiable);
  787.  
  788. void ck_krb5_get_init_creds_opt_set_etype_list
  789. (krb5_get_init_creds_opt *opt,
  790.         krb5_enctype *etype_list,
  791.         int etype_list_length);
  792.  
  793. void ck_krb5_get_init_creds_opt_set_address_list
  794. (krb5_get_init_creds_opt *opt, krb5_address **addresses);
  795.  
  796. void ck_krb5_get_init_creds_opt_set_preauth_list
  797. (krb5_get_init_creds_opt *opt,
  798.         krb5_preauthtype *preauth_list,
  799.         int preauth_list_length);
  800.  
  801. void ck_krb5_get_init_creds_opt_set_salt
  802. (krb5_get_init_creds_opt *opt, krb5_data *salt);
  803.  
  804. krb5_error_code ck_krb5_get_init_creds_password
  805. (krb5_context context,
  806.         krb5_creds *creds,
  807.         krb5_principal client,
  808.         char *password,
  809.         krb5_prompter_fct prompter,
  810.         void *data,
  811.         krb5_deltat start_time,
  812.         char *in_tkt_service,
  813.         krb5_get_init_creds_opt *options);
  814.  
  815. krb5_error_code ck_krb5_get_init_creds_keytab
  816. (krb5_context context,
  817.         krb5_creds *creds,
  818.         krb5_principal client,
  819.         krb5_keytab arg_keytab,
  820.         krb5_deltat start_time,
  821.         char *in_tkt_service,
  822.         krb5_get_init_creds_opt *options);
  823.  
  824. krb5_error_code ck_krb5_get_validated_creds
  825. (krb5_context context,
  826.         krb5_creds *creds,
  827.         krb5_principal client,
  828.         krb5_ccache ccache,
  829.         char *in_tkt_service);
  830.  
  831. krb5_error_code ck_krb5_get_renewed_creds
  832. (krb5_context context,
  833.         krb5_creds *creds,
  834.         krb5_principal client,
  835.         krb5_ccache ccache,
  836.         char *in_tkt_service);
  837.  
  838. krb5_error_code ck_krb5_rd_safe
  839. (krb5_context,
  840.        krb5_auth_context,
  841.        krb5_const krb5_data  *,
  842.        krb5_data  *,
  843.        krb5_replay_data  *);
  844.  
  845. krb5_error_code ck_krb5_mk_safe
  846. (krb5_context,
  847.         krb5_auth_context,
  848.         krb5_const krb5_data  *,
  849.         krb5_data  *,
  850.         krb5_replay_data  *);
  851.  
  852. krb5_error_code ck_krb5_rd_priv
  853. (krb5_context,
  854.         krb5_auth_context,
  855.         krb5_const krb5_data  *,
  856.         krb5_data  *,
  857.         krb5_replay_data  *);
  858.  
  859. krb5_error_code ck_krb5_mk_priv
  860. (krb5_context,
  861.         krb5_auth_context,
  862.         krb5_const krb5_data  *,
  863.         krb5_data  *,
  864.         krb5_replay_data  *);
  865.  
  866. krb5_error_code ck_krb5_auth_con_setuseruserkey
  867. (krb5_context,
  868.         krb5_auth_context,
  869.         krb5_keyblock *);
  870.  
  871. krb5_error_code ck_krb5_read_message
  872. (krb5_context,
  873.         krb5_pointer,
  874.         krb5_data *);
  875.  
  876. krb5_error_code ck_krb5_get_profile
  877. (krb5_context, profile_t *);
  878.  
  879. long ck_profile_get_relation_names
  880. (profile_t profile, const char **names, char ***ret_names);
  881.  
  882. long ck_profile_get_subsection_names
  883. (profile_t profile, const char **names, char ***ret_names);
  884.  
  885. void ck_krb5_free_keyblock_contents
  886. (krb5_context, krb5_keyblock FAR *);
  887.  
  888. krb5_error_code ck_krb5_c_encrypt
  889. (krb5_context context, krb5_const krb5_keyblock *key,
  890.         krb5_keyusage usage, krb5_const krb5_data *ivec,
  891.         krb5_const krb5_data *input, krb5_enc_data *output);
  892.  
  893. krb5_error_code ck_krb5_c_decrypt
  894. (krb5_context context, krb5_const krb5_keyblock *key,
  895.         krb5_keyusage usage, krb5_const krb5_data *ivec,
  896.         krb5_const krb5_enc_data *input, krb5_data *output);
  897.  
  898. krb5_error_code ck_krb5_c_block_size
  899. (krb5_context context, krb5_enctype enctype,
  900.         size_t *blocksize);
  901.  
  902. krb5_error_code ck_krb5_c_make_random_key
  903. (krb5_context context, krb5_enctype enctype,
  904.        krb5_keyblock *random_key);
  905.  
  906. krb5_error_code ck_krb5_c_random_seed
  907. (krb5_context context, krb5_data *data);
  908.  
  909. krb5_error_code ck_krb5_c_encrypt_length
  910. (krb5_context context, krb5_enctype enctype,
  911.  size_t inputlen, size_t *length);
  912.  
  913. krb5_error_code ck_krb5_kt_default_name
  914. (krb5_context context, char *, int);
  915.  
  916. char * ck_krb5_cc_get_name
  917. (krb5_context context, krb5_ccache cache);
  918.  
  919. krb5_error_code ck_krb5_cc_gen_new
  920.     (krb5_context context, krb5_ccache *cache);
  921.  
  922. krb5_error_code ck_krb5_cc_initialize
  923.     (krb5_context context, krb5_ccache cache,
  924.                     krb5_principal principal);
  925.  
  926. krb5_error_code ck_krb5_cc_destroy
  927.     (krb5_context context, krb5_ccache cache);
  928.  
  929. krb5_error_code ck_krb5_cc_close
  930.     (krb5_context context, krb5_ccache cache);
  931.  
  932. krb5_error_code ck_krb5_cc_store_cred
  933.     (krb5_context context, krb5_ccache cache,
  934.                      krb5_creds *creds);
  935.  
  936. krb5_error_code ck_krb5_cc_retrieve_cred
  937.     (krb5_context context, krb5_ccache cache,
  938.       krb5_flags flags, krb5_creds *mcreds,
  939.       krb5_creds *creds);
  940.  
  941. krb5_error_code ck_krb5_cc_get_principal
  942.     (krb5_context context, krb5_ccache cache,
  943.       krb5_principal *principal);
  944.  
  945. krb5_error_code ck_krb5_cc_start_seq_get
  946.     (krb5_context context, krb5_ccache cache,
  947.       krb5_cc_cursor *cursor);
  948.  
  949. krb5_error_code ck_krb5_cc_next_cred
  950.     (krb5_context context, krb5_ccache cache,
  951.       krb5_cc_cursor *cursor, krb5_creds *creds);
  952.  
  953. krb5_error_code ck_krb5_cc_end_seq_get
  954.     (krb5_context context, krb5_ccache cache,
  955.       krb5_cc_cursor *cursor);
  956.  
  957. krb5_error_code ck_krb5_cc_remove_cred
  958.     (krb5_context context, krb5_ccache cache, krb5_flags flags,
  959.       krb5_creds *creds);
  960.  
  961. krb5_error_code ck_krb5_cc_set_flags
  962.     (krb5_context context, krb5_ccache cache, krb5_flags flags);
  963.  
  964. const char * ck_krb5_cc_get_type
  965.     (krb5_context context, krb5_ccache cache);
  966.  
  967. const char * ck_krb5_kt_get_type
  968.     (krb5_context, krb5_keytab);
  969.  
  970. krb5_error_code ck_krb5_kt_get_name
  971.     (krb5_context, krb5_keytab, char *, unsigned int);
  972.  
  973. krb5_error_code ck_krb5_kt_close
  974.     (krb5_context, krb5_keytab);
  975.  
  976. krb5_error_code ck_krb5_kt_get_entry
  977.     (krb5_context, krb5_keytab,
  978.                  krb5_principal,
  979.                  krb5_kvno,
  980.                  krb5_enctype,
  981.                  krb5_keytab_entry *);
  982.  
  983. krb5_error_code ck_krb5_kt_start_seq_get
  984.     (krb5_context,
  985.                  krb5_keytab,
  986.                  krb5_kt_cursor *);
  987. krb5_error_code ck_krb5_kt_next_entry
  988.         (krb5_context,
  989.                  krb5_keytab,
  990.                  krb5_keytab_entry *,
  991.                  krb5_kt_cursor *);
  992.  
  993. krb5_error_code ck_krb5_kt_end_seq_get
  994.         (krb5_context,
  995.                  krb5_keytab,
  996.                  krb5_kt_cursor *);
  997.  
  998. krb5_error_code ck_krb5_build_principal
  999.         (krb5_context, krb5_principal *, unsigned int, krb5_const char *,
  1000.           krb5_const char *,krb5_const char *,krb5_const char *);
  1001.  
  1002. #ifdef MAP_KRB4
  1003. int ck_krb524_init_ets(krb5_context context);
  1004. int ck_krb524_convert_creds_kdc(krb5_context context, krb5_creds *v5creds,
  1005.                                 LEASH_CREDENTIALS *v4creds);
  1006. #endif /* MAP_KRB4 */
  1007. #endif /* MAP_KRB5 */
  1008.  
  1009. #ifdef MAP_GSSAPI
  1010. #define gss_release_buffer    ck_gss_release_buffer
  1011. #define gss_seal              ck_gss_seal
  1012. #define gss_unseal            ck_gss_unseal
  1013. #define gss_release_name      ck_gss_release_name
  1014. #define gss_init_sec_context  ck_gss_init_sec_context
  1015. #define gss_import_name       ck_gss_import_name
  1016. #define gss_display_status    ck_gss_display_status
  1017. #define gss_nt_service_name   ck_gss_nt_service_name
  1018.  
  1019. #define gss_verify_mic           ck_gss_verify_mic
  1020. #define gss_test_oid_set_member  ck_gss_test_oid_set_member
  1021. #define gss_indicate_mechs       ck_gss_indicate_mechs
  1022. #define gss_add_oid_set_member   ck_gss_add_oid_set_member
  1023. #define gss_create_empty_oid_set ck_gss_create_empty_oid_set
  1024. #define gss_release_cred         ck_gss_release_cred
  1025. #define gss_delete_sec_context   ck_gss_delete_sec_context
  1026. #define gss_accept_sec_context   ck_gss_accept_sec_context
  1027. #define gss_release_oid_set      ck_gss_release_oid_set
  1028. #define gss_acquire_cred         ck_gss_acquire_cred
  1029. #define gss_display_name         ck_gss_display_name
  1030. #define gss_get_mic              ck_gss_get_mic
  1031.  
  1032. unsigned long ck_gss_release_buffer
  1033.     ( unsigned long *, gss_buffer_t );
  1034. unsigned long ck_gss_seal(unsigned long *, gss_ctx_id_t, int, int,
  1035.                            gss_buffer_t, int *, gss_buffer_t );
  1036. unsigned long ck_gss_unseal(unsigned long *,
  1037.                                                 gss_ctx_id_t, gss_buffer_t,
  1038.                                                 gss_buffer_t, int *, int * );
  1039. unsigned long ck_gss_release_name(unsigned long *,
  1040.                                                       gss_name_t *);
  1041. unsigned long ck_gss_init_sec_context
  1042.     (unsigned long *, gss_cred_id_t,
  1043.       gss_ctx_id_t *, gss_name_t,
  1044.       gss_OID, OM_uint32, OM_uint32,
  1045.       gss_channel_bindings_t,
  1046.       gss_buffer_t, gss_OID *,
  1047.       gss_buffer_t,
  1048.       unsigned long *,
  1049.       unsigned long * );
  1050. unsigned long ck_gss_import_name(unsigned long *,
  1051.                                                      gss_buffer_t, gss_OID,
  1052.                                                      gss_name_t * );
  1053. unsigned long ck_gss_display_status(unsigned long *,
  1054.                                                         unsigned long,
  1055.                                                         int, gss_OID,
  1056.                                                         unsigned long *,
  1057.                                                         gss_buffer_t);
  1058. unsigned long ck_gss_indicate_mechs
  1059.     (OM_uint32 * minor_status, gss_OID_set * mech_set);
  1060.  
  1061.  
  1062. OM_uint32 ck_gss_verify_mic
  1063. (OM_uint32 *,           /* minor_status */
  1064.             gss_ctx_id_t,               /* context_handle */
  1065.             gss_buffer_t,               /* message_buffer */
  1066.             gss_buffer_t,               /* message_token */
  1067.             gss_qop_t *                 /* qop_state */
  1068.            );
  1069.  
  1070. OM_uint32 ck_gss_release_cred
  1071. (OM_uint32 *,           /* minor_status */
  1072.             gss_cred_id_t *             /* cred_handle */
  1073.            );
  1074.  
  1075. OM_uint32 ck_gss_delete_sec_context
  1076. (OM_uint32 *,           /* minor_status */
  1077.             gss_ctx_id_t *,             /* context_handle */
  1078.             gss_buffer_t                /* output_token */
  1079.            );
  1080.  
  1081. OM_uint32 ck_gss_accept_sec_context
  1082. (OM_uint32 *,           /* minor_status */
  1083.             gss_ctx_id_t *,             /* context_handle */
  1084.             gss_cred_id_t,              /* acceptor_cred_handle */
  1085.             gss_buffer_t,               /* input_token_buffer */
  1086.             gss_channel_bindings_t,     /* input_chan_bindings */
  1087.             gss_name_t *,               /* src_name */
  1088.             gss_OID *,          /* mech_type */
  1089.             gss_buffer_t,               /* output_token */
  1090.             OM_uint32 *,                /* ret_flags */
  1091.             OM_uint32 *,                /* time_rec */
  1092.             gss_cred_id_t *             /* delegated_cred_handle */
  1093.            );
  1094.  
  1095. OM_uint32 ck_gss_acquire_cred
  1096. (OM_uint32 *,           /* minor_status */
  1097.             gss_name_t,                 /* desired_name */
  1098.             OM_uint32,                  /* time_req */
  1099.             gss_OID_set,                /* desired_mechs */
  1100.             gss_cred_usage_t,           /* cred_usage */
  1101.             gss_cred_id_t *,    /* output_cred_handle */
  1102.             gss_OID_set *,              /* actual_mechs */
  1103.             OM_uint32 *         /* time_rec */
  1104.            );
  1105.  
  1106. OM_uint32 ck_gss_get_mic
  1107. (OM_uint32 *,           /* minor_status */
  1108.             gss_ctx_id_t,               /* context_handle */
  1109.             gss_qop_t,                  /* qop_req */
  1110.             gss_buffer_t,               /* message_buffer */
  1111.             gss_buffer_t                /* message_token */
  1112.            );
  1113.  
  1114. OM_uint32 ck_gss_display_name
  1115. (OM_uint32 *,           /* minor_status */
  1116.             gss_name_t,                 /* input_name */
  1117.             gss_buffer_t,               /* output_name_buffer */
  1118.             gss_OID *           /* output_name_type */
  1119.            );
  1120.  
  1121. OM_uint32 ck_gss_test_oid_set_member
  1122. (OM_uint32 *,           /* minor_status */
  1123.             gss_OID,                    /* member */
  1124.             gss_OID_set,                /* set */
  1125.             int *                       /* present */
  1126.            );
  1127.  
  1128. OM_uint32 ck_gss_add_oid_set_member
  1129. (OM_uint32 *,           /* minor_status */
  1130.             gss_OID,                    /* member_oid */
  1131.             gss_OID_set *               /* oid_set */
  1132.            );
  1133.  
  1134. OM_uint32 ck_gss_create_empty_oid_set
  1135. (OM_uint32 *,           /* minor_status */
  1136.             gss_OID_set *               /* oid_set */
  1137.            );
  1138.  
  1139. OM_uint32 ck_gss_release_oid_set
  1140. (OM_uint32 *,           /* minor_status */
  1141.             gss_OID_set *               /* set */
  1142.            );
  1143.  
  1144.  
  1145. #ifdef GSS_OIDS
  1146. /** exported constants defined in gssapi_krb5{,_nx}.h **/
  1147.  
  1148. /* these are bogus, but will compile */
  1149.  
  1150. /*
  1151.  * The OID of the draft krb5 mechanism, assigned by IETF, is:
  1152.  *      iso(1) org(3) dod(5) internet(1) security(5)
  1153.  *      kerberosv5(2) = 1.3.5.1.5.2
  1154.  * The OID of the krb5_name type is:
  1155.  *      iso(1) member-body(2) US(840) mit(113554) infosys(1) gssapi(2)
  1156.  *      krb5(2) krb5_name(1) = 1.2.840.113554.1.2.2.1
  1157.  * The OID of the krb5_principal type is:
  1158.  *      iso(1) member-body(2) US(840) mit(113554) infosys(1) gssapi(2)
  1159.  *      krb5(2) krb5_principal(2) = 1.2.840.113554.1.2.2.2
  1160.  * The OID of the proposed standard krb5 mechanism is:
  1161.  *      iso(1) member-body(2) US(840) mit(113554) infosys(1) gssapi(2)
  1162.  *      krb5(2) = 1.2.840.113554.1.2.2
  1163.  * The OID of the proposed standard krb5 v2 mechanism is:
  1164.  *      iso(1) member-body(2) US(840) mit(113554) infosys(1) gssapi(2)
  1165.  *      krb5v2(3) = 1.2.840.113554.1.2.3
  1166.  *
  1167.  */
  1168.  
  1169. /*
  1170.  * Encoding rules: The first two values are encoded in one byte as 40
  1171.  * * value1 + value2.  Subsequent values are encoded base 128, most
  1172.  * significant digit first, with the high bit (\200) set on all octets
  1173.  * except the last in each value's encoding.
  1174.  */
  1175.  
  1176. static CONST gss_OID_desc
  1177. ck_krb5_gss_oid_array[] = {
  1178.    /* this is the official, rfc-specified OID */
  1179.    {9, "\052\206\110\206\367\022\001\002\002"},
  1180.    /* this is the unofficial, wrong OID */
  1181.    {5, "\053\005\001\005\002"},
  1182.    /* this is the v2 assigned OID */
  1183.    {9, "\052\206\110\206\367\022\001\002\003"},
  1184.    /* these two are name type OID's */
  1185.    {10, "\052\206\110\206\367\022\001\002\002\001"},
  1186.    {10, "\052\206\110\206\367\022\001\002\002\002"},
  1187.    { 0, 0 }
  1188. };
  1189.  
  1190. static CONST gss_OID_desc * CONST ck_gss_mech_krb5 = ck_krb5_gss_oid_array+0;
  1191. static CONST gss_OID_desc * CONST ck_gss_mech_krb5_old = ck_krb5_gss_oid_array+1;
  1192. static CONST gss_OID_desc * CONST ck_gss_mech_krb5_v2 = ck_krb5_gss_oid_array+2;
  1193. static CONST gss_OID_desc * CONST ck_gss_nt_krb5_name = ck_krb5_gss_oid_array+3;
  1194. static CONST gss_OID_desc * CONST ck_gss_nt_krb5_principal = ck_krb5_gss_oid_array+4;
  1195.  
  1196. /*
  1197.  * See krb5/gssapi_krb5.c for a description of the algorithm for
  1198.  * encoding an object identifier.
  1199.  */
  1200.  
  1201. /*
  1202.  * The OID of user_name is:
  1203.  *      iso(1) member-body(2) US(840) mit(113554) infosys(1) gssapi(2)
  1204.  *      generic(1) user_name(1) = 1.2.840.113554.1.2.1.1
  1205.  * machine_uid_name:
  1206.  *      iso(1) member-body(2) US(840) mit(113554) infosys(1) gssapi(2)
  1207.  *      generic(1) machine_uid_name(2) = 1.2.840.113554.1.2.1.2
  1208.  * string_uid_name:
  1209.  *      iso(1) member-body(2) US(840) mit(113554) infosys(1) gssapi(2)
  1210.  *      generic(1) string_uid_name(3) = 1.2.840.113554.1.2.1.3
  1211.  * service_name:
  1212.  *      iso(1) member-body(2) US(840) mit(113554) infosys(1) gssapi(2)
  1213.  *      generic(1) service_name(4) = 1.2.840.113554.1.2.1.4
  1214.  * exported_name:
  1215.  *      1(iso), 3(org), 6(dod), 1(internet), 5(security), 6(nametypes),
  1216.  *          4(gss-api-exported-name)
  1217.  * host_based_service_name (v2):
  1218.  *      iso (1) org (3), dod (6), internet (1), security (5), nametypes(6),
  1219.  *      gss-host-based-services(2)
  1220.  */
  1221.  
  1222. static gss_OID_desc ck_oids[] = {
  1223.    {10, "\052\206\110\206\367\022\001\002\001\001"},
  1224.    {10, "\052\206\110\206\367\022\001\002\001\002"},
  1225.    {10, "\052\206\110\206\367\022\001\002\001\003"},
  1226.    {10, "\052\206\110\206\367\022\001\002\001\004"},
  1227.    { 6, "\053\006\001\005\006\004"},
  1228.    { 6, "\053\006\001\005\006\002"},
  1229. };
  1230.  
  1231. static gss_OID ck_gss_nt_user_name = ck_oids+0;
  1232. static gss_OID ck_gss_nt_machine_uid_name = ck_oids+1;
  1233. static gss_OID ck_gss_nt_string_uid_name = ck_oids+2;
  1234. static gss_OID ck_gss_nt_service_name = ck_oids+3;
  1235. static gss_OID ck_gss_nt_exported_name = ck_oids+4;
  1236. static gss_OID ck_gss_nt_service_name_v2 = ck_oids+5;
  1237. #endif /* GSS_OIDS */
  1238. #endif /* MAP_GSSAPI */
  1239.  
  1240. #ifdef NT
  1241. extern HINSTANCE hKRB5_32;
  1242. extern HINSTANCE hKRB4_32;
  1243. extern HINSTANCE hCOMERR32;
  1244. extern HINSTANCE hPROFILE;
  1245. extern HINSTANCE hKRB42UID;
  1246. extern HINSTANCE hKRB52UID;
  1247. extern HINSTANCE hCRYPT;
  1248. extern HINSTANCE hGSSAPI;
  1249. extern HINSTANCE hLIBKRYPTO;
  1250. #else /* NT */
  1251. extern HMODULE hKRB5_32;
  1252. extern HMODULE hKRB4_32;
  1253. extern HMODULE hCOMERR32;
  1254. extern HMODULE hPROFILE;
  1255. extern HMODULE hKRB42UID;
  1256. extern HMODULE hKRB52UID;
  1257. extern HMODULE hCRYPT;
  1258. extern HMODULE hGSSAPI;
  1259. extern HMODULE hLIBKRYPTO;
  1260. #endif /* NT */
  1261.  
  1262. #ifdef MAP_CRYPT
  1263. int
  1264. ck_encrypt_parse(unsigned char * s, int n);
  1265. void
  1266. ck_encrypt_init(kstream ks, int type);
  1267. int
  1268. ck_encrypt_session_key(Session_Key * key, int n);
  1269. int
  1270. ck_encrypt_dont_support(int);
  1271. void
  1272. ck_encrypt_send_support(void);
  1273. void
  1274. ck_encrypt_send_request_start(void);
  1275. void
  1276. ck_encrypt_request_start(void);
  1277. void
  1278. ck_encrypt_send_request_end(void);
  1279. void
  1280. ck_encrypt_send_end(void);
  1281. int
  1282. ck_encrypt_is_encrypting(void);
  1283. int
  1284. ck_encrypt_is_decrypting(void);
  1285. int
  1286. ck_get_crypt_table(struct keytab ** pTable, int * pN);
  1287. int
  1288. ck_des_is_weak_key(Block B);
  1289.  
  1290. #define encrypt_parse                 ck_encrypt_parse
  1291. #define encrypt_init                  ck_encrypt_init
  1292. #define encrypt_session_key           ck_encrypt_session_key
  1293. #define encrypt_dont_support          ck_encrypt_dont_support
  1294. #define encrypt_send_support          ck_encrypt_send_support
  1295. #define encrypt_send_end              ck_encrypt_send_end
  1296. #define encrypt_send_request_end      ck_encrypt_send_request_end
  1297. #define encrypt_send_request_start    ck_encrypt_send_request_start
  1298. #define encrypt_request_start         ck_encrypt_request_start
  1299. #define encrypt_is_encrypting         ck_encrypt_is_encrypting
  1300. #define encrypt_is_decrypting         ck_encrypt_is_decrypting
  1301. #endif /* MAP_CRYPT */
  1302.  
  1303. #ifdef MAP_NTLM
  1304. #ifdef NT
  1305. #define SECURITY_WIN32
  1306. #include <security.h>
  1307. #ifdef NTLM
  1308. extern SecBuffer     NTLMSecBuf[1];
  1309. extern HINSTANCE hSSPI;
  1310.  
  1311. int
  1312. ntlm_is(unsigned char *data, int cnt);
  1313. int
  1314. ntlm_reply(int how, unsigned char *data, int cnt);
  1315. #endif /* NTLM */
  1316. #endif /* NT */
  1317. #endif /* MAP_NTLM */
  1318. #endif /* OS2 */
  1319.