2 * include/krb5/func-proto.h
4 * Copyright 1990,1991 by the Massachusetts Institute of Technology.
7 * Export of this software from the United States of America may
8 * require a specific license from the United States Government.
9 * It is the responsibility of any person or organization contemplating
10 * export to obtain such a license before exporting.
12 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13 * distribute this software and its documentation for any purpose and
14 * without fee is hereby granted, provided that the above copyright
15 * notice appear in all copies and that both that copyright notice and
16 * this permission notice appear in supporting documentation, and that
17 * the name of M.I.T. not be used in advertising or publicity pertaining
18 * to distribution of the software without specific, written prior
19 * permission. M.I.T. makes no representations about the suitability of
20 * this software for any purpose. It is provided "as is" without express
21 * or implied warranty.
24 * Function prototypes for Kerberos V5 library.
27 #ifndef KRB5_FUNC_PROTO__
28 #define KRB5_FUNC_PROTO__
30 krb5_error_code INTERFACE krb5_init_context
31 PROTOTYPE((krb5_context FAR *));
32 void INTERFACE krb5_free_context
33 PROTOTYPE((krb5_context));
35 krb5_error_code INTERFACE krb5_set_default_in_tkt_etypes
36 PROTOTYPE((krb5_context,
37 const krb5_enctype *));
38 krb5_error_code INTERFACE krb5_get_default_in_tkt_etypes
39 PROTOTYPE((krb5_context,
42 /* This is a hack to find what needs fixing later, when we've all forgotten
43 which rotuines still need fixing */
44 extern krb5_context global_context;
47 krb5_error_code INTERFACE krb5_kdc_rep_decrypt_proc
48 PROTOTYPE((krb5_context,
49 const krb5_keyblock *,
52 krb5_error_code INTERFACE krb5_encode_ticket
53 PROTOTYPE((krb5_context,
56 krb5_error_code INTERFACE krb5_encrypt_tkt_part
57 PROTOTYPE((krb5_context,
59 const krb5_keyblock *,
61 krb5_error_code INTERFACE krb5_decrypt_tkt_part
62 PROTOTYPE((krb5_context,
63 const krb5_keyblock *,
65 krb5_error_code INTERFACE krb5_get_cred_from_kdc
66 PROTOTYPE((krb5_context,
67 krb5_ccache, /* not const, as reading may save
72 void INTERFACE krb5_free_tgt_creds
73 PROTOTYPE((krb5_context,
74 krb5_creds ** )); /* XXX too hard to do with const */
76 #define KRB5_GC_USER_USER 1 /* want user-user ticket */
77 #define KRB5_GC_CACHED 2 /* want cached ticket only */
79 krb5_error_code INTERFACE krb5_get_credentials
80 PROTOTYPE((krb5_context,
84 krb5_creds FAR * FAR *));
85 krb5_error_code INTERFACE krb5_get_for_creds
86 PROTOTYPE((krb5_context,
93 krb5_error_code INTERFACE krb5_mk_req
94 PROTOTYPE((krb5_context,
102 krb5_error_code INTERFACE krb5_mk_req_extended
103 PROTOTYPE((krb5_context,
104 krb5_auth_context FAR * FAR *,
109 krb5_error_code INTERFACE krb5_mk_rep
110 PROTOTYPE((krb5_context,
113 krb5_error_code INTERFACE krb5_rd_rep
114 PROTOTYPE((krb5_context,
115 krb5_auth_context FAR *,
116 const krb5_data FAR *,
117 krb5_ap_rep_enc_part FAR * FAR *));
118 krb5_error_code INTERFACE krb5_mk_error
119 PROTOTYPE((krb5_context,
122 krb5_error_code INTERFACE krb5_rd_error
123 PROTOTYPE((krb5_context,
126 krb5_error_code INTERFACE krb5_rd_safe
127 PROTOTYPE((krb5_context,
131 krb5_replay_data *));
132 krb5_error_code INTERFACE krb5_rd_priv
133 PROTOTYPE((krb5_context,
137 krb5_replay_data *));
138 krb5_error_code INTERFACE krb5_parse_name
139 PROTOTYPE((krb5_context,
141 krb5_principal FAR * ));
142 krb5_error_code INTERFACE krb5_unparse_name
143 PROTOTYPE((krb5_context,
144 krb5_const_principal,
146 krb5_error_code INTERFACE krb5_unparse_name_ext
147 PROTOTYPE((krb5_context,
148 krb5_const_principal,
151 krb5_boolean INTERFACE krb5_address_search
152 PROTOTYPE((krb5_context,
153 const krb5_address *,
154 krb5_address * const *));
155 krb5_boolean INTERFACE krb5_address_compare
156 PROTOTYPE((krb5_context,
157 const krb5_address *,
158 const krb5_address *));
159 int INTERFACE krb5_address_order
160 PROTOTYPE((krb5_context,
161 const krb5_address *,
162 const krb5_address *));
163 krb5_boolean INTERFACE krb5_realm_compare
164 PROTOTYPE((krb5_context,
165 krb5_const_principal,
166 krb5_const_principal));
167 krb5_boolean INTERFACE krb5_principal_compare
168 PROTOTYPE((krb5_context,
169 krb5_const_principal,
170 krb5_const_principal));
171 int INTERFACE krb5_fulladdr_order
172 PROTOTYPE((krb5_context,
173 const krb5_fulladdr *,
174 const krb5_fulladdr *));
175 krb5_error_code INTERFACE krb5_copy_keyblock
176 PROTOTYPE((krb5_context,
177 const krb5_keyblock *,
179 krb5_error_code INTERFACE krb5_copy_keyblock_contents
180 PROTOTYPE((krb5_context,
181 const krb5_keyblock *,
183 krb5_error_code INTERFACE krb5_copy_creds
184 PROTOTYPE((krb5_context,
187 krb5_error_code INTERFACE krb5_copy_data
188 PROTOTYPE((krb5_context,
191 krb5_error_code INTERFACE krb5_copy_principal
192 PROTOTYPE((krb5_context,
193 krb5_const_principal,
195 krb5_error_code INTERFACE krb5_copy_addresses
196 PROTOTYPE((krb5_context,
197 krb5_address * const *,
199 krb5_error_code INTERFACE krb5_copy_ticket
200 PROTOTYPE((krb5_context,
201 const krb5_ticket *, krb5_ticket **));
202 krb5_error_code INTERFACE krb5_copy_authdata
203 PROTOTYPE((krb5_context,
204 krb5_authdata * const *,
206 krb5_error_code INTERFACE krb5_copy_authenticator
207 PROTOTYPE((krb5_context,
208 const krb5_authenticator *,
209 krb5_authenticator **));
210 krb5_error_code INTERFACE krb5_copy_checksum
211 PROTOTYPE((krb5_context,
212 const krb5_checksum *,
214 void INTERFACE krb5_init_ets PROTOTYPE((krb5_context));
215 krb5_error_code INTERFACE krb5_generate_subkey
216 PROTOTYPE((krb5_context,
217 const krb5_keyblock *, krb5_keyblock **));
218 krb5_error_code INTERFACE krb5_generate_seq_number
219 PROTOTYPE((krb5_context,
220 const krb5_keyblock *, krb5_int32 *));
221 krb5_error_code INTERFACE krb5_get_server_rcache
222 PROTOTYPE((krb5_context,
223 const krb5_data *, krb5_rcache *));
224 krb5_error_code INTERFACE_C krb5_build_principal_ext
225 STDARG_P((krb5_context, krb5_principal FAR *, int, const char FAR *, ...));
226 krb5_error_code INTERFACE_C krb5_build_principal
227 STDARG_P((krb5_context, krb5_principal *, int, const char *, ...));
229 /* XXX depending on varargs include file defining va_start... */
230 krb5_error_code INTERFACE_C krb5_build_principal_va
231 PROTOTYPE((krb5_context,
232 krb5_principal *, int, const char *, va_list));
235 krb5_error_code INTERFACE krb5_425_conv_principal
236 PROTOTYPE((krb5_context,
237 const char *name, const char *instance, const char *realm,
238 krb5_principal *princ));
240 krb5_error_code INTERFACE krb5_obtain_padata
241 PROTOTYPE((krb5_context,
242 int type, krb5_principal client, krb5_address **src_addr,
243 krb5_keyblock *encrypt_key, krb5_pa_data **data));
245 krb5_error_code INTERFACE krb5_verify_padata
246 PROTOTYPE((krb5_context,
247 krb5_pa_data * data, krb5_principal client,
248 krb5_address **src_addr, krb5_keyblock *decrypt_key,
249 int *req_id, int *flags));
252 krb5_error_code INTERFACE krb5_kt_register
253 PROTOTYPE((krb5_context,
255 krb5_error_code INTERFACE krb5_kt_resolve
256 PROTOTYPE((krb5_context,
259 krb5_error_code INTERFACE krb5_kt_default_name
260 PROTOTYPE((krb5_context,
263 krb5_error_code INTERFACE krb5_kt_default
264 PROTOTYPE((krb5_context,
266 krb5_error_code INTERFACE krb5_kt_free_entry
267 PROTOTYPE((krb5_context,
268 krb5_keytab_entry * ));
269 /* remove and add are functions, so that they can return NOWRITE
270 if not a writable keytab */
271 krb5_error_code INTERFACE krb5_kt_remove_entry
272 PROTOTYPE((krb5_context,
274 krb5_keytab_entry * ));
275 krb5_error_code INTERFACE krb5_kt_add_entry
276 PROTOTYPE((krb5_context,
278 krb5_keytab_entry * ));
279 krb5_error_code INTERFACE krb5_principal2salt
280 PROTOTYPE((krb5_context,
281 krb5_const_principal, krb5_data *));
282 krb5_error_code INTERFACE krb5_principal2salt_norealm
283 PROTOTYPE((krb5_context,
284 krb5_const_principal, krb5_data *));
286 /* librc.spec--see rcache.h */
289 krb5_error_code INTERFACE krb5_cc_resolve
290 PROTOTYPE((krb5_context,
293 krb5_error_code INTERFACE krb5_cc_generate_new
294 PROTOTYPE((krb5_context,
297 char * INTERFACE krb5_cc_default_name
298 PROTOTYPE((krb5_context));
299 krb5_error_code INTERFACE krb5_cc_default
300 PROTOTYPE((krb5_context,
302 unsigned int INTERFACE krb5_get_notification_message
306 krb5_error_code INTERFACE krb5_check_transited_list
307 PROTOTYPE((krb5_context,
308 krb5_data *trans, krb5_data *realm1, krb5_data *realm2));
311 void INTERFACE krb5_free_realm_tree
312 PROTOTYPE((krb5_context,
316 void INTERFACE krb5_free_principal
317 PROTOTYPE((krb5_context,
319 void INTERFACE krb5_free_authenticator
320 PROTOTYPE((krb5_context,
321 krb5_authenticator * ));
322 void INTERFACE krb5_free_authenticator_contents
323 PROTOTYPE((krb5_context,
324 krb5_authenticator * ));
325 void INTERFACE krb5_free_addresses
326 PROTOTYPE((krb5_context,
327 krb5_address FAR * FAR * ));
328 void INTERFACE krb5_free_address
329 PROTOTYPE((krb5_context,
331 void INTERFACE krb5_free_authdata
332 PROTOTYPE((krb5_context,
334 void INTERFACE krb5_free_enc_tkt_part
335 PROTOTYPE((krb5_context,
336 krb5_enc_tkt_part * ));
337 void INTERFACE krb5_free_ticket
338 PROTOTYPE((krb5_context,
340 void INTERFACE krb5_free_tickets
341 PROTOTYPE((krb5_context,
343 void INTERFACE krb5_free_kdc_req
344 PROTOTYPE((krb5_context,
346 void INTERFACE krb5_free_kdc_rep
347 PROTOTYPE((krb5_context,
349 void INTERFACE krb5_free_last_req
350 PROTOTYPE((krb5_context,
351 krb5_last_req_entry ** ));
352 void INTERFACE krb5_free_enc_kdc_rep_part
353 PROTOTYPE((krb5_context,
354 krb5_enc_kdc_rep_part * ));
355 void INTERFACE krb5_free_error
356 PROTOTYPE((krb5_context,
358 void INTERFACE krb5_free_ap_req
359 PROTOTYPE((krb5_context,
361 void INTERFACE krb5_free_ap_rep
362 PROTOTYPE((krb5_context,
364 void INTERFACE krb5_free_safe
365 PROTOTYPE((krb5_context,
367 void INTERFACE krb5_free_priv
368 PROTOTYPE((krb5_context,
370 void INTERFACE krb5_free_priv_enc_part
371 PROTOTYPE((krb5_context,
372 krb5_priv_enc_part * ));
373 void INTERFACE krb5_free_kdc_req
374 PROTOTYPE((krb5_context,
376 void INTERFACE krb5_free_cred
377 PROTOTYPE((krb5_context,
379 void INTERFACE krb5_free_creds
380 PROTOTYPE((krb5_context,
382 void INTERFACE krb5_free_cred_contents
383 PROTOTYPE((krb5_context,
385 void INTERFACE krb5_free_cred_enc_part
386 PROTOTYPE((krb5_context,
387 krb5_cred_enc_part *));
388 void INTERFACE krb5_free_checksum
389 PROTOTYPE((krb5_context,
391 void INTERFACE krb5_free_keyblock
392 PROTOTYPE((krb5_context,
394 void INTERFACE krb5_free_pa_data
395 PROTOTYPE((krb5_context,
397 void INTERFACE krb5_free_ap_rep_enc_part
398 PROTOTYPE((krb5_context,
399 krb5_ap_rep_enc_part FAR *));
400 void INTERFACE krb5_free_tkt_authent
401 PROTOTYPE((krb5_context,
402 krb5_tkt_authent *));
403 void INTERFACE krb5_free_pwd_data
404 PROTOTYPE((krb5_context,
406 void INTERFACE krb5_free_pwd_sequences
407 PROTOTYPE((krb5_context,
408 passwd_phrase_element **));
410 /* From krb5/os but needed but by the outside world */
411 krb5_error_code INTERFACE krb5_us_timeofday
412 PROTOTYPE((krb5_context,
415 krb5_error_code INTERFACE krb5_timeofday
416 PROTOTYPE((krb5_context,
418 /* get all the addresses of this host */
419 krb5_error_code INTERFACE krb5_os_localaddr
420 PROTOTYPE((krb5_address FAR * FAR * FAR *));
421 krb5_error_code INTERFACE krb5_get_default_realm
422 PROTOTYPE((krb5_context,
424 krb5_error_code INTERFACE krb5_sname_to_principal
425 PROTOTYPE((krb5_context,
429 krb5_principal FAR *));
431 /* Only put things which don't have pointers to the narrow types in this
434 krb5_error_code INTERFACE krb5_encode_kdc_rep
435 PROTOTYPE((krb5_context,
437 const krb5_enc_kdc_rep_part *,
438 krb5_encrypt_block *,
439 const krb5_keyblock *,
443 krb5_error_code INTERFACE krb5_send_tgs
444 PROTOTYPE((krb5_context,
446 const krb5_ticket_times *,
447 const krb5_enctype *,
448 const krb5_cksumtype,
449 krb5_const_principal,
450 krb5_address * const *,
451 krb5_authdata * const *,
452 krb5_pa_data * const *,
457 krb5_error_code INTERFACE krb5_get_in_tkt
458 PROTOTYPE((krb5_context,
460 krb5_address * const *,
463 krb5_error_code (INTERFACE * )(krb5_context,
469 krb5_error_code (INTERFACE * )(krb5_context,
470 const krb5_keyblock *,
478 krb5_error_code INTERFACE krb5_get_in_tkt_with_password
479 PROTOTYPE((krb5_context,
481 krb5_address FAR * const FAR *,
483 krb5_preauthtype FAR *,
487 krb5_kdc_rep FAR * FAR * ));
489 krb5_error_code INTERFACE krb5_get_in_tkt_with_skey
490 PROTOTYPE((krb5_context,
492 krb5_address * const *,
495 const krb5_keyblock *,
500 krb5_error_code INTERFACE krb5_get_in_tkt_with_keytab
501 PROTOTYPE((krb5_context,
503 krb5_address * const *,
512 krb5_error_code INTERFACE krb5_decode_kdc_rep
513 PROTOTYPE((krb5_context,
515 const krb5_keyblock *,
519 krb5_error_code INTERFACE krb5_rd_req
520 PROTOTYPE((krb5_context,
521 krb5_auth_context **,
523 krb5_const_principal,
528 krb5_error_code INTERFACE krb5_rd_req_decoded
529 PROTOTYPE((krb5_context,
530 krb5_auth_context **,
532 krb5_const_principal,
537 krb5_error_code INTERFACE krb5_kt_read_service_key
538 PROTOTYPE((krb5_context,
544 krb5_error_code INTERFACE krb5_mk_safe
545 PROTOTYPE((krb5_context,
549 krb5_replay_data *));
550 krb5_error_code INTERFACE krb5_mk_priv
551 PROTOTYPE((krb5_context,
555 krb5_replay_data *));
556 krb5_error_code INTERFACE krb5_cc_register
557 PROTOTYPE((krb5_context,
561 krb5_error_code INTERFACE krb5_sendauth
562 PROTOTYPE((krb5_context,
563 krb5_auth_context **,
573 krb5_ap_rep_enc_part **,
576 krb5_error_code INTERFACE krb5_recvauth PROTOTYPE((krb5_context,
577 krb5_auth_context **,
586 krb5_error_code INTERFACE krb5_walk_realm_tree
587 PROTOTYPE((krb5_context,
593 krb5_error_code INTERFACE krb5_mk_cred
594 PROTOTYPE((krb5_context,
602 krb5_error_code INTERFACE krb5_auth_con_init
603 PROTOTYPE((krb5_context,
604 krb5_auth_context **));
606 krb5_error_code INTERFACE krb5_auth_con_free
607 PROTOTYPE((krb5_context,
608 krb5_auth_context *));
610 krb5_error_code INTERFACE krb5_auth_con_setflags
611 PROTOTYPE((krb5_context,
615 krb5_error_code INTERFACE krb5_auth_con_getflags
616 PROTOTYPE((krb5_context,
620 krb5_error_code INTERFACE krb5_auth_con_setaddrs
621 PROTOTYPE((krb5_context,
626 krb5_error_code INTERFACE krb5_auth_con_getaddrs
627 PROTOTYPE((krb5_context,
632 krb5_error_code INTERFACE krb5_auth_con_setuseruserkey
633 PROTOTYPE((krb5_context,
637 krb5_error_code INTERFACE krb5_auth_con_getlocalsubkey
638 PROTOTYPE((krb5_context,
642 krb5_error_code INTERFACE krb5_auth_con_setcksumtype
643 PROTOTYPE((krb5_context,
647 krb5_error_code INTERFACE krb5_auth_con_getcksumtype
648 PROTOTYPE((krb5_context,
652 krb5_error_code INTERFACE krb5_auth_con_getlocalseqnumber
653 PROTOTYPE((krb5_context,
657 krb5_error_code INTERFACE krb5_auth_con_getremoteseqnumber
658 PROTOTYPE((krb5_context,
662 krb5_error_code INTERFACE krb5_auth_con_setivector
663 PROTOTYPE((krb5_context,
667 krb5_error_code INTERFACE krb5_auth_con_getivector
668 PROTOTYPE((krb5_context,
672 krb5_error_code INTERFACE krb5_auth_con_setrcache
673 PROTOTYPE((krb5_context,
677 krb5_error_code INTERFACE krb5_auth_con_getrcache
678 PROTOTYPE((krb5_context,
682 krb5_error_code INTERFACE krb5_auth_con_getauthenticator
683 PROTOTYPE((krb5_context,
685 krb5_authenticator **));
687 krb5_error_code INTERFACE krb5_auth_con_getremotesubkey
688 PROTOTYPE((krb5_context,
692 #define KRB5_REALM_BRANCH_CHAR '.'
694 #endif /* KRB5_FUNC_PROTO__ */