4 * Copyright 1989,1990,1995 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. Furthermore if you modify this software you must label
20 * your software as modified software and not distribute it in such a
21 * fashion that it might be confused with the original M.I.T. software.
22 * M.I.T. makes no representations about the suitability of
23 * this software for any purpose. It is provided "as is" without express
24 * or implied warranty.
27 * General definitions for Kerberos version 5.
31 * Copyright (C) 1998 by the FundsXpress, INC.
33 * All rights reserved.
35 * Export of this software from the United States of America may require
36 * a specific license from the United States Government. It is the
37 * responsibility of any person or organization contemplating export to
38 * obtain such a license before exporting.
40 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
41 * distribute this software and its documentation for any purpose and
42 * without fee is hereby granted, provided that the above copyright
43 * notice appear in all copies and that both that copyright notice and
44 * this permission notice appear in supporting documentation, and that
45 * the name of FundsXpress. not be used in advertising or publicity pertaining
46 * to distribution of the software without specific, written prior
47 * permission. FundsXpress makes no representations about the suitability of
48 * this software for any purpose. It is provided "as is" without express
49 * or implied warranty.
51 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
52 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
53 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
56 #ifndef KRB5_GENERAL__
57 #define KRB5_GENERAL__
59 #if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__))
60 #include <KerberosSupport/KerberosSupport.h>
62 #if TARGET_API_MAC_OS8 || (TARGET_API_MAC_CARBON && !TARGET_API_MAC_OSX)
63 #include <Kerberos5/win-mac.h>
67 #if defined(_MSDOS) || defined(_WIN32)
74 #define KRB5_CALLCONV_C
77 #define KRB5_EXPORTVAR
80 #endif /* !KRB5_CALLCONV */
81 #endif /* !KRB5_CONFIG__ */
83 #ifndef THREEPARAMOPEN
84 #define THREEPARAMOPEN(x,y,z) open(x,y,z)
87 #define KRB5_OLD_CRYPTO
89 #ifdef HAVE_SYS_TYPES_H
90 #include <sys/types.h>
99 #include <KerberosProfile/KerberosProfile.h>
114 /* Macintoh CFM-68K magic incantation */
119 #if PRAGMA_STRUCT_ALIGN
120 #pragma options align=mac68k
121 #elif PRAGMA_STRUCT_PACKPUSH
122 #pragma pack(push, 2)
123 #elif PRAGMA_STRUCT_PACK
132 * Word-size related definition.
135 typedef unsigned char krb5_octet;
136 typedef unsigned char krb5_ui_1;
138 #if (SIZEOF_INT == 2)
139 typedef int krb5_int16;
140 typedef unsigned int krb5_ui_2;
141 #define VALID_INT_BITS 0x7fff
142 #define VALID_UINT_BITS 0xffff
143 #elif (SIZEOF_SHORT == 2)
144 typedef short krb5_int16;
145 typedef unsigned short krb5_ui_2;
147 ?==error: undefined 16 bit type
150 #if (SIZEOF_INT == 4)
151 typedef int krb5_int32;
152 typedef unsigned int krb5_ui_4;
153 #define VALID_INT_BITS 0x7fffffff
154 #define VALID_UINT_BITS 0xffffffff
155 #elif (SIZEOF_LONG == 4)
156 typedef long krb5_int32;
157 typedef unsigned long krb5_ui_4;
158 #elif (SIZEOF_SHORT == 4)
159 typedef short krb5_int32;
160 typedef unsigned short krb5_ui_4;
162 ?== error: undefined 32 bit type
165 #define KRB5_INT32_MAX 2147483647
166 /* this strange form is necessary since - is a unary operator, not a sign
168 #define KRB5_INT32_MIN (-KRB5_INT32_MAX-1)
170 #define KRB5_INT16_MAX 65535
171 /* this strange form is necessary since - is a unary operator, not a sign
173 #define KRB5_INT16_MIN (-KRB5_INT16_MAX-1)
180 * begin "base-defs.h"
184 * Basic definitions for Kerberos V5 library
194 typedef unsigned int krb5_boolean;
195 typedef unsigned int krb5_msgtype;
196 typedef unsigned int krb5_kvno;
198 typedef krb5_int32 krb5_addrtype;
199 typedef krb5_int32 krb5_enctype;
200 typedef krb5_int32 krb5_cksumtype;
201 typedef krb5_int32 krb5_authdatatype;
202 typedef krb5_int32 krb5_keyusage;
204 typedef krb5_int32 krb5_preauthtype; /* This may change, later on */
205 typedef krb5_int32 krb5_flags;
206 typedef krb5_int32 krb5_timestamp;
207 typedef krb5_int32 krb5_error_code;
208 typedef krb5_int32 krb5_deltat;
210 typedef krb5_error_code krb5_magic;
212 typedef struct _krb5_data {
218 /* Define krb5_const as necessary */
221 * Hardcoded scrudge to deal with Ultrix; see note on NPROTOTYPE below
224 #if defined(KRB5_NO_CONST) || (defined(__ultrix) && !defined(__GNUC__))
227 #define krb5_const const
230 #if defined(__STDC__) || defined(__cplusplus) || defined(HAS_VOID_TYPE)
231 typedef void FAR * krb5_pointer;
232 typedef void krb5_const FAR * krb5_const_pointer;
234 typedef char FAR * krb5_pointer;
235 typedef char krb5_const FAR * krb5_const_pointer;
238 #if (defined(__STDC__) || defined(__cplusplus) || defined(_MSDOS) || defined(_WIN32) || defined(KRB5_PROVIDE_PROTOTYPES)) && !defined(KRB5_NO_PROTOTYPES)
239 #define KRB5_PROTOTYPE(x) x
240 #if defined(__STDC__) || defined(__cplusplus) || defined(HAVE_STDARG_H) || defined(_MSDOS) || defined(_WIN32)
241 #define KRB5_STDARG_P(x) x
243 #define KRB5_STDARG_P(x) ()
244 #endif /* defined(__STDC__) || defined(__cplusplus) || defined(HAVE_STDARG_H) */
246 #define KRB5_PROTOTYPE(x) ()
247 #define KRB5_STDARG_P(x) ()
248 #endif /* STDC or PROTOTYPES */
251 * This gross compiler dependency is in here because the stock Ultrix
252 * compiler defines __STDC__ but doesn't deal with nested prototypes
253 * properly. The reason this isn't tested for is so that this header
254 * is actually useful when installed.
256 #if defined(KRB5_NO_NESTED_PROTOTYPES) || (defined(__ultrix) && !defined(__GNUC__))
257 #define KRB5_NPROTOTYPE(x) ()
259 #define KRB5_NPROTOTYPE(x) KRB5_PROTOTYPE(x)
262 typedef struct krb5_principal_data {
265 krb5_data FAR *data; /* An array of strings */
268 } krb5_principal_data;
270 typedef krb5_principal_data FAR * krb5_principal;
273 * Per V5 spec on definition of principal types
276 /* Name type not known */
277 #define KRB5_NT_UNKNOWN 0
278 /* Just the name of the principal as in DCE, or for users */
279 #define KRB5_NT_PRINCIPAL 1
280 /* Service and other unique instance (krbtgt) */
281 #define KRB5_NT_SRV_INST 2
282 /* Service with host name as instance (telnet, rcommands) */
283 #define KRB5_NT_SRV_HST 3
284 /* Service with host as remaining components */
285 #define KRB5_NT_SRV_XHST 4
287 #define KRB5_NT_UID 5
289 /* constant version thereof: */
290 typedef krb5_const krb5_principal_data FAR *krb5_const_principal;
292 #define krb5_princ_realm(context, princ) (&(princ)->realm)
293 #define krb5_princ_set_realm(context, princ,value) ((princ)->realm = *(value))
294 #define krb5_princ_set_realm_length(context, princ,value) (princ)->realm.length = (value)
295 #define krb5_princ_set_realm_data(context, princ,value) (princ)->realm.data = (value)
296 #define krb5_princ_size(context, princ) (princ)->length
297 #define krb5_princ_type(context, princ) (princ)->type
298 #define krb5_princ_name(context, princ) (princ)->data
299 #define krb5_princ_component(context, princ,i) ((princ)->data + i)
309 /* structure for address */
310 typedef struct _krb5_address {
312 krb5_addrtype addrtype;
314 krb5_octet FAR *contents;
317 /* per Kerberos v5 protocol spec */
318 #define ADDRTYPE_INET 0x0002
319 #define ADDRTYPE_CHAOS 0x0005
320 #define ADDRTYPE_XNS 0x0006
321 #define ADDRTYPE_ISO 0x0007
322 #define ADDRTYPE_DDP 0x0010
323 #define ADDRTYPE_INET6 0x0018
324 /* not yet in the spec... */
325 #define ADDRTYPE_ADDRPORT 0x0100
326 #define ADDRTYPE_IPPORT 0x0101
328 /* macros to determine if a type is a local type */
329 #define ADDRTYPE_IS_LOCAL(addrtype) (addrtype & 0x8000)
336 struct _krb5_context;
337 typedef struct _krb5_context FAR * krb5_context;
339 struct _krb5_auth_context;
340 typedef struct _krb5_auth_context FAR * krb5_auth_context;
342 struct _krb5_cryptosystem_entry;
345 * begin "encryption.h"
348 typedef struct _krb5_keyblock {
350 krb5_enctype enctype;
352 krb5_octet FAR *contents;
355 #ifdef KRB5_OLD_CRYPTO
356 typedef struct _krb5_encrypt_block {
358 krb5_enctype crypto_entry; /* to call krb5_encrypt_size, you need
359 this. it was a pointer, but it
360 doesn't have to be. gross. */
361 krb5_keyblock FAR *key;
362 } krb5_encrypt_block;
365 typedef struct _krb5_checksum {
367 krb5_cksumtype checksum_type; /* checksum type */
369 krb5_octet FAR *contents;
372 typedef struct _krb5_enc_data {
374 krb5_enctype enctype;
376 krb5_data ciphertext;
379 /* per Kerberos v5 protocol spec */
380 #define ENCTYPE_NULL 0x0000
381 #define ENCTYPE_DES_CBC_CRC 0x0001 /* DES cbc mode with CRC-32 */
382 #define ENCTYPE_DES_CBC_MD4 0x0002 /* DES cbc mode with RSA-MD4 */
383 #define ENCTYPE_DES_CBC_MD5 0x0003 /* DES cbc mode with RSA-MD5 */
384 #define ENCTYPE_DES_CBC_RAW 0x0004 /* DES cbc mode raw */
385 /* XXX deprecated? */
386 #define ENCTYPE_DES3_CBC_SHA 0x0005 /* DES-3 cbc mode with NIST-SHA */
387 #define ENCTYPE_DES3_CBC_RAW 0x0006 /* DES-3 cbc mode raw */
388 #define ENCTYPE_DES_HMAC_SHA1 0x0008
389 #define ENCTYPE_DES3_CBC_SHA1 0x0010
390 #define ENCTYPE_UNKNOWN 0x01ff
392 /* marc's DES-3 with 32-bit length */
393 #define ENCTYPE_LOCAL_DES3_HMAC_SHA1 0x7007
395 #define CKSUMTYPE_CRC32 0x0001
396 #define CKSUMTYPE_RSA_MD4 0x0002
397 #define CKSUMTYPE_RSA_MD4_DES 0x0003
398 #define CKSUMTYPE_DESCBC 0x0004
401 #define CKSUMTYPE_RSA_MD5 0x0007
402 #define CKSUMTYPE_RSA_MD5_DES 0x0008
403 #define CKSUMTYPE_NIST_SHA 0x0009
404 #define CKSUMTYPE_HMAC_SHA1_DES3 0x000c
407 /* round x up to nearest multiple of y */
408 #define krb5_roundup(x, y) ((((x) + (y) - 1)/(y))*(y))
411 /* macro function definitions to help clean up code */
414 #define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1))
415 #define krb5_xc(ptr,args) ((ptr)?((*(ptr)) args):(abort(),(char*)0))
417 #define krb5_x(ptr,args) ((*(ptr)) args)
418 #define krb5_xc(ptr,args) ((*(ptr)) args)
421 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
423 KRB5_PROTOTYPE((krb5_context context, krb5_const krb5_keyblock *key,
424 krb5_keyusage usage, krb5_const krb5_data *ivec,
425 krb5_const krb5_data *input, krb5_enc_data *output));
427 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
429 KRB5_PROTOTYPE((krb5_context context, krb5_const krb5_keyblock *key,
430 krb5_keyusage usage, krb5_const krb5_data *ivec,
431 krb5_const krb5_enc_data *input, krb5_data *output));
433 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
434 krb5_c_encrypt_length
435 KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
436 size_t inputlen, size_t *length));
438 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
440 KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
443 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
444 krb5_c_make_random_key
445 KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
446 krb5_keyblock *random_key));
448 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
449 krb5_c_random_make_octets
450 KRB5_PROTOTYPE((krb5_context context, krb5_data *data));
452 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
454 KRB5_PROTOTYPE((krb5_context context, krb5_data *data));
456 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
458 KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
459 krb5_const krb5_data *string, krb5_const krb5_data *salt,
460 krb5_keyblock *key));
462 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
463 krb5_c_enctype_compare
464 KRB5_PROTOTYPE((krb5_context context, krb5_enctype e1, krb5_enctype e2,
465 krb5_boolean *similar));
467 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
469 KRB5_PROTOTYPE((krb5_context context, krb5_cksumtype cksumtype,
470 krb5_const krb5_keyblock *key, krb5_keyusage usage,
471 krb5_const krb5_data *input, krb5_checksum *cksum));
473 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
474 krb5_c_verify_checksum
475 KRB5_PROTOTYPE((krb5_context context,
476 krb5_const krb5_keyblock *key, krb5_keyusage usage,
477 krb5_const krb5_data *data,
478 krb5_const krb5_checksum *cksum,
479 krb5_boolean *valid));
481 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
482 krb5_c_checksum_length
483 KRB5_PROTOTYPE((krb5_context context, krb5_cksumtype cksumtype,
486 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
487 krb5_c_keyed_checksum_types
488 KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
489 unsigned int *count, krb5_cksumtype **cksumtypes));
491 #define KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS 1
492 #define KRB5_KEYUSAGE_KDC_REP_TICKET 2
493 #define KRB5_KEYUSAGE_AS_REP_ENCPART 3
494 #define KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY 4
495 #define KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY 5
496 #define KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM 6
497 #define KRB5_KEYUSAGE_TGS_REQ_AUTH 7
498 #define KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY 8
499 #define KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY 9
500 #define KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM 10
501 #define KRB5_KEYUSAGE_AP_REQ_AUTH 11
502 #define KRB5_KEYUSAGE_AP_REP_ENCPART 12
503 #define KRB5_KEYUSAGE_KRB_PRIV_ENCPART 13
504 #define KRB5_KEYUSAGE_KRB_CRED_ENCPART 14
505 #define KRB5_KEYUSAGE_KRB_SAFE_CKSUM 15
506 #define KRB5_KEYUSAGE_APP_DATA_ENCRYPT 16
507 #define KRB5_KEYUSAGE_APP_DATA_CKSUM 17
508 #define KRB5_KEYUSAGE_KRB_ERROR_CKSUM 18
509 #define KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM 19
510 #define KRB5_KEYUSAGE_AD_MTE 20
511 #define KRB5_KEYUSAGE_AD_ITE 21
513 /* XXX need to register these */
515 #define KRB5_KEYUSAGE_GSS_TOK_MIC 22
516 #define KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG 23
517 #define KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV 24
520 KRB5_DLLIMP krb5_boolean KRB5_CALLCONV valid_enctype
521 KRB5_PROTOTYPE((krb5_const krb5_enctype ktype));
522 KRB5_DLLIMP krb5_boolean KRB5_CALLCONV valid_cksumtype
523 KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype));
524 KRB5_DLLIMP krb5_boolean KRB5_CALLCONV is_coll_proof_cksum
525 KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype));
526 KRB5_DLLIMP krb5_boolean KRB5_CALLCONV is_keyed_cksum
527 KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype));
529 #ifdef KRB5_OLD_CRYPTO
531 * old cryptosystem routine prototypes. These are now layered
532 * on top of the functions above.
534 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_encrypt
535 KRB5_PROTOTYPE((krb5_context context,
536 krb5_const krb5_pointer inptr,
538 krb5_const size_t size,
539 krb5_encrypt_block FAR * eblock,
541 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_decrypt
542 KRB5_PROTOTYPE((krb5_context context,
543 krb5_const krb5_pointer inptr,
545 krb5_const size_t size,
546 krb5_encrypt_block FAR * eblock,
548 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_process_key
549 KRB5_PROTOTYPE((krb5_context context,
550 krb5_encrypt_block FAR * eblock,
551 krb5_const krb5_keyblock FAR * key));
552 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_finish_key
553 KRB5_PROTOTYPE((krb5_context context,
554 krb5_encrypt_block FAR * eblock));
555 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_key
556 KRB5_PROTOTYPE((krb5_context context,
557 krb5_const krb5_encrypt_block FAR * eblock,
558 krb5_keyblock FAR * keyblock,
559 krb5_const krb5_data FAR * data,
560 krb5_const krb5_data FAR * salt));
561 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_init_random_key
562 KRB5_PROTOTYPE((krb5_context context,
563 krb5_const krb5_encrypt_block FAR * eblock,
564 krb5_const krb5_keyblock FAR * keyblock,
565 krb5_pointer FAR * ptr));
566 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_finish_random_key
567 KRB5_PROTOTYPE((krb5_context context,
568 krb5_const krb5_encrypt_block FAR * eblock,
569 krb5_pointer FAR * ptr));
570 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_random_key
571 KRB5_PROTOTYPE((krb5_context context,
572 krb5_const krb5_encrypt_block FAR * eblock,
574 krb5_keyblock FAR * FAR * keyblock));
575 KRB5_DLLIMP krb5_enctype KRB5_CALLCONV krb5_eblock_enctype
576 KRB5_PROTOTYPE((krb5_context context,
577 krb5_const krb5_encrypt_block FAR * eblock));
578 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_use_enctype
579 KRB5_PROTOTYPE((krb5_context context,
580 krb5_encrypt_block FAR * eblock,
581 krb5_const krb5_enctype enctype));
582 KRB5_DLLIMP size_t KRB5_CALLCONV krb5_encrypt_size
583 KRB5_PROTOTYPE((krb5_const size_t length,
584 krb5_enctype crypto));
585 KRB5_DLLIMP size_t KRB5_CALLCONV krb5_checksum_size
586 KRB5_PROTOTYPE((krb5_context context,
587 krb5_const krb5_cksumtype ctype));
588 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_calculate_checksum
589 KRB5_PROTOTYPE((krb5_context context,
590 krb5_const krb5_cksumtype ctype,
591 krb5_const krb5_pointer in, krb5_const size_t in_length,
592 krb5_const krb5_pointer seed, krb5_const size_t seed_length,
593 krb5_checksum FAR * outcksum));
594 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_verify_checksum
595 KRB5_PROTOTYPE((krb5_context context,
596 krb5_const krb5_cksumtype ctype,
597 krb5_const krb5_checksum FAR * cksum,
598 krb5_const krb5_pointer in, krb5_const size_t in_length,
599 krb5_const krb5_pointer seed, krb5_const size_t seed_length));
601 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_random_confounder
602 KRB5_PROTOTYPE((size_t, krb5_pointer));
604 krb5_error_code krb5_encrypt_data
605 KRB5_PROTOTYPE((krb5_context context, krb5_keyblock *key,
606 krb5_pointer ivec, krb5_data *data,
607 krb5_enc_data *enc_data));
609 krb5_error_code krb5_decrypt_data
610 KRB5_PROTOTYPE((krb5_context context, krb5_keyblock *key,
611 krb5_pointer ivec, krb5_enc_data *data,
612 krb5_data *enc_data));
614 #endif /* KRB5_OLD_CRYPTO */
621 * begin "fieldbits.h"
624 /* kdc_options for kdc_request */
625 /* options is 32 bits; each host is responsible to put the 4 bytes
626 representing these bits into net order before transmission */
627 /* #define KDC_OPT_RESERVED 0x80000000 */
628 #define KDC_OPT_FORWARDABLE 0x40000000
629 #define KDC_OPT_FORWARDED 0x20000000
630 #define KDC_OPT_PROXIABLE 0x10000000
631 #define KDC_OPT_PROXY 0x08000000
632 #define KDC_OPT_ALLOW_POSTDATE 0x04000000
633 #define KDC_OPT_POSTDATED 0x02000000
634 /* #define KDC_OPT_UNUSED 0x01000000 */
635 #define KDC_OPT_RENEWABLE 0x00800000
636 /* #define KDC_OPT_UNUSED 0x00400000 */
637 /* #define KDC_OPT_RESERVED 0x00200000 */
638 /* #define KDC_OPT_RESERVED 0x00100000 */
639 /* #define KDC_OPT_RESERVED 0x00080000 */
640 /* #define KDC_OPT_RESERVED 0x00040000 */
641 /* #define KDC_OPT_RESERVED 0x00020000 */
642 /* #define KDC_OPT_RESERVED 0x00010000 */
643 /* #define KDC_OPT_RESERVED 0x00008000 */
644 /* #define KDC_OPT_RESERVED 0x00004000 */
645 /* #define KDC_OPT_RESERVED 0x00002000 */
646 /* #define KDC_OPT_RESERVED 0x00001000 */
647 /* #define KDC_OPT_RESERVED 0x00000800 */
648 /* #define KDC_OPT_RESERVED 0x00000400 */
649 /* #define KDC_OPT_RESERVED 0x00000200 */
650 /* #define KDC_OPT_RESERVED 0x00000100 */
651 /* #define KDC_OPT_RESERVED 0x00000080 */
652 /* #define KDC_OPT_RESERVED 0x00000040 */
653 /* #define KDC_OPT_RESERVED 0x00000020 */
654 #define KDC_OPT_RENEWABLE_OK 0x00000010
655 #define KDC_OPT_ENC_TKT_IN_SKEY 0x00000008
656 /* #define KDC_OPT_UNUSED 0x00000004 */
657 #define KDC_OPT_RENEW 0x00000002
658 #define KDC_OPT_VALIDATE 0x00000001
661 * Mask of ticket flags in the TGT which should be converted into KDC
662 * options when using the TGT to get derivitive tickets.
664 * New mask = KDC_OPT_FORWARDABLE | KDC_OPT_PROXIABLE |
665 * KDC_OPT_ALLOW_POSTDATE | KDC_OPT_RENEWABLE
667 #define KDC_TKT_COMMON_MASK 0x54800000
669 /* definitions for ap_options fields */
670 /* ap_options are 32 bits; each host is responsible to put the 4 bytes
671 representing these bits into net order before transmission */
672 #define AP_OPTS_RESERVED 0x80000000
673 #define AP_OPTS_USE_SESSION_KEY 0x40000000
674 #define AP_OPTS_MUTUAL_REQUIRED 0x20000000
675 /* #define AP_OPTS_RESERVED 0x10000000 */
676 /* #define AP_OPTS_RESERVED 0x08000000 */
677 /* #define AP_OPTS_RESERVED 0x04000000 */
678 /* #define AP_OPTS_RESERVED 0x02000000 */
679 /* #define AP_OPTS_RESERVED 0x01000000 */
680 /* #define AP_OPTS_RESERVED 0x00800000 */
681 /* #define AP_OPTS_RESERVED 0x00400000 */
682 /* #define AP_OPTS_RESERVED 0x00200000 */
683 /* #define AP_OPTS_RESERVED 0x00100000 */
684 /* #define AP_OPTS_RESERVED 0x00080000 */
685 /* #define AP_OPTS_RESERVED 0x00040000 */
686 /* #define AP_OPTS_RESERVED 0x00020000 */
687 /* #define AP_OPTS_RESERVED 0x00010000 */
688 /* #define AP_OPTS_RESERVED 0x00008000 */
689 /* #define AP_OPTS_RESERVED 0x00004000 */
690 /* #define AP_OPTS_RESERVED 0x00002000 */
691 /* #define AP_OPTS_RESERVED 0x00001000 */
692 /* #define AP_OPTS_RESERVED 0x00000800 */
693 /* #define AP_OPTS_RESERVED 0x00000400 */
694 /* #define AP_OPTS_RESERVED 0x00000200 */
695 /* #define AP_OPTS_RESERVED 0x00000100 */
696 /* #define AP_OPTS_RESERVED 0x00000080 */
697 /* #define AP_OPTS_RESERVED 0x00000040 */
698 /* #define AP_OPTS_RESERVED 0x00000020 */
699 /* #define AP_OPTS_RESERVED 0x00000010 */
700 /* #define AP_OPTS_RESERVED 0x00000008 */
701 /* #define AP_OPTS_RESERVED 0x00000004 */
702 /* #define AP_OPTS_RESERVED 0x00000002 */
703 #define AP_OPTS_USE_SUBKEY 0x00000001
705 #define AP_OPTS_WIRE_MASK 0xfffffff0
707 /* definitions for ad_type fields. */
708 #define AD_TYPE_RESERVED 0x8000
709 #define AD_TYPE_EXTERNAL 0x4000
710 #define AD_TYPE_REGISTERED 0x2000
712 #define AD_TYPE_FIELD_TYPE_MASK 0x1fff
715 /* flags are 32 bits; each host is responsible to put the 4 bytes
716 representing these bits into net order before transmission */
717 /* #define TKT_FLG_RESERVED 0x80000000 */
718 #define TKT_FLG_FORWARDABLE 0x40000000
719 #define TKT_FLG_FORWARDED 0x20000000
720 #define TKT_FLG_PROXIABLE 0x10000000
721 #define TKT_FLG_PROXY 0x08000000
722 #define TKT_FLG_MAY_POSTDATE 0x04000000
723 #define TKT_FLG_POSTDATED 0x02000000
724 #define TKT_FLG_INVALID 0x01000000
725 #define TKT_FLG_RENEWABLE 0x00800000
726 #define TKT_FLG_INITIAL 0x00400000
727 #define TKT_FLG_PRE_AUTH 0x00200000
728 #define TKT_FLG_HW_AUTH 0x00100000
729 /* #define TKT_FLG_RESERVED 0x00080000 */
730 /* #define TKT_FLG_RESERVED 0x00040000 */
731 /* #define TKT_FLG_RESERVED 0x00020000 */
732 /* #define TKT_FLG_RESERVED 0x00010000 */
733 /* #define TKT_FLG_RESERVED 0x00008000 */
734 /* #define TKT_FLG_RESERVED 0x00004000 */
735 /* #define TKT_FLG_RESERVED 0x00002000 */
736 /* #define TKT_FLG_RESERVED 0x00001000 */
737 /* #define TKT_FLG_RESERVED 0x00000800 */
738 /* #define TKT_FLG_RESERVED 0x00000400 */
739 /* #define TKT_FLG_RESERVED 0x00000200 */
740 /* #define TKT_FLG_RESERVED 0x00000100 */
741 /* #define TKT_FLG_RESERVED 0x00000080 */
742 /* #define TKT_FLG_RESERVED 0x00000040 */
743 /* #define TKT_FLG_RESERVED 0x00000020 */
744 /* #define TKT_FLG_RESERVED 0x00000010 */
745 /* #define TKT_FLG_RESERVED 0x00000008 */
746 /* #define TKT_FLG_RESERVED 0x00000004 */
747 /* #define TKT_FLG_RESERVED 0x00000002 */
748 /* #define TKT_FLG_RESERVED 0x00000001 */
750 /* definitions for lr_type fields. */
751 #define LR_TYPE_THIS_SERVER_ONLY 0x8000
753 #define LR_TYPE_INTERPRETATION_MASK 0x7fff
755 /* definitions for ad_type fields. */
756 #define AD_TYPE_EXTERNAL 0x4000
757 #define AD_TYPE_REGISTERED 0x2000
759 #define AD_TYPE_FIELD_TYPE_MASK 0x1fff
760 #define AD_TYPE_INTERNAL_MASK 0x3fff
762 /* definitions for msec direction bit for KRB_SAFE, KRB_PRIV */
763 #define MSEC_DIRBIT 0x8000
764 #define MSEC_VAL_MASK 0x7fff
774 /* Protocol version number */
779 #define KRB5_AS_REQ ((krb5_msgtype)10) /* Req for initial authentication */
780 #define KRB5_AS_REP ((krb5_msgtype)11) /* Response to KRB_AS_REQ request */
781 #define KRB5_TGS_REQ ((krb5_msgtype)12) /* TGS request to server */
782 #define KRB5_TGS_REP ((krb5_msgtype)13) /* Response to KRB_TGS_REQ req */
783 #define KRB5_AP_REQ ((krb5_msgtype)14) /* application request to server */
784 #define KRB5_AP_REP ((krb5_msgtype)15) /* Response to KRB_AP_REQ_MUTUAL */
785 #define KRB5_SAFE ((krb5_msgtype)20) /* Safe application message */
786 #define KRB5_PRIV ((krb5_msgtype)21) /* Private application message */
787 #define KRB5_CRED ((krb5_msgtype)22) /* Credential forwarding message */
788 #define KRB5_ERROR ((krb5_msgtype)30) /* Error response */
791 #define KRB5_LRQ_NONE 0
792 #define KRB5_LRQ_ALL_LAST_TGT 1
793 #define KRB5_LRQ_ONE_LAST_TGT (-1)
794 #define KRB5_LRQ_ALL_LAST_INITIAL 2
795 #define KRB5_LRQ_ONE_LAST_INITIAL (-2)
796 #define KRB5_LRQ_ALL_LAST_TGT_ISSUED 3
797 #define KRB5_LRQ_ONE_LAST_TGT_ISSUED (-3)
798 #define KRB5_LRQ_ALL_LAST_RENEWAL 4
799 #define KRB5_LRQ_ONE_LAST_RENEWAL (-4)
800 #define KRB5_LRQ_ALL_LAST_REQ 5
801 #define KRB5_LRQ_ONE_LAST_REQ (-5)
804 #define KRB5_PADATA_NONE 0
805 #define KRB5_PADATA_AP_REQ 1
806 #define KRB5_PADATA_TGS_REQ KRB5_PADATA_AP_REQ
807 #define KRB5_PADATA_ENC_TIMESTAMP 2
808 #define KRB5_PADATA_PW_SALT 3
810 #define KRB5_PADATA_ENC_ENCKEY 4 /* Key encrypted within itself */
812 #define KRB5_PADATA_ENC_UNIX_TIME 5 /* timestamp encrypted in key */
813 #define KRB5_PADATA_ENC_SANDIA_SECURID 6 /* SecurId passcode */
814 #define KRB5_PADATA_SESAME 7 /* Sesame project */
815 #define KRB5_PADATA_OSF_DCE 8 /* OSF DCE */
816 #define KRB5_CYBERSAFE_SECUREID 9 /* Cybersafe */
817 #define KRB5_PADATA_AFS3_SALT 10 /* Cygnus */
818 #define KRB5_PADATA_ETYPE_INFO 11 /* Etype info for preauth */
819 #define KRB5_PADATA_SAM_CHALLENGE 12 /* draft challenge system */
820 #define KRB5_PADATA_SAM_RESPONSE 13 /* draft challenge system response */
822 #define KRB5_SAM_USE_SAD_AS_KEY 0x80000000
823 #define KRB5_SAM_SEND_ENCRYPTED_SAD 0x40000000
824 #define KRB5_SAM_MUST_PK_ENCRYPT_SAD 0x20000000 /* currently must be zero */
826 /* Reserved for SPX pre-authentication. */
827 #define KRB5_PADATA_DASS 16
829 /* Transited encoding types */
830 #define KRB5_DOMAIN_X500_COMPRESS 1
832 /* alternate authentication types */
833 #define KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE 64
835 /* authorization data types */
836 #define KRB5_AUTHDATA_OSF_DCE 64
837 #define KRB5_AUTHDATA_SESAME 65
839 /* password change constants */
841 #define KRB5_KPASSWD_SUCCESS 0
842 #define KRB5_KPASSWD_MALFORMED 1
843 #define KRB5_KPASSWD_HARDERROR 2
844 #define KRB5_KPASSWD_AUTHERROR 3
845 #define KRB5_KPASSWD_SOFTERROR 4
852 typedef struct _krb5_ticket_times {
853 krb5_timestamp authtime; /* XXX ? should ktime in KDC_REP == authtime
854 in ticket? otherwise client can't get this */
855 krb5_timestamp starttime; /* optional in ticket, if not present,
857 krb5_timestamp endtime;
858 krb5_timestamp renew_till;
861 /* structure for auth data */
862 typedef struct _krb5_authdata {
864 krb5_authdatatype ad_type;
866 krb5_octet FAR *contents;
869 /* structure for transited encoding */
870 typedef struct _krb5_transited {
873 krb5_data tr_contents;
876 typedef struct _krb5_enc_tkt_part {
878 /* to-be-encrypted portion */
879 krb5_flags flags; /* flags */
880 krb5_keyblock FAR *session; /* session key: includes enctype */
881 krb5_principal client; /* client name/realm */
882 krb5_transited transited; /* list of transited realms */
883 krb5_ticket_times times; /* auth, start, end, renew_till */
884 krb5_address FAR * FAR *caddrs; /* array of ptrs to addresses */
885 krb5_authdata FAR * FAR *authorization_data; /* auth data */
888 typedef struct _krb5_ticket {
890 /* cleartext portion */
891 krb5_principal server; /* server name/realm */
892 krb5_enc_data enc_part; /* encryption type, kvno, encrypted
894 krb5_enc_tkt_part FAR *enc_part2; /* ptr to decrypted version, if
898 /* the unencrypted version */
899 typedef struct _krb5_authenticator {
901 krb5_principal client; /* client name/realm */
902 krb5_checksum FAR *checksum; /* checksum, includes type, optional */
903 krb5_int32 cusec; /* client usec portion */
904 krb5_timestamp ctime; /* client sec portion */
905 krb5_keyblock FAR *subkey; /* true session key, optional */
906 krb5_int32 seq_number; /* sequence #, optional */
907 krb5_authdata FAR * FAR *authorization_data; /* New add by Ari, auth data */
908 } krb5_authenticator;
910 typedef struct _krb5_tkt_authent {
912 krb5_ticket FAR *ticket;
913 krb5_authenticator FAR *authenticator;
914 krb5_flags ap_options;
917 /* credentials: Ticket, session key, etc. */
918 typedef struct _krb5_creds {
920 krb5_principal client; /* client's principal identifier */
921 krb5_principal server; /* server's principal identifier */
922 krb5_keyblock keyblock; /* session encryption key info */
923 krb5_ticket_times times; /* lifetime info */
924 krb5_boolean is_skey; /* true if ticket is encrypted in
925 another ticket's skey */
926 krb5_flags ticket_flags; /* flags in ticket */
927 krb5_address FAR * FAR *addresses; /* addrs in ticket */
928 krb5_data ticket; /* ticket string itself */
929 krb5_data second_ticket; /* second ticket, if related to
930 ticket (via DUPLICATE-SKEY or
932 krb5_authdata FAR * FAR *authdata; /* authorization data */
935 /* Last request fields */
936 typedef struct _krb5_last_req_entry {
939 krb5_timestamp value;
940 } krb5_last_req_entry;
942 /* pre-authentication data */
943 typedef struct _krb5_pa_data {
945 krb5_preauthtype pa_type;
947 krb5_octet FAR *contents;
950 typedef struct _krb5_kdc_req {
952 krb5_msgtype msg_type; /* AS_REQ or TGS_REQ? */
953 krb5_pa_data FAR * FAR *padata; /* e.g. encoded AP_REQ */
955 krb5_flags kdc_options; /* requested options */
956 krb5_principal client; /* includes realm; optional */
957 krb5_principal server; /* includes realm (only used if no
959 krb5_timestamp from; /* requested starttime */
960 krb5_timestamp till; /* requested endtime */
961 krb5_timestamp rtime; /* (optional) requested renew_till */
962 krb5_int32 nonce; /* nonce to match request/response */
963 int nktypes; /* # of ktypes, must be positive */
964 krb5_enctype FAR *ktype; /* requested enctype(s) */
965 krb5_address FAR * FAR *addresses; /* requested addresses, optional */
966 krb5_enc_data authorization_data; /* encrypted auth data; OPTIONAL */
967 krb5_authdata FAR * FAR *unenc_authdata; /* unencrypted auth data,
969 krb5_ticket FAR * FAR *second_ticket;/* second ticket array; OPTIONAL */
972 typedef struct _krb5_enc_kdc_rep_part {
974 /* encrypted part: */
975 krb5_msgtype msg_type; /* krb5 message type */
976 krb5_keyblock FAR *session; /* session key */
977 krb5_last_req_entry FAR * FAR *last_req; /* array of ptrs to entries */
978 krb5_int32 nonce; /* nonce from request */
979 krb5_timestamp key_exp; /* expiration date */
980 krb5_flags flags; /* ticket flags */
981 krb5_ticket_times times; /* lifetime info */
982 krb5_principal server; /* server's principal identifier */
983 krb5_address FAR * FAR *caddrs; /* array of ptrs to addresses,
985 } krb5_enc_kdc_rep_part;
987 typedef struct _krb5_kdc_rep {
989 /* cleartext part: */
990 krb5_msgtype msg_type; /* AS_REP or KDC_REP? */
991 krb5_pa_data FAR * FAR *padata; /* preauthentication data from KDC */
992 krb5_principal client; /* client's principal identifier */
993 krb5_ticket FAR *ticket; /* ticket */
994 krb5_enc_data enc_part; /* encryption type, kvno, encrypted
996 krb5_enc_kdc_rep_part FAR *enc_part2;/* unencrypted version, if available */
999 /* error message structure */
1000 typedef struct _krb5_error {
1002 /* some of these may be meaningless in certain contexts */
1003 krb5_timestamp ctime; /* client sec portion; optional */
1004 krb5_int32 cusec; /* client usec portion; optional */
1005 krb5_int32 susec; /* server usec portion */
1006 krb5_timestamp stime; /* server sec portion */
1007 krb5_ui_4 error; /* error code (protocol error #'s) */
1008 krb5_principal client; /* client's principal identifier;
1010 krb5_principal server; /* server's principal identifier */
1011 krb5_data text; /* descriptive text */
1012 krb5_data e_data; /* additional error-describing data */
1015 typedef struct _krb5_ap_req {
1017 krb5_flags ap_options; /* requested options */
1018 krb5_ticket FAR *ticket; /* ticket */
1019 krb5_enc_data authenticator; /* authenticator (already encrypted) */
1022 typedef struct _krb5_ap_rep {
1024 krb5_enc_data enc_part;
1027 typedef struct _krb5_ap_rep_enc_part {
1029 krb5_timestamp ctime; /* client time, seconds portion */
1030 krb5_int32 cusec; /* client time, microseconds portion */
1031 krb5_keyblock FAR *subkey; /* true session key, optional */
1032 krb5_int32 seq_number; /* sequence #, optional */
1033 } krb5_ap_rep_enc_part;
1035 typedef struct _krb5_response {
1037 krb5_octet message_type;
1039 krb5_int32 expected_nonce; /* The expected nonce for KDC_REP messages */
1040 krb5_timestamp request_time; /* When we made the request */
1043 typedef struct _krb5_safe {
1045 krb5_data user_data; /* user data */
1046 krb5_timestamp timestamp; /* client time, optional */
1047 krb5_int32 usec; /* microsecond portion of time,
1049 krb5_int32 seq_number; /* sequence #, optional */
1050 krb5_address FAR *s_address; /* sender address */
1051 krb5_address FAR *r_address; /* recipient address, optional */
1052 krb5_checksum FAR *checksum; /* data integrity checksum */
1055 typedef struct _krb5_priv {
1057 krb5_enc_data enc_part; /* encrypted part */
1060 typedef struct _krb5_priv_enc_part {
1062 krb5_data user_data; /* user data */
1063 krb5_timestamp timestamp; /* client time, optional */
1064 krb5_int32 usec; /* microsecond portion of time, opt. */
1065 krb5_int32 seq_number; /* sequence #, optional */
1066 krb5_address FAR *s_address; /* sender address */
1067 krb5_address FAR *r_address; /* recipient address, optional */
1068 } krb5_priv_enc_part;
1070 typedef struct _krb5_cred_info {
1072 krb5_keyblock FAR *session; /* session key used to encrypt */
1074 krb5_principal client; /* client name/realm, optional */
1075 krb5_principal server; /* server name/realm, optional */
1076 krb5_flags flags; /* ticket flags, optional */
1077 krb5_ticket_times times; /* auth, start, end, renew_till, */
1079 krb5_address FAR * FAR *caddrs; /* array of ptrs to addresses */
1082 typedef struct _krb5_cred_enc_part {
1084 krb5_int32 nonce; /* nonce, optional */
1085 krb5_timestamp timestamp; /* client time */
1086 krb5_int32 usec; /* microsecond portion of time */
1087 krb5_address FAR *s_address; /* sender address, optional */
1088 krb5_address FAR *r_address; /* recipient address, optional */
1089 krb5_cred_info FAR * FAR *ticket_info;
1090 } krb5_cred_enc_part;
1092 typedef struct _krb5_cred {
1094 krb5_ticket FAR * FAR *tickets; /* tickets */
1095 krb5_enc_data enc_part; /* encrypted part */
1096 krb5_cred_enc_part FAR *enc_part2; /* unencrypted version, if available*/
1099 /* Sandia password generation structures */
1100 typedef struct _passwd_phrase_element {
1102 krb5_data FAR *passwd;
1103 krb5_data FAR *phrase;
1104 } passwd_phrase_element;
1106 typedef struct _krb5_pwd_data {
1109 passwd_phrase_element FAR * FAR *element;
1112 /* these need to be here so the typedefs are available for the prototypes */
1115 * begin "safepriv.h"
1118 #define KRB5_AUTH_CONTEXT_DO_TIME 0x00000001
1119 #define KRB5_AUTH_CONTEXT_RET_TIME 0x00000002
1120 #define KRB5_AUTH_CONTEXT_DO_SEQUENCE 0x00000004
1121 #define KRB5_AUTH_CONTEXT_RET_SEQUENCE 0x00000008
1122 #define KRB5_AUTH_CONTEXT_PERMIT_ALL 0x00000010
1124 typedef struct krb5_replay_data {
1125 krb5_timestamp timestamp;
1130 /* flags for krb5_auth_con_genaddrs() */
1131 #define KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR 0x00000001
1132 #define KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR 0x00000002
1133 #define KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR 0x00000004
1134 #define KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR 0x00000008
1145 typedef krb5_pointer krb5_cc_cursor; /* cursor for sequential lookup */
1147 struct _krb5_ccache;
1148 typedef struct _krb5_ccache FAR *krb5_ccache;
1149 struct _krb5_cc_ops;
1150 typedef struct _krb5_cc_ops krb5_cc_ops;
1152 /* for retrieve_cred */
1153 #define KRB5_TC_MATCH_TIMES 0x00000001
1154 #define KRB5_TC_MATCH_IS_SKEY 0x00000002
1155 #define KRB5_TC_MATCH_FLAGS 0x00000004
1156 #define KRB5_TC_MATCH_TIMES_EXACT 0x00000008
1157 #define KRB5_TC_MATCH_FLAGS_EXACT 0x00000010
1158 #define KRB5_TC_MATCH_AUTHDATA 0x00000020
1159 #define KRB5_TC_MATCH_SRV_NAMEONLY 0x00000040
1160 #define KRB5_TC_MATCH_2ND_TKT 0x00000080
1161 #define KRB5_TC_MATCH_KTYPE 0x00000100
1162 #define KRB5_TC_SUPPORTED_KTYPES 0x00000200
1164 /* for set_flags and other functions */
1165 #define KRB5_TC_OPENCLOSE 0x00000001
1167 KRB5_DLLIMP const char FAR * KRB5_CALLCONV
1168 krb5_cc_get_name (krb5_context context, krb5_ccache cache);
1170 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1171 krb5_cc_gen_new (krb5_context context, krb5_ccache FAR *cache);
1173 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1174 krb5_cc_initialize(krb5_context context, krb5_ccache cache,
1175 krb5_principal principal);
1177 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1178 krb5_cc_destroy (krb5_context context, krb5_ccache cache);
1180 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1181 krb5_cc_close (krb5_context context, krb5_ccache cache);
1183 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1184 krb5_cc_store_cred (krb5_context context, krb5_ccache cache,
1185 krb5_creds FAR *creds);
1187 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1188 krb5_cc_retrieve_cred (krb5_context context, krb5_ccache cache,
1189 krb5_flags flags, krb5_creds FAR *mcreds,
1190 krb5_creds FAR *creds);
1192 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1193 krb5_cc_get_principal (krb5_context context, krb5_ccache cache,
1194 krb5_principal FAR *principal);
1196 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1197 krb5_cc_start_seq_get (krb5_context context, krb5_ccache cache,
1198 krb5_cc_cursor FAR *cursor);
1200 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1201 krb5_cc_next_cred (krb5_context context, krb5_ccache cache,
1202 krb5_cc_cursor FAR *cursor, krb5_creds FAR *creds);
1204 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1205 krb5_cc_end_seq_get (krb5_context context, krb5_ccache cache,
1206 krb5_cc_cursor FAR *cursor);
1208 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1209 krb5_cc_remove_cred (krb5_context context, krb5_ccache cache, krb5_flags flags,
1210 krb5_creds FAR *creds);
1212 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1213 krb5_cc_set_flags (krb5_context context, krb5_ccache cache, krb5_flags flags);
1215 KRB5_DLLIMP const char FAR *
1216 krb5_cc_get_type (krb5_context context, krb5_ccache cache);
1226 typedef struct krb5_rc_st {
1228 struct _krb5_rc_ops FAR *ops;
1232 typedef struct _krb5_donot_replay {
1234 char FAR *server; /* null-terminated */
1235 char FAR *client; /* null-terminated */
1237 krb5_timestamp ctime;
1238 } krb5_donot_replay;
1240 typedef struct _krb5_rc_ops {
1243 krb5_error_code (KRB5_CALLCONV *init)
1244 KRB5_NPROTOTYPE((krb5_context, krb5_rcache,krb5_deltat)); /* create */
1245 krb5_error_code (KRB5_CALLCONV *recover)
1246 KRB5_NPROTOTYPE((krb5_context, krb5_rcache)); /* open */
1247 krb5_error_code (KRB5_CALLCONV *destroy)
1248 KRB5_NPROTOTYPE((krb5_context, krb5_rcache));
1249 krb5_error_code (KRB5_CALLCONV *close)
1250 KRB5_NPROTOTYPE((krb5_context, krb5_rcache));
1251 krb5_error_code (KRB5_CALLCONV *store)
1252 KRB5_NPROTOTYPE((krb5_context, krb5_rcache,krb5_donot_replay FAR *));
1253 krb5_error_code (KRB5_CALLCONV *expunge)
1254 KRB5_NPROTOTYPE((krb5_context, krb5_rcache));
1255 krb5_error_code (KRB5_CALLCONV *get_span)
1256 KRB5_NPROTOTYPE((krb5_context, krb5_rcache,krb5_deltat FAR *));
1257 char FAR *(KRB5_CALLCONV *get_name)
1258 KRB5_NPROTOTYPE((krb5_context, krb5_rcache));
1259 krb5_error_code (KRB5_CALLCONV *resolve)
1260 KRB5_NPROTOTYPE((krb5_context, krb5_rcache, char FAR *));
1263 krb5_error_code krb5_rc_default
1264 KRB5_PROTOTYPE((krb5_context,
1265 krb5_rcache FAR *));
1266 krb5_error_code krb5_rc_register_type
1267 KRB5_PROTOTYPE((krb5_context,
1268 krb5_rc_ops FAR *));
1269 krb5_error_code krb5_rc_resolve_type
1270 KRB5_PROTOTYPE((krb5_context,
1271 krb5_rcache FAR *,char FAR *));
1272 krb5_error_code krb5_rc_resolve_full
1273 KRB5_PROTOTYPE((krb5_context,
1274 krb5_rcache FAR *,char FAR *));
1275 char FAR * krb5_rc_get_type
1276 KRB5_PROTOTYPE((krb5_context,
1278 char FAR * krb5_rc_default_type
1279 KRB5_PROTOTYPE((krb5_context));
1280 char FAR * krb5_rc_default_name
1281 KRB5_PROTOTYPE((krb5_context));
1282 krb5_error_code krb5_auth_to_rep
1283 KRB5_PROTOTYPE((krb5_context,
1284 krb5_tkt_authent FAR *,
1285 krb5_donot_replay FAR *));
1288 #define krb5_rc_initialize(context, id, span) krb5_x((id)->ops->init,(context, id, span))
1289 #define krb5_rc_recover(context, id) krb5_x((id)->ops->recover,(context, id))
1290 #define krb5_rc_destroy(context, id) krb5_x((id)->ops->destroy,(context, id))
1291 #define krb5_rc_close(context, id) krb5_x((id)->ops->close,(context, id))
1292 #define krb5_rc_store(context, id, dontreplay) krb5_x((id)->ops->store,(context, id, dontreplay))
1293 #define krb5_rc_expunge(context, id) krb5_x((id)->ops->expunge,(context, id))
1294 #define krb5_rc_get_lifespan(context, id, spanp) krb5_x((id)->ops->get_span,(context, id, spanp))
1295 #define krb5_rc_get_name(context, id) krb5_xc((id)->ops->get_name,(context, id))
1296 #define krb5_rc_resolve(context, id, name) krb5_x((id)->ops->resolve,(context, id, name))
1298 extern krb5_rc_ops krb5_rc_dfl_ops;
1310 #define MAX_KEYTAB_NAME_LEN 1100 /* Long enough for MAXPATHLEN + some extra */
1312 typedef krb5_pointer krb5_kt_cursor; /* XXX */
1314 typedef struct krb5_keytab_entry_st {
1316 krb5_principal principal; /* principal of this key */
1317 krb5_timestamp timestamp; /* time entry written to keytable */
1318 krb5_kvno vno; /* key version number */
1319 krb5_keyblock key; /* the secret key */
1320 } krb5_keytab_entry;
1323 typedef struct _krb5_kt {
1325 struct _krb5_kt_ops FAR *ops;
1330 typedef struct _krb5_kt_ops {
1333 /* routines always present */
1334 krb5_error_code (KRB5_CALLCONV *resolve)
1335 KRB5_NPROTOTYPE((krb5_context,
1336 krb5_const char FAR *,
1337 krb5_keytab FAR *));
1338 krb5_error_code (KRB5_CALLCONV *get_name)
1339 KRB5_NPROTOTYPE((krb5_context,
1343 krb5_error_code (KRB5_CALLCONV *close)
1344 KRB5_NPROTOTYPE((krb5_context,
1346 krb5_error_code (KRB5_CALLCONV *get)
1347 KRB5_NPROTOTYPE((krb5_context,
1349 krb5_const_principal,
1352 krb5_keytab_entry FAR *));
1353 krb5_error_code (KRB5_CALLCONV *start_seq_get)
1354 KRB5_NPROTOTYPE((krb5_context,
1356 krb5_kt_cursor FAR *));
1357 krb5_error_code (KRB5_CALLCONV *get_next)
1358 KRB5_NPROTOTYPE((krb5_context,
1360 krb5_keytab_entry FAR *,
1361 krb5_kt_cursor FAR *));
1362 krb5_error_code (KRB5_CALLCONV *end_get)
1363 KRB5_NPROTOTYPE((krb5_context,
1365 krb5_kt_cursor FAR *));
1366 /* routines to be included on extended version (write routines) */
1367 krb5_error_code (KRB5_CALLCONV *add)
1368 KRB5_NPROTOTYPE((krb5_context,
1370 krb5_keytab_entry FAR *));
1371 krb5_error_code (KRB5_CALLCONV *remove)
1372 KRB5_NPROTOTYPE((krb5_context,
1374 krb5_keytab_entry FAR *));
1376 /* Handle for serializer */
1380 #define krb5_kt_get_type(context, keytab) ((keytab)->ops->prefix)
1381 #define krb5_kt_get_name(context, keytab, name, namelen) krb5_x((keytab)->ops->get_name,(context, keytab,name,namelen))
1382 #define krb5_kt_close(context, keytab) krb5_x((keytab)->ops->close,(context, keytab))
1383 #define krb5_kt_get_entry(context, keytab, principal, vno, enctype, entry) krb5_x((keytab)->ops->get,(context, keytab, principal, vno, enctype, entry))
1384 #define krb5_kt_start_seq_get(context, keytab, cursor) krb5_x((keytab)->ops->start_seq_get,(context, keytab, cursor))
1385 #define krb5_kt_next_entry(context, keytab, entry, cursor) krb5_x((keytab)->ops->get_next,(context, keytab, entry, cursor))
1386 #define krb5_kt_end_seq_get(context, keytab, cursor) krb5_x((keytab)->ops->end_get,(context, keytab, cursor))
1387 /* remove and add are functions, so that they can return NOWRITE
1388 if not a writable keytab */
1391 extern krb5_kt_ops krb5_kt_dfl_ops;
1398 * begin "func-proto.h"
1401 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_init_context
1402 KRB5_PROTOTYPE((krb5_context FAR *));
1403 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_init_secure_context
1404 KRB5_PROTOTYPE((krb5_context FAR *));
1405 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_context
1406 KRB5_PROTOTYPE((krb5_context));
1408 krb5_error_code krb5_set_default_in_tkt_ktypes
1409 KRB5_PROTOTYPE((krb5_context,
1410 krb5_const krb5_enctype *));
1411 krb5_error_code krb5_get_default_in_tkt_ktypes
1412 KRB5_PROTOTYPE((krb5_context,
1415 krb5_error_code krb5_set_default_tgs_ktypes
1416 KRB5_PROTOTYPE((krb5_context,
1417 krb5_const krb5_enctype *));
1418 krb5_error_code KRB5_CALLCONV krb5_get_tgs_ktypes
1419 KRB5_PROTOTYPE((krb5_context,
1420 krb5_const_principal,
1423 krb5_error_code krb5_get_permitted_enctypes
1424 KRB5_PROTOTYPE((krb5_context, krb5_enctype **));
1425 void KRB5_CALLCONV krb5_free_ktypes
1426 KRB5_PROTOTYPE ((krb5_context, krb5_enctype *));
1428 krb5_boolean krb5_is_permitted_enctype
1429 KRB5_PROTOTYPE((krb5_context, krb5_enctype));
1432 krb5_error_code krb5_kdc_rep_decrypt_proc
1433 KRB5_PROTOTYPE((krb5_context,
1434 krb5_const krb5_keyblock *,
1437 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_decrypt_tkt_part
1438 KRB5_PROTOTYPE((krb5_context,
1439 krb5_const krb5_keyblock FAR *,
1440 krb5_ticket FAR * ));
1441 krb5_error_code krb5_get_cred_from_kdc
1442 KRB5_PROTOTYPE((krb5_context,
1443 krb5_ccache, /* not const, as reading may save
1448 krb5_error_code krb5_get_cred_from_kdc_validate
1449 KRB5_PROTOTYPE((krb5_context,
1450 krb5_ccache, /* not const, as reading may save
1455 krb5_error_code krb5_get_cred_from_kdc_renew
1456 KRB5_PROTOTYPE((krb5_context,
1457 krb5_ccache, /* not const, as reading may save
1462 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_tgt_creds
1463 KRB5_PROTOTYPE((krb5_context,
1464 krb5_creds FAR * FAR* )); /* XXX too hard to do with const */
1466 #define KRB5_GC_USER_USER 1 /* want user-user ticket */
1467 #define KRB5_GC_CACHED 2 /* want cached ticket only */
1469 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials
1470 KRB5_PROTOTYPE((krb5_context,
1471 krb5_const krb5_flags,
1474 krb5_creds FAR * FAR *));
1475 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials_validate
1476 KRB5_PROTOTYPE((krb5_context,
1477 krb5_const krb5_flags,
1480 krb5_creds FAR * FAR *));
1481 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials_renew
1482 KRB5_PROTOTYPE((krb5_context,
1483 krb5_const krb5_flags,
1486 krb5_creds FAR * FAR *));
1487 krb5_error_code krb5_get_cred_via_tkt
1488 KRB5_PROTOTYPE((krb5_context,
1490 krb5_const krb5_flags,
1491 krb5_address * krb5_const *,
1494 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_req
1495 KRB5_PROTOTYPE((krb5_context,
1496 krb5_auth_context FAR *,
1497 krb5_const krb5_flags,
1503 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_req_extended
1504 KRB5_PROTOTYPE((krb5_context,
1505 krb5_auth_context FAR *,
1506 krb5_const krb5_flags,
1510 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_rep
1511 KRB5_PROTOTYPE((krb5_context,
1514 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_rep
1515 KRB5_PROTOTYPE((krb5_context,
1517 krb5_const krb5_data FAR *,
1518 krb5_ap_rep_enc_part FAR * FAR *));
1519 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_error
1520 KRB5_PROTOTYPE((krb5_context,
1521 krb5_const krb5_error FAR *,
1523 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_error
1524 KRB5_PROTOTYPE((krb5_context,
1525 krb5_const krb5_data FAR *,
1526 krb5_error FAR * FAR * ));
1527 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_safe
1528 KRB5_PROTOTYPE((krb5_context,
1530 krb5_const krb5_data FAR *,
1532 krb5_replay_data FAR *));
1533 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_priv
1534 KRB5_PROTOTYPE((krb5_context,
1536 krb5_const krb5_data FAR *,
1538 krb5_replay_data FAR *));
1539 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_parse_name
1540 KRB5_PROTOTYPE((krb5_context,
1541 krb5_const char FAR *,
1542 krb5_principal FAR * ));
1543 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_unparse_name
1544 KRB5_PROTOTYPE((krb5_context,
1545 krb5_const_principal,
1546 char FAR * FAR * ));
1547 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_unparse_name_ext
1548 KRB5_PROTOTYPE((krb5_context,
1549 krb5_const_principal,
1553 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_set_principal_realm
1554 KRB5_PROTOTYPE((krb5_context, krb5_principal, const char FAR *));
1556 krb5_boolean krb5_address_search
1557 KRB5_PROTOTYPE((krb5_context,
1558 krb5_const krb5_address *,
1559 krb5_address * krb5_const *));
1560 krb5_boolean krb5_address_compare
1561 KRB5_PROTOTYPE((krb5_context,
1562 krb5_const krb5_address *,
1563 krb5_const krb5_address *));
1564 int krb5_address_order
1565 KRB5_PROTOTYPE((krb5_context,
1566 krb5_const krb5_address *,
1567 krb5_const krb5_address *));
1568 krb5_boolean krb5_realm_compare
1569 KRB5_PROTOTYPE((krb5_context,
1570 krb5_const_principal,
1571 krb5_const_principal));
1572 KRB5_DLLIMP krb5_boolean KRB5_CALLCONV krb5_principal_compare
1573 KRB5_PROTOTYPE((krb5_context,
1574 krb5_const_principal,
1575 krb5_const_principal));
1576 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_keyblock
1577 KRB5_PROTOTYPE((krb5_context,
1578 krb5_const krb5_keyblock FAR *,
1579 krb5_keyblock FAR * FAR *));
1580 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_keyblock_contents
1581 KRB5_PROTOTYPE((krb5_context,
1582 krb5_const krb5_keyblock FAR *,
1583 krb5_keyblock FAR *));
1584 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_creds
1585 KRB5_PROTOTYPE((krb5_context,
1586 krb5_const krb5_creds FAR *,
1587 krb5_creds FAR * FAR *));
1588 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_data
1589 KRB5_PROTOTYPE((krb5_context,
1590 krb5_const krb5_data FAR *,
1591 krb5_data FAR * FAR *));
1592 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_principal
1593 KRB5_PROTOTYPE((krb5_context,
1594 krb5_const_principal,
1595 krb5_principal FAR *));
1596 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_addr
1597 KRB5_PROTOTYPE((krb5_context,
1598 const krb5_address FAR *,
1599 krb5_address FAR * FAR *));
1600 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_addresses
1601 KRB5_PROTOTYPE((krb5_context,
1602 krb5_address FAR * krb5_const FAR *,
1603 krb5_address FAR * FAR * FAR *));
1604 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_ticket
1605 KRB5_PROTOTYPE((krb5_context,
1606 krb5_const krb5_ticket FAR *,
1607 krb5_ticket FAR * FAR *));
1608 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_authdata
1609 KRB5_PROTOTYPE((krb5_context,
1610 krb5_authdata FAR * krb5_const FAR *,
1611 krb5_authdata FAR * FAR * FAR *));
1612 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_authenticator
1613 KRB5_PROTOTYPE((krb5_context,
1614 krb5_const krb5_authenticator FAR *,
1615 krb5_authenticator FAR * FAR *));
1616 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_checksum
1617 KRB5_PROTOTYPE((krb5_context,
1618 krb5_const krb5_checksum FAR *,
1619 krb5_checksum FAR * FAR *));
1621 KRB5_PROTOTYPE((krb5_context));
1623 KRB5_PROTOTYPE((krb5_context));
1624 krb5_error_code krb5_generate_subkey
1625 KRB5_PROTOTYPE((krb5_context,
1626 krb5_const krb5_keyblock *, krb5_keyblock **));
1627 krb5_error_code krb5_generate_seq_number
1628 KRB5_PROTOTYPE((krb5_context,
1629 krb5_const krb5_keyblock *, krb5_int32 *));
1630 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_server_rcache
1631 KRB5_PROTOTYPE((krb5_context,
1632 krb5_const krb5_data *, krb5_rcache *));
1633 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV_C krb5_build_principal_ext
1634 KRB5_STDARG_P((krb5_context, krb5_principal FAR *, int, krb5_const char FAR *, ...));
1635 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV_C krb5_build_principal
1636 KRB5_STDARG_P((krb5_context, krb5_principal FAR *, int, krb5_const char FAR *, ...));
1638 /* XXX depending on varargs include file defining va_start... */
1639 krb5_error_code krb5_build_principal_va
1640 KRB5_PROTOTYPE((krb5_context,
1641 krb5_principal, int, krb5_const char *, va_list));
1644 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_425_conv_principal
1645 KRB5_PROTOTYPE((krb5_context,
1646 krb5_const char FAR *name,
1647 krb5_const char FAR *instance, krb5_const char FAR *realm,
1648 krb5_principal FAR *princ));
1650 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_524_conv_principal
1651 KRB5_PROTOTYPE((krb5_context context, krb5_const krb5_principal princ,
1652 char FAR *name, char FAR *inst, char FAR *realm));
1654 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_chpw_req
1655 KRB5_PROTOTYPE((krb5_context context, krb5_auth_context auth_context,
1656 krb5_data *ap_req, char *passwd, krb5_data *packet));
1657 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_chpw_rep
1658 KRB5_PROTOTYPE((krb5_context context, krb5_auth_context auth_context,
1659 krb5_data *packet, int *result_code,
1660 krb5_data *result_data));
1661 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_chpw_result_code_string
1662 KRB5_PROTOTYPE((krb5_context context, int result_code,
1663 char **result_codestr));
1666 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_register
1667 KRB5_PROTOTYPE((krb5_context,
1668 krb5_kt_ops FAR * ));
1669 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_resolve
1670 KRB5_PROTOTYPE((krb5_context,
1671 krb5_const char FAR *,
1672 krb5_keytab FAR * ));
1673 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_default_name
1674 KRB5_PROTOTYPE((krb5_context,
1677 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_default
1678 KRB5_PROTOTYPE((krb5_context,
1679 krb5_keytab FAR * ));
1680 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_free_entry
1681 KRB5_PROTOTYPE((krb5_context,
1682 krb5_keytab_entry FAR * ));
1683 /* remove and add are functions, so that they can return NOWRITE
1684 if not a writable keytab */
1685 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_remove_entry
1686 KRB5_PROTOTYPE((krb5_context,
1688 krb5_keytab_entry FAR * ));
1689 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_add_entry
1690 KRB5_PROTOTYPE((krb5_context,
1692 krb5_keytab_entry FAR * ));
1693 krb5_error_code krb5_principal2salt
1694 KRB5_PROTOTYPE((krb5_context,
1695 krb5_const_principal, krb5_data *));
1696 krb5_error_code krb5_principal2salt_norealm
1697 KRB5_PROTOTYPE((krb5_context,
1698 krb5_const_principal, krb5_data *));
1700 /* librc.spec--see rcache.h */
1703 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_resolve
1704 KRB5_PROTOTYPE((krb5_context,
1706 krb5_ccache FAR * ));
1707 KRB5_DLLIMP const char FAR * KRB5_CALLCONV krb5_cc_default_name
1708 KRB5_PROTOTYPE((krb5_context));
1709 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_set_default_name
1710 KRB5_PROTOTYPE((krb5_context, const char *));
1711 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_default
1712 KRB5_PROTOTYPE((krb5_context,
1713 krb5_ccache FAR *));
1714 KRB5_DLLIMP unsigned int KRB5_CALLCONV krb5_get_notification_message
1715 KRB5_PROTOTYPE((void));
1717 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_copy_creds
1718 KRB5_PROTOTYPE((krb5_context context,
1720 krb5_ccache outcc));
1724 krb5_error_code krb5_check_transited_list
1725 KRB5_PROTOTYPE((krb5_context,
1726 krb5_data *trans, krb5_data *realm1, krb5_data *realm2));
1729 void krb5_free_realm_tree
1730 KRB5_PROTOTYPE((krb5_context,
1734 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_principal
1735 KRB5_PROTOTYPE((krb5_context, krb5_principal ));
1736 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_authenticator
1737 KRB5_PROTOTYPE((krb5_context, krb5_authenticator FAR * ));
1738 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_authenticator_contents
1739 KRB5_PROTOTYPE((krb5_context, krb5_authenticator FAR * ));
1740 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_addresses
1741 KRB5_PROTOTYPE((krb5_context, krb5_address FAR * FAR * ));
1742 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_address
1743 KRB5_PROTOTYPE((krb5_context, krb5_address FAR * ));
1744 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_authdata
1745 KRB5_PROTOTYPE((krb5_context, krb5_authdata FAR * FAR * ));
1746 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_enc_tkt_part
1747 KRB5_PROTOTYPE((krb5_context, krb5_enc_tkt_part FAR * ));
1748 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ticket
1749 KRB5_PROTOTYPE((krb5_context, krb5_ticket FAR * ));
1750 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_tickets
1751 KRB5_PROTOTYPE((krb5_context, krb5_ticket FAR * FAR * ));
1752 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_kdc_req
1753 KRB5_PROTOTYPE((krb5_context, krb5_kdc_req FAR * ));
1754 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_kdc_rep
1755 KRB5_PROTOTYPE((krb5_context, krb5_kdc_rep FAR * ));
1756 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_last_req
1757 KRB5_PROTOTYPE((krb5_context, krb5_last_req_entry FAR * FAR * ));
1758 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_enc_kdc_rep_part
1759 KRB5_PROTOTYPE((krb5_context, krb5_enc_kdc_rep_part FAR * ));
1760 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_error
1761 KRB5_PROTOTYPE((krb5_context, krb5_error FAR * ));
1762 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ap_req
1763 KRB5_PROTOTYPE((krb5_context, krb5_ap_req FAR * ));
1764 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ap_rep
1765 KRB5_PROTOTYPE((krb5_context, krb5_ap_rep FAR * ));
1766 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_safe
1767 KRB5_PROTOTYPE((krb5_context, krb5_safe FAR * ));
1768 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_priv
1769 KRB5_PROTOTYPE((krb5_context, krb5_priv FAR * ));
1770 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_priv_enc_part
1771 KRB5_PROTOTYPE((krb5_context, krb5_priv_enc_part FAR * ));
1772 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cred
1773 KRB5_PROTOTYPE((krb5_context, krb5_cred FAR *));
1774 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_creds
1775 KRB5_PROTOTYPE((krb5_context, krb5_creds FAR *));
1776 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cred_contents
1777 KRB5_PROTOTYPE((krb5_context, krb5_creds FAR *));
1778 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cred_enc_part
1779 KRB5_PROTOTYPE((krb5_context, krb5_cred_enc_part FAR *));
1780 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_checksum
1781 KRB5_PROTOTYPE((krb5_context, krb5_checksum FAR *));
1782 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_checksum_contents
1783 KRB5_PROTOTYPE((krb5_context, krb5_checksum FAR *));
1784 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_keyblock
1785 KRB5_PROTOTYPE((krb5_context, krb5_keyblock FAR *));
1786 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_keyblock_contents
1787 KRB5_PROTOTYPE((krb5_context, krb5_keyblock FAR *));
1788 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_pa_data
1789 KRB5_PROTOTYPE((krb5_context, krb5_pa_data FAR * FAR *));
1790 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ap_rep_enc_part
1791 KRB5_PROTOTYPE((krb5_context, krb5_ap_rep_enc_part FAR *));
1792 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_tkt_authent
1793 KRB5_PROTOTYPE((krb5_context, krb5_tkt_authent FAR *));
1794 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_pwd_data
1795 KRB5_PROTOTYPE((krb5_context, krb5_pwd_data FAR *));
1796 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_pwd_sequences
1797 KRB5_PROTOTYPE((krb5_context, passwd_phrase_element FAR * FAR *));
1798 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_data
1799 KRB5_PROTOTYPE((krb5_context, krb5_data FAR *));
1800 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_data_contents
1801 KRB5_PROTOTYPE((krb5_context, krb5_data FAR *));
1802 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_unparsed_name
1803 KRB5_PROTOTYPE((krb5_context, char FAR *));
1804 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cksumtypes
1805 KRB5_PROTOTYPE((krb5_context, krb5_cksumtype FAR *));
1807 /* From krb5/os but needed but by the outside world */
1808 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_us_timeofday
1809 KRB5_PROTOTYPE((krb5_context,
1811 krb5_int32 FAR * ));
1812 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_timeofday
1813 KRB5_PROTOTYPE((krb5_context,
1814 krb5_int32 FAR * ));
1815 /* get all the addresses of this host */
1816 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_os_localaddr
1817 KRB5_PROTOTYPE((krb5_context,
1818 krb5_address FAR * FAR * FAR *));
1819 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_default_realm
1820 KRB5_PROTOTYPE((krb5_context,
1821 char FAR * FAR * ));
1822 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_set_default_realm
1823 KRB5_PROTOTYPE((krb5_context,
1824 krb5_const char FAR * ));
1825 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_default_realm
1826 KRB5_PROTOTYPE((krb5_context,
1828 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_sname_to_principal
1829 KRB5_PROTOTYPE((krb5_context,
1830 krb5_const char FAR *,
1831 krb5_const char FAR *,
1833 krb5_principal FAR *));
1834 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1835 krb5_change_password
1836 KRB5_PROTOTYPE((krb5_context context, krb5_creds *creds, char *newpw,
1837 int *result_code, krb5_data *result_code_string,
1838 krb5_data *result_string));
1841 krb5_error_code krb5_set_config_files
1842 KRB5_PROTOTYPE ((krb5_context, krb5_const char FAR * FAR *));
1844 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_default_config_files
1845 KRB5_PROTOTYPE((char ***filenames));
1847 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_config_files
1848 KRB5_PROTOTYPE((char **filenames));
1852 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
1854 KRB5_PROTOTYPE((krb5_context, profile_t *));
1856 krb5_error_code krb5_send_tgs
1857 KRB5_PROTOTYPE((krb5_context,
1858 krb5_const krb5_flags,
1859 krb5_const krb5_ticket_times *,
1860 krb5_const krb5_enctype *,
1861 krb5_const_principal,
1862 krb5_address * krb5_const *,
1863 krb5_authdata * krb5_const *,
1864 krb5_pa_data * krb5_const *,
1865 krb5_const krb5_data *,
1869 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_in_tkt
1870 KRB5_PROTOTYPE((krb5_context,
1871 krb5_const krb5_flags,
1872 krb5_address FAR * krb5_const FAR *,
1874 krb5_preauthtype FAR *,
1875 krb5_error_code ( FAR * )(krb5_context,
1876 krb5_const krb5_enctype,
1879 krb5_keyblock FAR * FAR *),
1881 krb5_error_code ( FAR * )(krb5_context,
1882 krb5_const krb5_keyblock FAR *,
1884 krb5_kdc_rep FAR * ),
1888 krb5_kdc_rep FAR * FAR * ));
1890 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_password
1891 KRB5_PROTOTYPE((krb5_context,
1892 krb5_const krb5_flags,
1893 krb5_address FAR * krb5_const FAR *,
1895 krb5_preauthtype FAR *,
1896 krb5_const char FAR *,
1899 krb5_kdc_rep FAR * FAR * ));
1901 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_skey
1902 KRB5_PROTOTYPE((krb5_context,
1903 krb5_const krb5_flags,
1904 krb5_address FAR * krb5_const FAR *,
1906 krb5_preauthtype FAR *,
1907 krb5_const krb5_keyblock FAR *,
1910 krb5_kdc_rep FAR * FAR * ));
1912 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_keytab
1913 KRB5_PROTOTYPE((krb5_context,
1914 krb5_const krb5_flags,
1915 krb5_address FAR * krb5_const FAR *,
1917 krb5_preauthtype FAR *,
1918 krb5_const krb5_keytab,
1921 krb5_kdc_rep FAR * FAR * ));
1924 krb5_error_code krb5_decode_kdc_rep
1925 KRB5_PROTOTYPE((krb5_context,
1927 krb5_const krb5_keyblock *,
1930 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_req
1931 KRB5_PROTOTYPE((krb5_context,
1932 krb5_auth_context FAR *,
1933 krb5_const krb5_data FAR *,
1934 krb5_const_principal,
1937 krb5_ticket FAR * FAR *));
1939 krb5_error_code krb5_rd_req_decoded
1940 KRB5_PROTOTYPE((krb5_context,
1941 krb5_auth_context *,
1942 krb5_const krb5_ap_req *,
1943 krb5_const_principal,
1948 krb5_error_code krb5_rd_req_decoded_anyflag
1949 KRB5_PROTOTYPE((krb5_context,
1950 krb5_auth_context *,
1951 krb5_const krb5_ap_req *,
1952 krb5_const_principal,
1957 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_read_service_key
1958 KRB5_PROTOTYPE((krb5_context,
1963 krb5_keyblock FAR * FAR *));
1964 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_safe
1965 KRB5_PROTOTYPE((krb5_context,
1967 krb5_const krb5_data FAR *,
1969 krb5_replay_data FAR *));
1970 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_priv
1971 KRB5_PROTOTYPE((krb5_context,
1973 krb5_const krb5_data FAR *,
1975 krb5_replay_data FAR *));
1976 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_register
1977 KRB5_PROTOTYPE((krb5_context,
1981 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_sendauth
1982 KRB5_PROTOTYPE((krb5_context,
1983 krb5_auth_context FAR *,
1992 krb5_error FAR * FAR *,
1993 krb5_ap_rep_enc_part FAR * FAR *,
1994 krb5_creds FAR * FAR *));
1996 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_recvauth
1997 KRB5_PROTOTYPE((krb5_context,
1998 krb5_auth_context FAR *,
2004 krb5_ticket FAR * FAR *));
2005 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_recvauth_version
2006 KRB5_PROTOTYPE((krb5_context,
2007 krb5_auth_context FAR *,
2012 krb5_ticket FAR * FAR *,
2015 krb5_error_code krb5_walk_realm_tree
2016 KRB5_PROTOTYPE((krb5_context,
2017 krb5_const krb5_data *,
2018 krb5_const krb5_data *,
2022 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_ncred
2023 KRB5_PROTOTYPE((krb5_context,
2025 krb5_creds FAR * FAR *,
2026 krb5_data FAR * FAR *,
2027 krb5_replay_data FAR *));
2029 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_1cred
2030 KRB5_PROTOTYPE((krb5_context,
2033 krb5_data FAR * FAR *,
2034 krb5_replay_data FAR *));
2036 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_cred
2037 KRB5_PROTOTYPE((krb5_context,
2040 krb5_creds FAR * FAR * FAR *,
2041 krb5_replay_data FAR *));
2043 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_fwd_tgt_creds
2044 KRB5_PROTOTYPE((krb5_context,
2053 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_init
2054 KRB5_PROTOTYPE((krb5_context,
2055 krb5_auth_context FAR *));
2057 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_free
2058 KRB5_PROTOTYPE((krb5_context,
2059 krb5_auth_context));
2061 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setflags
2062 KRB5_PROTOTYPE((krb5_context,
2066 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getflags
2067 KRB5_PROTOTYPE((krb5_context,
2071 krb5_error_code krb5_auth_con_setaddrs
2072 KRB5_PROTOTYPE((krb5_context,
2077 krb5_error_code krb5_auth_con_getaddrs
2078 KRB5_PROTOTYPE((krb5_context,
2083 krb5_error_code krb5_auth_con_setports
2084 KRB5_PROTOTYPE((krb5_context,
2089 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setuseruserkey
2090 KRB5_PROTOTYPE((krb5_context,
2092 krb5_keyblock FAR *));
2094 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getkey
2095 KRB5_PROTOTYPE((krb5_context,
2099 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalsubkey
2100 KRB5_PROTOTYPE((krb5_context,
2102 krb5_keyblock FAR * FAR *));
2104 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_set_req_cksumtype
2105 KRB5_PROTOTYPE((krb5_context,
2109 krb5_error_code krb5_auth_con_set_safe_cksumtype
2110 KRB5_PROTOTYPE((krb5_context,
2114 krb5_error_code krb5_auth_con_getcksumtype
2115 KRB5_PROTOTYPE((krb5_context,
2119 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalseqnumber
2120 KRB5_PROTOTYPE((krb5_context,
2124 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getremoteseqnumber
2125 KRB5_PROTOTYPE((krb5_context,
2129 krb5_error_code krb5_auth_con_initivector
2130 KRB5_PROTOTYPE((krb5_context,
2131 krb5_auth_context));
2133 krb5_error_code krb5_auth_con_setivector
2134 KRB5_PROTOTYPE((krb5_context,
2138 krb5_error_code krb5_auth_con_getivector
2139 KRB5_PROTOTYPE((krb5_context,
2143 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setrcache
2144 KRB5_PROTOTYPE((krb5_context,
2148 krb5_error_code krb5_auth_con_getrcache
2149 KRB5_PROTOTYPE((krb5_context,
2153 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getauthenticator
2154 KRB5_PROTOTYPE((krb5_context,
2156 krb5_authenticator FAR * FAR *));
2158 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getremotesubkey
2159 KRB5_PROTOTYPE((krb5_context,
2161 krb5_keyblock FAR * FAR *));
2163 #define KRB5_REALM_BRANCH_CHAR '.'
2166 * end "func-proto.h"
2170 * begin stuff from libos.h
2173 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_read_password
2174 KRB5_PROTOTYPE((krb5_context,
2179 krb5_error_code krb5_aname_to_localname
2180 KRB5_PROTOTYPE((krb5_context,
2181 krb5_const_principal,
2184 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_host_realm
2185 KRB5_PROTOTYPE((krb5_context,
2187 char FAR * FAR * FAR * ));
2188 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_free_host_realm
2189 KRB5_PROTOTYPE((krb5_context,
2190 char FAR * const FAR * ));
2191 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_realm_domain
2192 KRB5_PROTOTYPE((krb5_context,
2195 KRB5_DLLIMP krb5_boolean KRB5_CALLCONV krb5_kuserok
2196 KRB5_PROTOTYPE((krb5_context,
2197 krb5_principal, const char *));
2198 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_genaddrs
2199 KRB5_PROTOTYPE((krb5_context,
2202 krb5_error_code krb5_gen_portaddr
2203 KRB5_PROTOTYPE((krb5_context,
2204 const krb5_address *,
2207 krb5_error_code krb5_make_fulladdr
2208 KRB5_PROTOTYPE((krb5_context,
2213 krb5_error_code krb5_os_hostaddr
2214 KRB5_PROTOTYPE((krb5_context, const char *, krb5_address ***));
2216 krb5_error_code krb5_set_real_time
2217 KRB5_PROTOTYPE((krb5_context, krb5_int32, krb5_int32));
2218 krb5_error_code krb5_set_debugging_time
2219 KRB5_PROTOTYPE((krb5_context, krb5_int32, krb5_int32));
2220 krb5_error_code krb5_use_natural_time
2221 KRB5_PROTOTYPE((krb5_context));
2222 krb5_error_code krb5_get_time_offsets
2223 KRB5_PROTOTYPE((krb5_context, krb5_int32 *, krb5_int32 *));
2224 krb5_error_code krb5_set_time_offsets
2225 KRB5_PROTOTYPE((krb5_context, krb5_int32, krb5_int32));
2228 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_enctype
2229 KRB5_PROTOTYPE((char FAR *, krb5_enctype FAR *));
2230 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_salttype
2231 KRB5_PROTOTYPE((char FAR *, krb5_int32 FAR *));
2232 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_cksumtype
2233 KRB5_PROTOTYPE((char FAR *, krb5_cksumtype FAR *));
2234 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_timestamp
2235 KRB5_PROTOTYPE((char FAR *, krb5_timestamp FAR *));
2236 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_deltat
2237 KRB5_PROTOTYPE((char FAR *, krb5_deltat FAR *));
2238 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_enctype_to_string
2239 KRB5_PROTOTYPE((krb5_enctype, char FAR *, size_t));
2240 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_salttype_to_string
2241 KRB5_PROTOTYPE((krb5_int32, char FAR *, size_t));
2242 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cksumtype_to_string
2243 KRB5_PROTOTYPE((krb5_cksumtype, char FAR *, size_t));
2244 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_timestamp_to_string
2245 KRB5_PROTOTYPE((krb5_timestamp, char FAR *, size_t));
2246 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_timestamp_to_sfstring
2247 KRB5_PROTOTYPE((krb5_timestamp, char FAR *, size_t, char FAR *));
2248 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_deltat_to_string
2249 KRB5_PROTOTYPE((krb5_deltat, char FAR *, size_t));
2253 /* The name of the Kerberos ticket granting service... and its size */
2254 #define KRB5_TGS_NAME "krbtgt"
2255 #define KRB5_TGS_NAME_SIZE 6
2257 /* flags for recvauth */
2258 #define KRB5_RECVAUTH_SKIP_VERSION 0x0001
2259 #define KRB5_RECVAUTH_BADAUTHVERS 0x0002
2260 /* initial ticket api functions */
2262 typedef struct _krb5_prompt {
2268 typedef krb5_error_code (KRB5_CALLCONV *krb5_prompter_fct)(krb5_context context,
2273 krb5_prompt prompts[]);
2276 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
2278 KRB5_PROTOTYPE((krb5_context context,
2283 krb5_prompt prompts[]));
2285 typedef struct _krb5_get_init_creds_opt {
2287 krb5_deltat tkt_life;
2288 krb5_deltat renew_life;
2291 krb5_enctype *etype_list;
2292 int etype_list_length;
2293 krb5_address **address_list;
2294 krb5_preauthtype *preauth_list;
2295 int preauth_list_length;
2297 } krb5_get_init_creds_opt;
2299 #define KRB5_GET_INIT_CREDS_OPT_TKT_LIFE 0x0001
2300 #define KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE 0x0002
2301 #define KRB5_GET_INIT_CREDS_OPT_FORWARDABLE 0x0004
2302 #define KRB5_GET_INIT_CREDS_OPT_PROXIABLE 0x0008
2303 #define KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST 0x0010
2304 #define KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST 0x0020
2305 #define KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST 0x0040
2306 #define KRB5_GET_INIT_CREDS_OPT_SALT 0x0080
2309 KRB5_DLLIMP void KRB5_CALLCONV
2310 krb5_get_init_creds_opt_init
2311 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt));
2313 KRB5_DLLIMP void KRB5_CALLCONV
2314 krb5_get_init_creds_opt_set_tkt_life
2315 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
2316 krb5_deltat tkt_life));
2318 KRB5_DLLIMP void KRB5_CALLCONV
2319 krb5_get_init_creds_opt_set_renew_life
2320 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
2321 krb5_deltat renew_life));
2323 KRB5_DLLIMP void KRB5_CALLCONV
2324 krb5_get_init_creds_opt_set_forwardable
2325 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
2328 KRB5_DLLIMP void KRB5_CALLCONV
2329 krb5_get_init_creds_opt_set_proxiable
2330 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
2333 KRB5_DLLIMP void KRB5_CALLCONV
2334 krb5_get_init_creds_opt_set_etype_list
2335 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
2336 krb5_enctype *etype_list,
2337 int etype_list_length));
2339 KRB5_DLLIMP void KRB5_CALLCONV
2340 krb5_get_init_creds_opt_set_address_list
2341 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
2342 krb5_address **addresses));
2344 KRB5_DLLIMP void KRB5_CALLCONV
2345 krb5_get_init_creds_opt_set_preauth_list
2346 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
2347 krb5_preauthtype *preauth_list,
2348 int preauth_list_length));
2350 KRB5_DLLIMP void KRB5_CALLCONV
2351 krb5_get_init_creds_opt_set_salt
2352 KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
2355 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
2356 krb5_get_init_creds_password
2357 KRB5_PROTOTYPE((krb5_context context,
2359 krb5_principal client,
2361 krb5_prompter_fct prompter,
2363 krb5_deltat start_time,
2364 char *in_tkt_service,
2365 krb5_get_init_creds_opt *options));
2367 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
2368 krb5_get_init_creds_keytab
2369 KRB5_PROTOTYPE((krb5_context context,
2371 krb5_principal client,
2372 krb5_keytab arg_keytab,
2373 krb5_deltat start_time,
2374 char *in_tkt_service,
2375 krb5_get_init_creds_opt *options));
2377 typedef struct _krb5_verify_init_creds_opt {
2380 } krb5_verify_init_creds_opt;
2382 #define KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL 0x0001
2384 KRB5_DLLIMP void KRB5_CALLCONV
2385 krb5_verify_init_creds_opt_init
2386 KRB5_PROTOTYPE((krb5_verify_init_creds_opt *options));
2387 KRB5_DLLIMP void KRB5_CALLCONV
2388 krb5_verify_init_creds_opt_set_ap_req_nofail
2389 KRB5_PROTOTYPE((krb5_verify_init_creds_opt *options,
2390 int ap_req_nofail));
2392 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
2393 krb5_verify_init_creds
2394 KRB5_PROTOTYPE((krb5_context context,
2396 krb5_principal ap_req_server,
2397 krb5_keytab ap_req_keytab,
2398 krb5_ccache *ccache,
2399 krb5_verify_init_creds_opt *options));
2401 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
2402 krb5_get_validated_creds
2403 KRB5_PROTOTYPE((krb5_context context,
2405 krb5_principal client,
2407 char *in_tkt_service));
2409 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
2410 krb5_get_renewed_creds
2411 KRB5_PROTOTYPE((krb5_context context,
2413 krb5_principal client,
2415 char *in_tkt_service));
2417 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
2419 KRB5_PROTOTYPE((const krb5_data *code,
2420 krb5_ticket **rep));
2422 KRB5_DLLIMP void KRB5_CALLCONV
2423 krb5_appdefault_string
2424 KRB5_PROTOTYPE((krb5_context context,
2425 const char *appname,
2426 const krb5_data *realm,
2428 const char *default_value,
2429 char ** ret_value));
2431 KRB5_DLLIMP void KRB5_CALLCONV
2432 krb5_appdefault_boolean
2433 KRB5_PROTOTYPE((krb5_context context,
2434 const char *appname,
2435 const krb5_data *realm,
2441 * The realm iterator functions
2444 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_realm_iterator_create
2445 KRB5_PROTOTYPE((krb5_context context, void **iter_p));
2447 KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_realm_iterator
2448 KRB5_PROTOTYPE((krb5_context context, void **iter_p, char **ret_realm));
2450 KRB5_DLLIMP void KRB5_CALLCONV krb5_realm_iterator_free
2451 KRB5_PROTOTYPE((krb5_context context, void **iter_p));
2453 KRB5_DLLIMP void KRB5_CALLCONV krb5_free_realm_string
2454 KRB5_PROTOTYPE((krb5_context context, char *str));
2457 * Prompter enhancements
2460 #define KRB5_PROMPT_TYPE_PASSWORD 0x1
2461 #define KRB5_PROMPT_TYPE_NEW_PASSWORD 0x2
2462 #define KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN 0x3
2463 #define KRB5_PROMPT_TYPE_PREAUTH 0x4
2465 typedef krb5_int32 krb5_prompt_type;
2467 KRB5_DLLIMP krb5_prompt_type* KRB5_CALLCONV krb5_get_prompt_types
2468 KRB5_PROTOTYPE((krb5_context context));
2470 /* Macintosh CFM-68K magic incantation */
2471 #if PRAGMA_STRUCT_ALIGN
2472 #pragma options align=reset
2473 #elif PRAGMA_STRUCT_PACKPUSH
2475 #elif PRAGMA_STRUCT_PACK
2479 #ifdef PRAGMA_IMPORT_OFF
2482 #pragma import reset
2487 #endif /* __cplusplus */
2489 #endif /* KRB5_GENERAL__ */
2492 * :::MITKerberosLib:GSSKerberos5Sources_9:include:krb5_err.h:
2493 * This file is automatically generated; please do not edit it.
2496 #if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__))
2497 #include <KerberosComErr/KerberosComErr.h>
2499 #include <com_err.h>
2502 #define KRB5KDC_ERR_NONE (-1765328384L)
2503 #define KRB5KDC_ERR_NAME_EXP (-1765328383L)
2504 #define KRB5KDC_ERR_SERVICE_EXP (-1765328382L)
2505 #define KRB5KDC_ERR_BAD_PVNO (-1765328381L)
2506 #define KRB5KDC_ERR_C_OLD_MAST_KVNO (-1765328380L)
2507 #define KRB5KDC_ERR_S_OLD_MAST_KVNO (-1765328379L)
2508 #define KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN (-1765328378L)
2509 #define KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN (-1765328377L)
2510 #define KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE (-1765328376L)
2511 #define KRB5KDC_ERR_NULL_KEY (-1765328375L)
2512 #define KRB5KDC_ERR_CANNOT_POSTDATE (-1765328374L)
2513 #define KRB5KDC_ERR_NEVER_VALID (-1765328373L)
2514 #define KRB5KDC_ERR_POLICY (-1765328372L)
2515 #define KRB5KDC_ERR_BADOPTION (-1765328371L)
2516 #define KRB5KDC_ERR_ETYPE_NOSUPP (-1765328370L)
2517 #define KRB5KDC_ERR_SUMTYPE_NOSUPP (-1765328369L)
2518 #define KRB5KDC_ERR_PADATA_TYPE_NOSUPP (-1765328368L)
2519 #define KRB5KDC_ERR_TRTYPE_NOSUPP (-1765328367L)
2520 #define KRB5KDC_ERR_CLIENT_REVOKED (-1765328366L)
2521 #define KRB5KDC_ERR_SERVICE_REVOKED (-1765328365L)
2522 #define KRB5KDC_ERR_TGT_REVOKED (-1765328364L)
2523 #define KRB5KDC_ERR_CLIENT_NOTYET (-1765328363L)
2524 #define KRB5KDC_ERR_SERVICE_NOTYET (-1765328362L)
2525 #define KRB5KDC_ERR_KEY_EXP (-1765328361L)
2526 #define KRB5KDC_ERR_PREAUTH_FAILED (-1765328360L)
2527 #define KRB5KDC_ERR_PREAUTH_REQUIRED (-1765328359L)
2528 #define KRB5KDC_ERR_SERVER_NOMATCH (-1765328358L)
2529 #define KRB5PLACEHOLD_27 (-1765328357L)
2530 #define KRB5PLACEHOLD_28 (-1765328356L)
2531 #define KRB5PLACEHOLD_29 (-1765328355L)
2532 #define KRB5PLACEHOLD_30 (-1765328354L)
2533 #define KRB5KRB_AP_ERR_BAD_INTEGRITY (-1765328353L)
2534 #define KRB5KRB_AP_ERR_TKT_EXPIRED (-1765328352L)
2535 #define KRB5KRB_AP_ERR_TKT_NYV (-1765328351L)
2536 #define KRB5KRB_AP_ERR_REPEAT (-1765328350L)
2537 #define KRB5KRB_AP_ERR_NOT_US (-1765328349L)
2538 #define KRB5KRB_AP_ERR_BADMATCH (-1765328348L)
2539 #define KRB5KRB_AP_ERR_SKEW (-1765328347L)
2540 #define KRB5KRB_AP_ERR_BADADDR (-1765328346L)
2541 #define KRB5KRB_AP_ERR_BADVERSION (-1765328345L)
2542 #define KRB5KRB_AP_ERR_MSG_TYPE (-1765328344L)
2543 #define KRB5KRB_AP_ERR_MODIFIED (-1765328343L)
2544 #define KRB5KRB_AP_ERR_BADORDER (-1765328342L)
2545 #define KRB5KRB_AP_ERR_ILL_CR_TKT (-1765328341L)
2546 #define KRB5KRB_AP_ERR_BADKEYVER (-1765328340L)
2547 #define KRB5KRB_AP_ERR_NOKEY (-1765328339L)
2548 #define KRB5KRB_AP_ERR_MUT_FAIL (-1765328338L)
2549 #define KRB5KRB_AP_ERR_BADDIRECTION (-1765328337L)
2550 #define KRB5KRB_AP_ERR_METHOD (-1765328336L)
2551 #define KRB5KRB_AP_ERR_BADSEQ (-1765328335L)
2552 #define KRB5KRB_AP_ERR_INAPP_CKSUM (-1765328334L)
2553 #define KRB5PLACEHOLD_51 (-1765328333L)
2554 #define KRB5PLACEHOLD_52 (-1765328332L)
2555 #define KRB5PLACEHOLD_53 (-1765328331L)
2556 #define KRB5PLACEHOLD_54 (-1765328330L)
2557 #define KRB5PLACEHOLD_55 (-1765328329L)
2558 #define KRB5PLACEHOLD_56 (-1765328328L)
2559 #define KRB5PLACEHOLD_57 (-1765328327L)
2560 #define KRB5PLACEHOLD_58 (-1765328326L)
2561 #define KRB5PLACEHOLD_59 (-1765328325L)
2562 #define KRB5KRB_ERR_GENERIC (-1765328324L)
2563 #define KRB5KRB_ERR_FIELD_TOOLONG (-1765328323L)
2564 #define KRB5PLACEHOLD_62 (-1765328322L)
2565 #define KRB5PLACEHOLD_63 (-1765328321L)
2566 #define KRB5PLACEHOLD_64 (-1765328320L)
2567 #define KRB5PLACEHOLD_65 (-1765328319L)
2568 #define KRB5PLACEHOLD_66 (-1765328318L)
2569 #define KRB5PLACEHOLD_67 (-1765328317L)
2570 #define KRB5PLACEHOLD_68 (-1765328316L)
2571 #define KRB5PLACEHOLD_69 (-1765328315L)
2572 #define KRB5PLACEHOLD_70 (-1765328314L)
2573 #define KRB5PLACEHOLD_71 (-1765328313L)
2574 #define KRB5PLACEHOLD_72 (-1765328312L)
2575 #define KRB5PLACEHOLD_73 (-1765328311L)
2576 #define KRB5PLACEHOLD_74 (-1765328310L)
2577 #define KRB5PLACEHOLD_75 (-1765328309L)
2578 #define KRB5PLACEHOLD_76 (-1765328308L)
2579 #define KRB5PLACEHOLD_77 (-1765328307L)
2580 #define KRB5PLACEHOLD_78 (-1765328306L)
2581 #define KRB5PLACEHOLD_79 (-1765328305L)
2582 #define KRB5PLACEHOLD_80 (-1765328304L)
2583 #define KRB5PLACEHOLD_81 (-1765328303L)
2584 #define KRB5PLACEHOLD_82 (-1765328302L)
2585 #define KRB5PLACEHOLD_83 (-1765328301L)
2586 #define KRB5PLACEHOLD_84 (-1765328300L)
2587 #define KRB5PLACEHOLD_85 (-1765328299L)
2588 #define KRB5PLACEHOLD_86 (-1765328298L)
2589 #define KRB5PLACEHOLD_87 (-1765328297L)
2590 #define KRB5PLACEHOLD_88 (-1765328296L)
2591 #define KRB5PLACEHOLD_89 (-1765328295L)
2592 #define KRB5PLACEHOLD_90 (-1765328294L)
2593 #define KRB5PLACEHOLD_91 (-1765328293L)
2594 #define KRB5PLACEHOLD_92 (-1765328292L)
2595 #define KRB5PLACEHOLD_93 (-1765328291L)
2596 #define KRB5PLACEHOLD_94 (-1765328290L)
2597 #define KRB5PLACEHOLD_95 (-1765328289L)
2598 #define KRB5PLACEHOLD_96 (-1765328288L)
2599 #define KRB5PLACEHOLD_97 (-1765328287L)
2600 #define KRB5PLACEHOLD_98 (-1765328286L)
2601 #define KRB5PLACEHOLD_99 (-1765328285L)
2602 #define KRB5PLACEHOLD_100 (-1765328284L)
2603 #define KRB5PLACEHOLD_101 (-1765328283L)
2604 #define KRB5PLACEHOLD_102 (-1765328282L)
2605 #define KRB5PLACEHOLD_103 (-1765328281L)
2606 #define KRB5PLACEHOLD_104 (-1765328280L)
2607 #define KRB5PLACEHOLD_105 (-1765328279L)
2608 #define KRB5PLACEHOLD_106 (-1765328278L)
2609 #define KRB5PLACEHOLD_107 (-1765328277L)
2610 #define KRB5PLACEHOLD_108 (-1765328276L)
2611 #define KRB5PLACEHOLD_109 (-1765328275L)
2612 #define KRB5PLACEHOLD_110 (-1765328274L)
2613 #define KRB5PLACEHOLD_111 (-1765328273L)
2614 #define KRB5PLACEHOLD_112 (-1765328272L)
2615 #define KRB5PLACEHOLD_113 (-1765328271L)
2616 #define KRB5PLACEHOLD_114 (-1765328270L)
2617 #define KRB5PLACEHOLD_115 (-1765328269L)
2618 #define KRB5PLACEHOLD_116 (-1765328268L)
2619 #define KRB5PLACEHOLD_117 (-1765328267L)
2620 #define KRB5PLACEHOLD_118 (-1765328266L)
2621 #define KRB5PLACEHOLD_119 (-1765328265L)
2622 #define KRB5PLACEHOLD_120 (-1765328264L)
2623 #define KRB5PLACEHOLD_121 (-1765328263L)
2624 #define KRB5PLACEHOLD_122 (-1765328262L)
2625 #define KRB5PLACEHOLD_123 (-1765328261L)
2626 #define KRB5PLACEHOLD_124 (-1765328260L)
2627 #define KRB5PLACEHOLD_125 (-1765328259L)
2628 #define KRB5PLACEHOLD_126 (-1765328258L)
2629 #define KRB5PLACEHOLD_127 (-1765328257L)
2630 #define KRB5_ERR_RCSID (-1765328256L)
2631 #define KRB5_LIBOS_BADLOCKFLAG (-1765328255L)
2632 #define KRB5_LIBOS_CANTREADPWD (-1765328254L)
2633 #define KRB5_LIBOS_BADPWDMATCH (-1765328253L)
2634 #define KRB5_LIBOS_PWDINTR (-1765328252L)
2635 #define KRB5_PARSE_ILLCHAR (-1765328251L)
2636 #define KRB5_PARSE_MALFORMED (-1765328250L)
2637 #define KRB5_CONFIG_CANTOPEN (-1765328249L)
2638 #define KRB5_CONFIG_BADFORMAT (-1765328248L)
2639 #define KRB5_CONFIG_NOTENUFSPACE (-1765328247L)
2640 #define KRB5_BADMSGTYPE (-1765328246L)
2641 #define KRB5_CC_BADNAME (-1765328245L)
2642 #define KRB5_CC_UNKNOWN_TYPE (-1765328244L)
2643 #define KRB5_CC_NOTFOUND (-1765328243L)
2644 #define KRB5_CC_END (-1765328242L)
2645 #define KRB5_NO_TKT_SUPPLIED (-1765328241L)
2646 #define KRB5KRB_AP_WRONG_PRINC (-1765328240L)
2647 #define KRB5KRB_AP_ERR_TKT_INVALID (-1765328239L)
2648 #define KRB5_PRINC_NOMATCH (-1765328238L)
2649 #define KRB5_KDCREP_MODIFIED (-1765328237L)
2650 #define KRB5_KDCREP_SKEW (-1765328236L)
2651 #define KRB5_IN_TKT_REALM_MISMATCH (-1765328235L)
2652 #define KRB5_PROG_ETYPE_NOSUPP (-1765328234L)
2653 #define KRB5_PROG_KEYTYPE_NOSUPP (-1765328233L)
2654 #define KRB5_WRONG_ETYPE (-1765328232L)
2655 #define KRB5_PROG_SUMTYPE_NOSUPP (-1765328231L)
2656 #define KRB5_REALM_UNKNOWN (-1765328230L)
2657 #define KRB5_SERVICE_UNKNOWN (-1765328229L)
2658 #define KRB5_KDC_UNREACH (-1765328228L)
2659 #define KRB5_NO_LOCALNAME (-1765328227L)
2660 #define KRB5_MUTUAL_FAILED (-1765328226L)
2661 #define KRB5_RC_TYPE_EXISTS (-1765328225L)
2662 #define KRB5_RC_MALLOC (-1765328224L)
2663 #define KRB5_RC_TYPE_NOTFOUND (-1765328223L)
2664 #define KRB5_RC_UNKNOWN (-1765328222L)
2665 #define KRB5_RC_REPLAY (-1765328221L)
2666 #define KRB5_RC_IO (-1765328220L)
2667 #define KRB5_RC_NOIO (-1765328219L)
2668 #define KRB5_RC_PARSE (-1765328218L)
2669 #define KRB5_RC_IO_EOF (-1765328217L)
2670 #define KRB5_RC_IO_MALLOC (-1765328216L)
2671 #define KRB5_RC_IO_PERM (-1765328215L)
2672 #define KRB5_RC_IO_IO (-1765328214L)
2673 #define KRB5_RC_IO_UNKNOWN (-1765328213L)
2674 #define KRB5_RC_IO_SPACE (-1765328212L)
2675 #define KRB5_TRANS_CANTOPEN (-1765328211L)
2676 #define KRB5_TRANS_BADFORMAT (-1765328210L)
2677 #define KRB5_LNAME_CANTOPEN (-1765328209L)
2678 #define KRB5_LNAME_NOTRANS (-1765328208L)
2679 #define KRB5_LNAME_BADFORMAT (-1765328207L)
2680 #define KRB5_CRYPTO_INTERNAL (-1765328206L)
2681 #define KRB5_KT_BADNAME (-1765328205L)
2682 #define KRB5_KT_UNKNOWN_TYPE (-1765328204L)
2683 #define KRB5_KT_NOTFOUND (-1765328203L)
2684 #define KRB5_KT_END (-1765328202L)
2685 #define KRB5_KT_NOWRITE (-1765328201L)
2686 #define KRB5_KT_IOERR (-1765328200L)
2687 #define KRB5_NO_TKT_IN_RLM (-1765328199L)
2688 #define KRB5DES_BAD_KEYPAR (-1765328198L)
2689 #define KRB5DES_WEAK_KEY (-1765328197L)
2690 #define KRB5_BAD_ENCTYPE (-1765328196L)
2691 #define KRB5_BAD_KEYSIZE (-1765328195L)
2692 #define KRB5_BAD_MSIZE (-1765328194L)
2693 #define KRB5_CC_TYPE_EXISTS (-1765328193L)
2694 #define KRB5_KT_TYPE_EXISTS (-1765328192L)
2695 #define KRB5_CC_IO (-1765328191L)
2696 #define KRB5_FCC_PERM (-1765328190L)
2697 #define KRB5_FCC_NOFILE (-1765328189L)
2698 #define KRB5_FCC_INTERNAL (-1765328188L)
2699 #define KRB5_CC_WRITE (-1765328187L)
2700 #define KRB5_CC_NOMEM (-1765328186L)
2701 #define KRB5_CC_FORMAT (-1765328185L)
2702 #define KRB5_CC_NOT_KTYPE (-1765328184L)
2703 #define KRB5_INVALID_FLAGS (-1765328183L)
2704 #define KRB5_NO_2ND_TKT (-1765328182L)
2705 #define KRB5_NOCREDS_SUPPLIED (-1765328181L)
2706 #define KRB5_SENDAUTH_BADAUTHVERS (-1765328180L)
2707 #define KRB5_SENDAUTH_BADAPPLVERS (-1765328179L)
2708 #define KRB5_SENDAUTH_BADRESPONSE (-1765328178L)
2709 #define KRB5_SENDAUTH_REJECTED (-1765328177L)
2710 #define KRB5_PREAUTH_BAD_TYPE (-1765328176L)
2711 #define KRB5_PREAUTH_NO_KEY (-1765328175L)
2712 #define KRB5_PREAUTH_FAILED (-1765328174L)
2713 #define KRB5_RCACHE_BADVNO (-1765328173L)
2714 #define KRB5_CCACHE_BADVNO (-1765328172L)
2715 #define KRB5_KEYTAB_BADVNO (-1765328171L)
2716 #define KRB5_PROG_ATYPE_NOSUPP (-1765328170L)
2717 #define KRB5_RC_REQUIRED (-1765328169L)
2718 #define KRB5_ERR_BAD_HOSTNAME (-1765328168L)
2719 #define KRB5_ERR_HOST_REALM_UNKNOWN (-1765328167L)
2720 #define KRB5_SNAME_UNSUPP_NAMETYPE (-1765328166L)
2721 #define KRB5KRB_AP_ERR_V4_REPLY (-1765328165L)
2722 #define KRB5_REALM_CANT_RESOLVE (-1765328164L)
2723 #define KRB5_TKT_NOT_FORWARDABLE (-1765328163L)
2724 #define KRB5_FWD_BAD_PRINCIPAL (-1765328162L)
2725 #define KRB5_GET_IN_TKT_LOOP (-1765328161L)
2726 #define KRB5_CONFIG_NODEFREALM (-1765328160L)
2727 #define KRB5_SAM_UNSUPPORTED (-1765328159L)
2728 #define KRB5_KT_NAME_TOOLONG (-1765328158L)
2729 #define KRB5_KT_KVNONOTFOUND (-1765328157L)
2730 #define KRB5_APPL_EXPIRED (-1765328156L)
2731 #define KRB5_LIB_EXPIRED (-1765328155L)
2732 #define KRB5_CHPW_PWDNULL (-1765328154L)
2733 #define KRB5_CHPW_FAIL (-1765328153L)
2734 #define KRB5_KT_FORMAT (-1765328152L)
2735 #define KRB5_NOPERM_ETYPE (-1765328151L)
2736 #define KRB5_CONFIG_ETYPE_NOSUPP (-1765328150L)
2737 #define KRB5_OBSOLETE_FN (-1765328149L)
2738 #define ERROR_TABLE_BASE_krb5 (-1765328384L)
2740 extern struct error_table et_krb5_error_table;
2742 #if (defined(unix) || defined(_AIX)) && !(defined(__MACH__) && defined(__APPLE__))
2743 /* for compatibility with older versions... */
2744 extern void initialize_krb5_error_table ();
2745 #define init_krb5_err_tbl initialize_krb5_error_table
2746 #define krb5_err_base ERROR_TABLE_BASE_krb5
2748 #define initialize_krb5_error_table()
2751 * :::MITKerberosLib:GSSKerberos5Sources_9:include:kdb5_err.h:
2752 * This file is automatically generated; please do not edit it.
2755 #if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__))
2756 #include <KerberosComErr/KerberosComErr.h>
2758 #include <com_err.h>
2761 #define KRB5_KDB_RCSID (-1780008448L)
2762 #define KRB5_KDB_INUSE (-1780008447L)
2763 #define KRB5_KDB_UK_SERROR (-1780008446L)
2764 #define KRB5_KDB_UK_RERROR (-1780008445L)
2765 #define KRB5_KDB_UNAUTH (-1780008444L)
2766 #define KRB5_KDB_NOENTRY (-1780008443L)
2767 #define KRB5_KDB_ILL_WILDCARD (-1780008442L)
2768 #define KRB5_KDB_DB_INUSE (-1780008441L)
2769 #define KRB5_KDB_DB_CHANGED (-1780008440L)
2770 #define KRB5_KDB_TRUNCATED_RECORD (-1780008439L)
2771 #define KRB5_KDB_RECURSIVELOCK (-1780008438L)
2772 #define KRB5_KDB_NOTLOCKED (-1780008437L)
2773 #define KRB5_KDB_BADLOCKMODE (-1780008436L)
2774 #define KRB5_KDB_DBNOTINITED (-1780008435L)
2775 #define KRB5_KDB_DBINITED (-1780008434L)
2776 #define KRB5_KDB_ILLDIRECTION (-1780008433L)
2777 #define KRB5_KDB_NOMASTERKEY (-1780008432L)
2778 #define KRB5_KDB_BADMASTERKEY (-1780008431L)
2779 #define KRB5_KDB_INVALIDKEYSIZE (-1780008430L)
2780 #define KRB5_KDB_CANTREAD_STORED (-1780008429L)
2781 #define KRB5_KDB_BADSTORED_MKEY (-1780008428L)
2782 #define KRB5_KDB_CANTLOCK_DB (-1780008427L)
2783 #define KRB5_KDB_DB_CORRUPT (-1780008426L)
2784 #define KRB5_KDB_BAD_VERSION (-1780008425L)
2785 #define KRB5_KDB_BAD_SALTTYPE (-1780008424L)
2786 #define KRB5_KDB_BAD_ENCTYPE (-1780008423L)
2787 #define KRB5_KDB_BAD_CREATEFLAGS (-1780008422L)
2788 #define ERROR_TABLE_BASE_kdb5 (-1780008448L)
2790 extern struct error_table et_kdb5_error_table;
2792 #if (defined(unix) || defined(_AIX)) && !(defined(__MACH__) && defined(__APPLE__))
2793 /* for compatibility with older versions... */
2794 extern void initialize_kdb5_error_table ();
2795 #define init_kdb5_err_tbl initialize_kdb5_error_table
2796 #define kdb5_err_base ERROR_TABLE_BASE_kdb5
2798 #define initialize_kdb5_error_table()
2801 * :::MITKerberosLib:GSSKerberos5Sources_9:include:kv5m_err.h:
2802 * This file is automatically generated; please do not edit it.
2805 #if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__))
2806 #include <KerberosComErr/KerberosComErr.h>
2808 #include <com_err.h>
2811 #define KV5M_NONE (-1760647424L)
2812 #define KV5M_PRINCIPAL (-1760647423L)
2813 #define KV5M_DATA (-1760647422L)
2814 #define KV5M_KEYBLOCK (-1760647421L)
2815 #define KV5M_CHECKSUM (-1760647420L)
2816 #define KV5M_ENCRYPT_BLOCK (-1760647419L)
2817 #define KV5M_ENC_DATA (-1760647418L)
2818 #define KV5M_CRYPTOSYSTEM_ENTRY (-1760647417L)
2819 #define KV5M_CS_TABLE_ENTRY (-1760647416L)
2820 #define KV5M_CHECKSUM_ENTRY (-1760647415L)
2821 #define KV5M_AUTHDATA (-1760647414L)
2822 #define KV5M_TRANSITED (-1760647413L)
2823 #define KV5M_ENC_TKT_PART (-1760647412L)
2824 #define KV5M_TICKET (-1760647411L)
2825 #define KV5M_AUTHENTICATOR (-1760647410L)
2826 #define KV5M_TKT_AUTHENT (-1760647409L)
2827 #define KV5M_CREDS (-1760647408L)
2828 #define KV5M_LAST_REQ_ENTRY (-1760647407L)
2829 #define KV5M_PA_DATA (-1760647406L)
2830 #define KV5M_KDC_REQ (-1760647405L)
2831 #define KV5M_ENC_KDC_REP_PART (-1760647404L)
2832 #define KV5M_KDC_REP (-1760647403L)
2833 #define KV5M_ERROR (-1760647402L)
2834 #define KV5M_AP_REQ (-1760647401L)
2835 #define KV5M_AP_REP (-1760647400L)
2836 #define KV5M_AP_REP_ENC_PART (-1760647399L)
2837 #define KV5M_RESPONSE (-1760647398L)
2838 #define KV5M_SAFE (-1760647397L)
2839 #define KV5M_PRIV (-1760647396L)
2840 #define KV5M_PRIV_ENC_PART (-1760647395L)
2841 #define KV5M_CRED (-1760647394L)
2842 #define KV5M_CRED_INFO (-1760647393L)
2843 #define KV5M_CRED_ENC_PART (-1760647392L)
2844 #define KV5M_PWD_DATA (-1760647391L)
2845 #define KV5M_ADDRESS (-1760647390L)
2846 #define KV5M_KEYTAB_ENTRY (-1760647389L)
2847 #define KV5M_CONTEXT (-1760647388L)
2848 #define KV5M_OS_CONTEXT (-1760647387L)
2849 #define KV5M_ALT_METHOD (-1760647386L)
2850 #define KV5M_ETYPE_INFO_ENTRY (-1760647385L)
2851 #define KV5M_DB_CONTEXT (-1760647384L)
2852 #define KV5M_AUTH_CONTEXT (-1760647383L)
2853 #define KV5M_KEYTAB (-1760647382L)
2854 #define KV5M_RCACHE (-1760647381L)
2855 #define KV5M_CCACHE (-1760647380L)
2856 #define KV5M_PREAUTH_OPS (-1760647379L)
2857 #define KV5M_SAM_CHALLENGE (-1760647378L)
2858 #define KV5M_SAM_KEY (-1760647377L)
2859 #define KV5M_ENC_SAM_RESPONSE_ENC (-1760647376L)
2860 #define KV5M_SAM_RESPONSE (-1760647375L)
2861 #define KV5M_PREDICTED_SAM_RESPONSE (-1760647374L)
2862 #define KV5M_PASSWD_PHRASE_ELEMENT (-1760647373L)
2863 #define KV5M_GSS_OID (-1760647372L)
2864 #define KV5M_GSS_QUEUE (-1760647371L)
2865 #define ERROR_TABLE_BASE_kv5m (-1760647424L)
2867 extern struct error_table et_kv5m_error_table;
2869 #if (defined(unix) || defined(_AIX)) && !(defined(__MACH__) && defined(__APPLE__))
2870 /* for compatibility with older versions... */
2871 extern void initialize_kv5m_error_table ();
2872 #define init_kv5m_err_tbl initialize_kv5m_error_table
2873 #define kv5m_err_base ERROR_TABLE_BASE_kv5m
2875 #define initialize_kv5m_error_table()
2878 * :::MITKerberosLib:GSSKerberos5Sources_9:include:asn1_err.h:
2879 * This file is automatically generated; please do not edit it.
2882 #if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__))
2883 #include <KerberosComErr/KerberosComErr.h>
2885 #include <com_err.h>
2888 #define ASN1_BAD_TIMEFORMAT (1859794432L)
2889 #define ASN1_MISSING_FIELD (1859794433L)
2890 #define ASN1_MISPLACED_FIELD (1859794434L)
2891 #define ASN1_TYPE_MISMATCH (1859794435L)
2892 #define ASN1_OVERFLOW (1859794436L)
2893 #define ASN1_OVERRUN (1859794437L)
2894 #define ASN1_BAD_ID (1859794438L)
2895 #define ASN1_BAD_LENGTH (1859794439L)
2896 #define ASN1_BAD_FORMAT (1859794440L)
2897 #define ASN1_PARSE_ERROR (1859794441L)
2898 #define ASN1_BAD_GMTIME (1859794442L)
2899 #define ASN1_MISMATCH_INDEF (1859794443L)
2900 #define ASN1_MISSING_EOC (1859794444L)
2901 #define ERROR_TABLE_BASE_asn1 (1859794432L)
2903 extern struct error_table et_asn1_error_table;
2905 #if (defined(unix) || defined(_AIX)) && !(defined(__MACH__) && defined(__APPLE__))
2906 /* for compatibility with older versions... */
2907 extern void initialize_asn1_error_table ();
2908 #define init_asn1_err_tbl initialize_asn1_error_table
2909 #define asn1_err_base ERROR_TABLE_BASE_asn1
2911 #define initialize_asn1_error_table()