1/* 2 * include/krb5.h 3 * 4 * Copyright 1989,1990,1995 by the Massachusetts Institute of Technology. 5 * All Rights Reserved. 6 * 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. 11 * 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. 25 * 26 * 27 * General definitions for Kerberos version 5. 28 */ 29 30/* 31 * Copyright (C) 1998 by the FundsXpress, INC. 32 * 33 * All rights reserved. 34 * 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. 39 * 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. 50 * 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. 54 */ 55 56#ifndef KRB5_GENERAL__ 57#define KRB5_GENERAL__ 58 59#if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__)) 60 #include <KerberosSupport/KerberosSupport.h> 61 62 #if TARGET_API_MAC_OS8 || (TARGET_API_MAC_CARBON && !TARGET_API_MAC_OSX) 63 #include <Kerberos5/win-mac.h> 64 #endif 65#endif 66 67#if defined(_MSDOS) || defined(_WIN32) 68#include <win-mac.h> 69#endif 70 71#ifndef KRB5_CONFIG__ 72#ifndef KRB5_CALLCONV 73#define KRB5_CALLCONV 74#define KRB5_CALLCONV_C 75#define KRB5_DLLIMP 76#define GSS_DLLIMP 77#define KRB5_EXPORTVAR 78#define FAR 79#define NEAR 80#endif /* !KRB5_CALLCONV */ 81#endif /* !KRB5_CONFIG__ */ 82 83#ifndef THREEPARAMOPEN 84#define THREEPARAMOPEN(x,y,z) open(x,y,z) 85#endif 86 87#define KRB5_OLD_CRYPTO 88 89#ifdef HAVE_SYS_TYPES_H 90#include <sys/types.h> 91#endif 92#include <stdlib.h> 93 94/* 95 * begin "error_def.h" 96 */ 97 98#if TARGET_OS_MAC 99 #include <KerberosProfile/KerberosProfile.h> 100#else 101 #include <profile.h> 102#endif 103 104#include <errno.h> 105 106/* 107 * end "error_def.h" 108 */ 109 110#ifdef __cplusplus 111extern "C" { 112#endif 113 114/* Macintoh CFM-68K magic incantation */ 115#if PRAGMA_IMPORT 116#pragma import on 117#endif 118 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 124 #pragma pack(2) 125#endif 126 127/* 128 * begin wordsize.h 129 */ 130 131/* 132 * Word-size related definition. 133 */ 134 135typedef unsigned char krb5_octet; 136typedef unsigned char krb5_ui_1; 137 138#if (SIZEOF_INT == 2) 139typedef int krb5_int16; 140typedef unsigned int krb5_ui_2; 141#define VALID_INT_BITS 0x7fff 142#define VALID_UINT_BITS 0xffff 143#elif (SIZEOF_SHORT == 2) 144typedef short krb5_int16; 145typedef unsigned short krb5_ui_2; 146#else 147 ?==error: undefined 16 bit type 148#endif 149 150#if (SIZEOF_INT == 4) 151typedef int krb5_int32; 152typedef unsigned int krb5_ui_4; 153#define VALID_INT_BITS 0x7fffffff 154#define VALID_UINT_BITS 0xffffffff 155#elif (SIZEOF_LONG == 4) 156typedef long krb5_int32; 157typedef unsigned long krb5_ui_4; 158#elif (SIZEOF_SHORT == 4) 159typedef short krb5_int32; 160typedef unsigned short krb5_ui_4; 161#else 162 ?== error: undefined 32 bit type 163#endif 164 165#define KRB5_INT32_MAX 2147483647 166/* this strange form is necessary since - is a unary operator, not a sign 167 indicator */ 168#define KRB5_INT32_MIN (-KRB5_INT32_MAX-1) 169 170#define KRB5_INT16_MAX 65535 171/* this strange form is necessary since - is a unary operator, not a sign 172 indicator */ 173#define KRB5_INT16_MIN (-KRB5_INT16_MAX-1) 174 175/* 176 * end wordsize.h 177 */ 178 179/* 180 * begin "base-defs.h" 181 */ 182 183/* 184 * Basic definitions for Kerberos V5 library 185 */ 186 187#ifndef FALSE 188#define FALSE 0 189#endif 190#ifndef TRUE 191#define TRUE 1 192#endif 193 194typedef unsigned int krb5_boolean; 195typedef unsigned int krb5_msgtype; 196typedef unsigned int krb5_kvno; 197 198typedef krb5_int32 krb5_addrtype; 199typedef krb5_int32 krb5_enctype; 200typedef krb5_int32 krb5_cksumtype; 201typedef krb5_int32 krb5_authdatatype; 202typedef krb5_int32 krb5_keyusage; 203 204typedef krb5_int32 krb5_preauthtype; /* This may change, later on */ 205typedef krb5_int32 krb5_flags; 206typedef krb5_int32 krb5_timestamp; 207typedef krb5_int32 krb5_error_code; 208typedef krb5_int32 krb5_deltat; 209 210typedef krb5_error_code krb5_magic; 211 212typedef struct _krb5_data { 213 krb5_magic magic; 214 int length; 215 char FAR *data; 216} krb5_data; 217 218/* Define krb5_const as necessary */ 219 220/* 221 * Hardcoded scrudge to deal with Ultrix; see note on NPROTOTYPE below 222 */ 223 224#if defined(KRB5_NO_CONST) || (defined(__ultrix) && !defined(__GNUC__)) 225#define krb5_const 226#else 227#define krb5_const const 228#endif 229 230#if defined(__STDC__) || defined(__cplusplus) || defined(HAS_VOID_TYPE) 231typedef void FAR * krb5_pointer; 232typedef void krb5_const FAR * krb5_const_pointer; 233#else 234typedef char FAR * krb5_pointer; 235typedef char krb5_const FAR * krb5_const_pointer; 236#endif 237 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 242#else 243#define KRB5_STDARG_P(x) () 244#endif /* defined(__STDC__) || defined(__cplusplus) || defined(HAVE_STDARG_H) */ 245#else 246#define KRB5_PROTOTYPE(x) () 247#define KRB5_STDARG_P(x) () 248#endif /* STDC or PROTOTYPES */ 249 250/* 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. 255 */ 256#if defined(KRB5_NO_NESTED_PROTOTYPES) || (defined(__ultrix) && !defined(__GNUC__)) 257#define KRB5_NPROTOTYPE(x) () 258#else 259#define KRB5_NPROTOTYPE(x) KRB5_PROTOTYPE(x) 260#endif 261 262typedef struct krb5_principal_data { 263 krb5_magic magic; 264 krb5_data realm; 265 krb5_data FAR *data; /* An array of strings */ 266 krb5_int32 length; 267 krb5_int32 type; 268} krb5_principal_data; 269 270typedef krb5_principal_data FAR * krb5_principal; 271 272/* 273 * Per V5 spec on definition of principal types 274 */ 275 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 286/* Unique ID */ 287#define KRB5_NT_UID 5 288 289/* constant version thereof: */ 290typedef krb5_const krb5_principal_data FAR *krb5_const_principal; 291 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) 300 301/* 302 * end "base-defs.h" 303 */ 304 305/* 306 * begin "hostaddr.h" 307 */ 308 309/* structure for address */ 310typedef struct _krb5_address { 311 krb5_magic magic; 312 krb5_addrtype addrtype; 313 int length; 314 krb5_octet FAR *contents; 315} krb5_address; 316 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 327 328/* macros to determine if a type is a local type */ 329#define ADDRTYPE_IS_LOCAL(addrtype) (addrtype & 0x8000) 330 331/* 332 * end "hostaddr.h" 333 */ 334 335 336struct _krb5_context; 337typedef struct _krb5_context FAR * krb5_context; 338 339struct _krb5_auth_context; 340typedef struct _krb5_auth_context FAR * krb5_auth_context; 341 342struct _krb5_cryptosystem_entry; 343 344/* 345 * begin "encryption.h" 346 */ 347 348typedef struct _krb5_keyblock { 349 krb5_magic magic; 350 krb5_enctype enctype; 351 int length; 352 krb5_octet FAR *contents; 353} krb5_keyblock; 354 355#ifdef KRB5_OLD_CRYPTO 356typedef struct _krb5_encrypt_block { 357 krb5_magic magic; 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; 363#endif 364 365typedef struct _krb5_checksum { 366 krb5_magic magic; 367 krb5_cksumtype checksum_type; /* checksum type */ 368 int length; 369 krb5_octet FAR *contents; 370} krb5_checksum; 371 372typedef struct _krb5_enc_data { 373 krb5_magic magic; 374 krb5_enctype enctype; 375 krb5_kvno kvno; 376 krb5_data ciphertext; 377} krb5_enc_data; 378 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 391/* local crud */ 392/* marc's DES-3 with 32-bit length */ 393#define ENCTYPE_LOCAL_DES3_HMAC_SHA1 0x7007 394 395#define CKSUMTYPE_CRC32 0x0001 396#define CKSUMTYPE_RSA_MD4 0x0002 397#define CKSUMTYPE_RSA_MD4_DES 0x0003 398#define CKSUMTYPE_DESCBC 0x0004 399/* des-mac-k */ 400/* rsa-md4-des-k */ 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 405 406#ifndef krb5_roundup 407/* round x up to nearest multiple of y */ 408#define krb5_roundup(x, y) ((((x) + (y) - 1)/(y))*(y)) 409#endif /* roundup */ 410 411/* macro function definitions to help clean up code */ 412 413#if 1 414#define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1)) 415#define krb5_xc(ptr,args) ((ptr)?((*(ptr)) args):(abort(),(char*)0)) 416#else 417#define krb5_x(ptr,args) ((*(ptr)) args) 418#define krb5_xc(ptr,args) ((*(ptr)) args) 419#endif 420 421KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 422 krb5_c_encrypt 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)); 426 427KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 428 krb5_c_decrypt 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)); 432 433KRB5_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)); 437 438KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 439 krb5_c_block_size 440 KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype, 441 size_t *blocksize)); 442 443KRB5_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)); 447 448KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 449 krb5_c_random_make_octets 450 KRB5_PROTOTYPE((krb5_context context, krb5_data *data)); 451 452KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 453 krb5_c_random_seed 454 KRB5_PROTOTYPE((krb5_context context, krb5_data *data)); 455 456KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 457 krb5_c_string_to_key 458 KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype, 459 krb5_const krb5_data *string, krb5_const krb5_data *salt, 460 krb5_keyblock *key)); 461 462KRB5_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)); 466 467KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 468 krb5_c_make_checksum 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)); 472 473KRB5_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)); 480 481KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 482 krb5_c_checksum_length 483 KRB5_PROTOTYPE((krb5_context context, krb5_cksumtype cksumtype, 484 size_t *length)); 485 486KRB5_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)); 490 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 512 513/* XXX need to register these */ 514 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 518 519 520KRB5_DLLIMP krb5_boolean KRB5_CALLCONV valid_enctype 521 KRB5_PROTOTYPE((krb5_const krb5_enctype ktype)); 522KRB5_DLLIMP krb5_boolean KRB5_CALLCONV valid_cksumtype 523 KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype)); 524KRB5_DLLIMP krb5_boolean KRB5_CALLCONV is_coll_proof_cksum 525 KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype)); 526KRB5_DLLIMP krb5_boolean KRB5_CALLCONV is_keyed_cksum 527 KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype)); 528 529#ifdef KRB5_OLD_CRYPTO 530/* 531 * old cryptosystem routine prototypes. These are now layered 532 * on top of the functions above. 533 */ 534KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_encrypt 535 KRB5_PROTOTYPE((krb5_context context, 536 krb5_const krb5_pointer inptr, 537 krb5_pointer outptr, 538 krb5_const size_t size, 539 krb5_encrypt_block FAR * eblock, 540 krb5_pointer ivec)); 541KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_decrypt 542 KRB5_PROTOTYPE((krb5_context context, 543 krb5_const krb5_pointer inptr, 544 krb5_pointer outptr, 545 krb5_const size_t size, 546 krb5_encrypt_block FAR * eblock, 547 krb5_pointer ivec)); 548KRB5_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)); 552KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_finish_key 553 KRB5_PROTOTYPE((krb5_context context, 554 krb5_encrypt_block FAR * eblock)); 555KRB5_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)); 561KRB5_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)); 566KRB5_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)); 570KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_random_key 571 KRB5_PROTOTYPE((krb5_context context, 572 krb5_const krb5_encrypt_block FAR * eblock, 573 krb5_pointer ptr, 574 krb5_keyblock FAR * FAR * keyblock)); 575KRB5_DLLIMP krb5_enctype KRB5_CALLCONV krb5_eblock_enctype 576 KRB5_PROTOTYPE((krb5_context context, 577 krb5_const krb5_encrypt_block FAR * eblock)); 578KRB5_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)); 582KRB5_DLLIMP size_t KRB5_CALLCONV krb5_encrypt_size 583 KRB5_PROTOTYPE((krb5_const size_t length, 584 krb5_enctype crypto)); 585KRB5_DLLIMP size_t KRB5_CALLCONV krb5_checksum_size 586 KRB5_PROTOTYPE((krb5_context context, 587 krb5_const krb5_cksumtype ctype)); 588KRB5_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)); 594KRB5_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)); 600 601KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_random_confounder 602 KRB5_PROTOTYPE((size_t, krb5_pointer)); 603 604krb5_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)); 608 609krb5_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)); 613 614#endif /* KRB5_OLD_CRYPTO */ 615 616/* 617 * end "encryption.h" 618 */ 619 620/* 621 * begin "fieldbits.h" 622 */ 623 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 659 660/* 661 * Mask of ticket flags in the TGT which should be converted into KDC 662 * options when using the TGT to get derivitive tickets. 663 * 664 * New mask = KDC_OPT_FORWARDABLE | KDC_OPT_PROXIABLE | 665 * KDC_OPT_ALLOW_POSTDATE | KDC_OPT_RENEWABLE 666 */ 667#define KDC_TKT_COMMON_MASK 0x54800000 668 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 704 705#define AP_OPTS_WIRE_MASK 0xfffffff0 706 707/* definitions for ad_type fields. */ 708#define AD_TYPE_RESERVED 0x8000 709#define AD_TYPE_EXTERNAL 0x4000 710#define AD_TYPE_REGISTERED 0x2000 711 712#define AD_TYPE_FIELD_TYPE_MASK 0x1fff 713 714/* Ticket flags */ 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 */ 749 750/* definitions for lr_type fields. */ 751#define LR_TYPE_THIS_SERVER_ONLY 0x8000 752 753#define LR_TYPE_INTERPRETATION_MASK 0x7fff 754 755/* definitions for ad_type fields. */ 756#define AD_TYPE_EXTERNAL 0x4000 757#define AD_TYPE_REGISTERED 0x2000 758 759#define AD_TYPE_FIELD_TYPE_MASK 0x1fff 760#define AD_TYPE_INTERNAL_MASK 0x3fff 761 762/* definitions for msec direction bit for KRB_SAFE, KRB_PRIV */ 763#define MSEC_DIRBIT 0x8000 764#define MSEC_VAL_MASK 0x7fff 765 766/* 767 * end "fieldbits.h" 768 */ 769 770/* 771 * begin "proto.h" 772 */ 773 774/* Protocol version number */ 775#define KRB5_PVNO 5 776 777/* Message types */ 778 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 */ 789 790/* LastReq types */ 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) 802 803/* PADATA types */ 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 809#if 0 /* Not used */ 810#define KRB5_PADATA_ENC_ENCKEY 4 /* Key encrypted within itself */ 811#endif 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 */ 821 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 */ 825 826/* Reserved for SPX pre-authentication. */ 827#define KRB5_PADATA_DASS 16 828 829/* Transited encoding types */ 830#define KRB5_DOMAIN_X500_COMPRESS 1 831 832/* alternate authentication types */ 833#define KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE 64 834 835/* authorization data types */ 836#define KRB5_AUTHDATA_OSF_DCE 64 837#define KRB5_AUTHDATA_SESAME 65 838 839/* password change constants */ 840 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 846 847/* 848 * end "proto.h" 849 */ 850 851/* Time set */ 852typedef 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, 856 use authtime */ 857 krb5_timestamp endtime; 858 krb5_timestamp renew_till; 859} krb5_ticket_times; 860 861/* structure for auth data */ 862typedef struct _krb5_authdata { 863 krb5_magic magic; 864 krb5_authdatatype ad_type; 865 int length; 866 krb5_octet FAR *contents; 867} krb5_authdata; 868 869/* structure for transited encoding */ 870typedef struct _krb5_transited { 871 krb5_magic magic; 872 krb5_octet tr_type; 873 krb5_data tr_contents; 874} krb5_transited; 875 876typedef struct _krb5_enc_tkt_part { 877 krb5_magic magic; 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 */ 886} krb5_enc_tkt_part; 887 888typedef struct _krb5_ticket { 889 krb5_magic magic; 890 /* cleartext portion */ 891 krb5_principal server; /* server name/realm */ 892 krb5_enc_data enc_part; /* encryption type, kvno, encrypted 893 encoding */ 894 krb5_enc_tkt_part FAR *enc_part2; /* ptr to decrypted version, if 895 available */ 896} krb5_ticket; 897 898/* the unencrypted version */ 899typedef struct _krb5_authenticator { 900 krb5_magic magic; 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; 909 910typedef struct _krb5_tkt_authent { 911 krb5_magic magic; 912 krb5_ticket FAR *ticket; 913 krb5_authenticator FAR *authenticator; 914 krb5_flags ap_options; 915} krb5_tkt_authent; 916 917/* credentials: Ticket, session key, etc. */ 918typedef struct _krb5_creds { 919 krb5_magic magic; 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 931 ENC-TKT-IN-SKEY) */ 932 krb5_authdata FAR * FAR *authdata; /* authorization data */ 933} krb5_creds; 934 935/* Last request fields */ 936typedef struct _krb5_last_req_entry { 937 krb5_magic magic; 938 krb5_octet lr_type; 939 krb5_timestamp value; 940} krb5_last_req_entry; 941 942/* pre-authentication data */ 943typedef struct _krb5_pa_data { 944 krb5_magic magic; 945 krb5_preauthtype pa_type; 946 int length; 947 krb5_octet FAR *contents; 948} krb5_pa_data; 949 950typedef struct _krb5_kdc_req { 951 krb5_magic magic; 952 krb5_msgtype msg_type; /* AS_REQ or TGS_REQ? */ 953 krb5_pa_data FAR * FAR *padata; /* e.g. encoded AP_REQ */ 954 /* real body */ 955 krb5_flags kdc_options; /* requested options */ 956 krb5_principal client; /* includes realm; optional */ 957 krb5_principal server; /* includes realm (only used if no 958 client) */ 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, 968 if available */ 969 krb5_ticket FAR * FAR *second_ticket;/* second ticket array; OPTIONAL */ 970} krb5_kdc_req; 971 972typedef struct _krb5_enc_kdc_rep_part { 973 krb5_magic magic; 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, 984 optional */ 985} krb5_enc_kdc_rep_part; 986 987typedef struct _krb5_kdc_rep { 988 krb5_magic magic; 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 995 encoding */ 996 krb5_enc_kdc_rep_part FAR *enc_part2;/* unencrypted version, if available */ 997} krb5_kdc_rep; 998 999/* error message structure */ 1000typedef struct _krb5_error { 1001 krb5_magic magic; 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; 1009 optional */ 1010 krb5_principal server; /* server's principal identifier */ 1011 krb5_data text; /* descriptive text */ 1012 krb5_data e_data; /* additional error-describing data */ 1013} krb5_error; 1014 1015typedef struct _krb5_ap_req { 1016 krb5_magic magic; 1017 krb5_flags ap_options; /* requested options */ 1018 krb5_ticket FAR *ticket; /* ticket */ 1019 krb5_enc_data authenticator; /* authenticator (already encrypted) */ 1020} krb5_ap_req; 1021 1022typedef struct _krb5_ap_rep { 1023 krb5_magic magic; 1024 krb5_enc_data enc_part; 1025} krb5_ap_rep; 1026 1027typedef struct _krb5_ap_rep_enc_part { 1028 krb5_magic magic; 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; 1034 1035typedef struct _krb5_response { 1036 krb5_magic magic; 1037 krb5_octet message_type; 1038 krb5_data response; 1039 krb5_int32 expected_nonce; /* The expected nonce for KDC_REP messages */ 1040 krb5_timestamp request_time; /* When we made the request */ 1041} krb5_response; 1042 1043typedef struct _krb5_safe { 1044 krb5_magic magic; 1045 krb5_data user_data; /* user data */ 1046 krb5_timestamp timestamp; /* client time, optional */ 1047 krb5_int32 usec; /* microsecond portion of time, 1048 optional */ 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 */ 1053} krb5_safe; 1054 1055typedef struct _krb5_priv { 1056 krb5_magic magic; 1057 krb5_enc_data enc_part; /* encrypted part */ 1058} krb5_priv; 1059 1060typedef struct _krb5_priv_enc_part { 1061 krb5_magic magic; 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; 1069 1070typedef struct _krb5_cred_info { 1071 krb5_magic magic; 1072 krb5_keyblock FAR *session; /* session key used to encrypt */ 1073 /* ticket */ 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, */ 1078 /* optional */ 1079 krb5_address FAR * FAR *caddrs; /* array of ptrs to addresses */ 1080} krb5_cred_info; 1081 1082typedef struct _krb5_cred_enc_part { 1083 krb5_magic magic; 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; 1091 1092typedef struct _krb5_cred { 1093 krb5_magic magic; 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*/ 1097} krb5_cred; 1098 1099/* Sandia password generation structures */ 1100typedef struct _passwd_phrase_element { 1101 krb5_magic magic; 1102 krb5_data FAR *passwd; 1103 krb5_data FAR *phrase; 1104} passwd_phrase_element; 1105 1106typedef struct _krb5_pwd_data { 1107 krb5_magic magic; 1108 int sequence_count; 1109 passwd_phrase_element FAR * FAR *element; 1110} krb5_pwd_data; 1111 1112/* these need to be here so the typedefs are available for the prototypes */ 1113 1114/* 1115 * begin "safepriv.h" 1116 */ 1117 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 1123 1124typedef struct krb5_replay_data { 1125 krb5_timestamp timestamp; 1126 krb5_int32 usec; 1127 krb5_int32 seq; 1128} krb5_replay_data; 1129 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 1135 1136/* 1137 * end "safepriv.h" 1138 */ 1139 1140 1141/* 1142 * begin "ccache.h" 1143 */ 1144 1145typedef krb5_pointer krb5_cc_cursor; /* cursor for sequential lookup */ 1146 1147struct _krb5_ccache; 1148typedef struct _krb5_ccache FAR *krb5_ccache; 1149struct _krb5_cc_ops; 1150typedef struct _krb5_cc_ops krb5_cc_ops; 1151 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 1163 1164/* for set_flags and other functions */ 1165#define KRB5_TC_OPENCLOSE 0x00000001 1166 1167KRB5_DLLIMP const char FAR * KRB5_CALLCONV 1168krb5_cc_get_name (krb5_context context, krb5_ccache cache); 1169 1170KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1171krb5_cc_gen_new (krb5_context context, krb5_ccache FAR *cache); 1172 1173KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1174krb5_cc_initialize(krb5_context context, krb5_ccache cache, 1175 krb5_principal principal); 1176 1177KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1178krb5_cc_destroy (krb5_context context, krb5_ccache cache); 1179 1180KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1181krb5_cc_close (krb5_context context, krb5_ccache cache); 1182 1183KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1184krb5_cc_store_cred (krb5_context context, krb5_ccache cache, 1185 krb5_creds FAR *creds); 1186 1187KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1188krb5_cc_retrieve_cred (krb5_context context, krb5_ccache cache, 1189 krb5_flags flags, krb5_creds FAR *mcreds, 1190 krb5_creds FAR *creds); 1191 1192KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1193krb5_cc_get_principal (krb5_context context, krb5_ccache cache, 1194 krb5_principal FAR *principal); 1195 1196KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1197krb5_cc_start_seq_get (krb5_context context, krb5_ccache cache, 1198 krb5_cc_cursor FAR *cursor); 1199 1200KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1201krb5_cc_next_cred (krb5_context context, krb5_ccache cache, 1202 krb5_cc_cursor FAR *cursor, krb5_creds FAR *creds); 1203 1204KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1205krb5_cc_end_seq_get (krb5_context context, krb5_ccache cache, 1206 krb5_cc_cursor FAR *cursor); 1207 1208KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1209krb5_cc_remove_cred (krb5_context context, krb5_ccache cache, krb5_flags flags, 1210 krb5_creds FAR *creds); 1211 1212KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1213krb5_cc_set_flags (krb5_context context, krb5_ccache cache, krb5_flags flags); 1214 1215KRB5_DLLIMP const char FAR * 1216krb5_cc_get_type (krb5_context context, krb5_ccache cache); 1217 1218/* 1219 * end "ccache.h" 1220 */ 1221 1222/* 1223 * begin "rcache.h" 1224 */ 1225 1226typedef struct krb5_rc_st { 1227 krb5_magic magic; 1228 struct _krb5_rc_ops FAR *ops; 1229 krb5_pointer data; 1230} FAR *krb5_rcache; 1231 1232typedef struct _krb5_donot_replay { 1233 krb5_magic magic; 1234 char FAR *server; /* null-terminated */ 1235 char FAR *client; /* null-terminated */ 1236 krb5_int32 cusec; 1237 krb5_timestamp ctime; 1238} krb5_donot_replay; 1239 1240typedef struct _krb5_rc_ops { 1241 krb5_magic magic; 1242 char FAR *type; 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 *)); 1261} krb5_rc_ops; 1262 1263krb5_error_code krb5_rc_default 1264 KRB5_PROTOTYPE((krb5_context, 1265 krb5_rcache FAR *)); 1266krb5_error_code krb5_rc_register_type 1267 KRB5_PROTOTYPE((krb5_context, 1268 krb5_rc_ops FAR *)); 1269krb5_error_code krb5_rc_resolve_type 1270 KRB5_PROTOTYPE((krb5_context, 1271 krb5_rcache FAR *,char FAR *)); 1272krb5_error_code krb5_rc_resolve_full 1273 KRB5_PROTOTYPE((krb5_context, 1274 krb5_rcache FAR *,char FAR *)); 1275char FAR * krb5_rc_get_type 1276 KRB5_PROTOTYPE((krb5_context, 1277 krb5_rcache)); 1278char FAR * krb5_rc_default_type 1279 KRB5_PROTOTYPE((krb5_context)); 1280char FAR * krb5_rc_default_name 1281 KRB5_PROTOTYPE((krb5_context)); 1282krb5_error_code krb5_auth_to_rep 1283 KRB5_PROTOTYPE((krb5_context, 1284 krb5_tkt_authent FAR *, 1285 krb5_donot_replay FAR *)); 1286 1287 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)) 1297 1298extern krb5_rc_ops krb5_rc_dfl_ops; 1299 1300/* 1301 * end "rcache.h" 1302 */ 1303 1304/* 1305 * begin "keytab.h" 1306 */ 1307 1308 1309/* XXX */ 1310#define MAX_KEYTAB_NAME_LEN 1100 /* Long enough for MAXPATHLEN + some extra */ 1311 1312typedef krb5_pointer krb5_kt_cursor; /* XXX */ 1313 1314typedef struct krb5_keytab_entry_st { 1315 krb5_magic magic; 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; 1321 1322 1323typedef struct _krb5_kt { 1324 krb5_magic magic; 1325 struct _krb5_kt_ops FAR *ops; 1326 krb5_pointer data; 1327} FAR *krb5_keytab; 1328 1329 1330typedef struct _krb5_kt_ops { 1331 krb5_magic magic; 1332 char FAR *prefix; 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, 1340 krb5_keytab, 1341 char FAR *, 1342 int)); 1343 krb5_error_code (KRB5_CALLCONV *close) 1344 KRB5_NPROTOTYPE((krb5_context, 1345 krb5_keytab)); 1346 krb5_error_code (KRB5_CALLCONV *get) 1347 KRB5_NPROTOTYPE((krb5_context, 1348 krb5_keytab, 1349 krb5_const_principal, 1350 krb5_kvno, 1351 krb5_enctype, 1352 krb5_keytab_entry FAR *)); 1353 krb5_error_code (KRB5_CALLCONV *start_seq_get) 1354 KRB5_NPROTOTYPE((krb5_context, 1355 krb5_keytab, 1356 krb5_kt_cursor FAR *)); 1357 krb5_error_code (KRB5_CALLCONV *get_next) 1358 KRB5_NPROTOTYPE((krb5_context, 1359 krb5_keytab, 1360 krb5_keytab_entry FAR *, 1361 krb5_kt_cursor FAR *)); 1362 krb5_error_code (KRB5_CALLCONV *end_get) 1363 KRB5_NPROTOTYPE((krb5_context, 1364 krb5_keytab, 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, 1369 krb5_keytab, 1370 krb5_keytab_entry FAR *)); 1371 krb5_error_code (KRB5_CALLCONV *remove) 1372 KRB5_NPROTOTYPE((krb5_context, 1373 krb5_keytab, 1374 krb5_keytab_entry FAR *)); 1375 1376 /* Handle for serializer */ 1377 void * serializer; 1378} krb5_kt_ops; 1379 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 */ 1389 1390 1391extern krb5_kt_ops krb5_kt_dfl_ops; 1392 1393/* 1394 * end "keytab.h" 1395 */ 1396 1397/* 1398 * begin "func-proto.h" 1399 */ 1400 1401KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_init_context 1402 KRB5_PROTOTYPE((krb5_context FAR *)); 1403KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_init_secure_context 1404 KRB5_PROTOTYPE((krb5_context FAR *)); 1405KRB5_DLLIMP void KRB5_CALLCONV krb5_free_context 1406 KRB5_PROTOTYPE((krb5_context)); 1407 1408krb5_error_code krb5_set_default_in_tkt_ktypes 1409 KRB5_PROTOTYPE((krb5_context, 1410 krb5_const krb5_enctype *)); 1411krb5_error_code krb5_get_default_in_tkt_ktypes 1412 KRB5_PROTOTYPE((krb5_context, 1413 krb5_enctype **)); 1414 1415krb5_error_code krb5_set_default_tgs_ktypes 1416 KRB5_PROTOTYPE((krb5_context, 1417 krb5_const krb5_enctype *)); 1418krb5_error_code KRB5_CALLCONV krb5_get_tgs_ktypes 1419 KRB5_PROTOTYPE((krb5_context, 1420 krb5_const_principal, 1421 krb5_enctype **)); 1422 1423krb5_error_code krb5_get_permitted_enctypes 1424 KRB5_PROTOTYPE((krb5_context, krb5_enctype **)); 1425void KRB5_CALLCONV krb5_free_ktypes 1426 KRB5_PROTOTYPE ((krb5_context, krb5_enctype *)); 1427 1428krb5_boolean krb5_is_permitted_enctype 1429 KRB5_PROTOTYPE((krb5_context, krb5_enctype)); 1430 1431/* libkrb.spec */ 1432krb5_error_code krb5_kdc_rep_decrypt_proc 1433 KRB5_PROTOTYPE((krb5_context, 1434 krb5_const krb5_keyblock *, 1435 krb5_const_pointer, 1436 krb5_kdc_rep * )); 1437KRB5_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 * )); 1441krb5_error_code krb5_get_cred_from_kdc 1442 KRB5_PROTOTYPE((krb5_context, 1443 krb5_ccache, /* not const, as reading may save 1444 state */ 1445 krb5_creds *, 1446 krb5_creds **, 1447 krb5_creds *** )); 1448krb5_error_code krb5_get_cred_from_kdc_validate 1449 KRB5_PROTOTYPE((krb5_context, 1450 krb5_ccache, /* not const, as reading may save 1451 state */ 1452 krb5_creds *, 1453 krb5_creds **, 1454 krb5_creds *** )); 1455krb5_error_code krb5_get_cred_from_kdc_renew 1456 KRB5_PROTOTYPE((krb5_context, 1457 krb5_ccache, /* not const, as reading may save 1458 state */ 1459 krb5_creds *, 1460 krb5_creds **, 1461 krb5_creds *** )); 1462KRB5_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 */ 1465 1466#define KRB5_GC_USER_USER 1 /* want user-user ticket */ 1467#define KRB5_GC_CACHED 2 /* want cached ticket only */ 1468 1469KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials 1470 KRB5_PROTOTYPE((krb5_context, 1471 krb5_const krb5_flags, 1472 krb5_ccache, 1473 krb5_creds FAR *, 1474 krb5_creds FAR * FAR *)); 1475KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials_validate 1476 KRB5_PROTOTYPE((krb5_context, 1477 krb5_const krb5_flags, 1478 krb5_ccache, 1479 krb5_creds FAR *, 1480 krb5_creds FAR * FAR *)); 1481KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials_renew 1482 KRB5_PROTOTYPE((krb5_context, 1483 krb5_const krb5_flags, 1484 krb5_ccache, 1485 krb5_creds FAR *, 1486 krb5_creds FAR * FAR *)); 1487krb5_error_code krb5_get_cred_via_tkt 1488 KRB5_PROTOTYPE((krb5_context, 1489 krb5_creds *, 1490 krb5_const krb5_flags, 1491 krb5_address * krb5_const *, 1492 krb5_creds *, 1493 krb5_creds **)); 1494KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_req 1495 KRB5_PROTOTYPE((krb5_context, 1496 krb5_auth_context FAR *, 1497 krb5_const krb5_flags, 1498 char FAR *, 1499 char FAR *, 1500 krb5_data FAR *, 1501 krb5_ccache, 1502 krb5_data FAR * )); 1503KRB5_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, 1507 krb5_data FAR *, 1508 krb5_creds FAR *, 1509 krb5_data FAR * )); 1510KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_rep 1511 KRB5_PROTOTYPE((krb5_context, 1512 krb5_auth_context, 1513 krb5_data FAR *)); 1514KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_rep 1515 KRB5_PROTOTYPE((krb5_context, 1516 krb5_auth_context, 1517 krb5_const krb5_data FAR *, 1518 krb5_ap_rep_enc_part FAR * FAR *)); 1519KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_error 1520 KRB5_PROTOTYPE((krb5_context, 1521 krb5_const krb5_error FAR *, 1522 krb5_data FAR * )); 1523KRB5_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 * )); 1527KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_safe 1528 KRB5_PROTOTYPE((krb5_context, 1529 krb5_auth_context, 1530 krb5_const krb5_data FAR *, 1531 krb5_data FAR *, 1532 krb5_replay_data FAR *)); 1533KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_priv 1534 KRB5_PROTOTYPE((krb5_context, 1535 krb5_auth_context, 1536 krb5_const krb5_data FAR *, 1537 krb5_data FAR *, 1538 krb5_replay_data FAR *)); 1539KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_parse_name 1540 KRB5_PROTOTYPE((krb5_context, 1541 krb5_const char FAR *, 1542 krb5_principal FAR * )); 1543KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_unparse_name 1544 KRB5_PROTOTYPE((krb5_context, 1545 krb5_const_principal, 1546 char FAR * FAR * )); 1547KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_unparse_name_ext 1548 KRB5_PROTOTYPE((krb5_context, 1549 krb5_const_principal, 1550 char FAR * FAR *, 1551 int FAR *)); 1552 1553KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_set_principal_realm 1554 KRB5_PROTOTYPE((krb5_context, krb5_principal, const char FAR *)); 1555 1556krb5_boolean krb5_address_search 1557 KRB5_PROTOTYPE((krb5_context, 1558 krb5_const krb5_address *, 1559 krb5_address * krb5_const *)); 1560krb5_boolean krb5_address_compare 1561 KRB5_PROTOTYPE((krb5_context, 1562 krb5_const krb5_address *, 1563 krb5_const krb5_address *)); 1564int krb5_address_order 1565 KRB5_PROTOTYPE((krb5_context, 1566 krb5_const krb5_address *, 1567 krb5_const krb5_address *)); 1568krb5_boolean krb5_realm_compare 1569 KRB5_PROTOTYPE((krb5_context, 1570 krb5_const_principal, 1571 krb5_const_principal)); 1572KRB5_DLLIMP krb5_boolean KRB5_CALLCONV krb5_principal_compare 1573 KRB5_PROTOTYPE((krb5_context, 1574 krb5_const_principal, 1575 krb5_const_principal)); 1576KRB5_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 *)); 1580KRB5_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 *)); 1584KRB5_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 *)); 1588KRB5_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 *)); 1592KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_principal 1593 KRB5_PROTOTYPE((krb5_context, 1594 krb5_const_principal, 1595 krb5_principal FAR *)); 1596KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_addr 1597 KRB5_PROTOTYPE((krb5_context, 1598 const krb5_address FAR *, 1599 krb5_address FAR * FAR *)); 1600KRB5_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 *)); 1604KRB5_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 *)); 1608KRB5_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 *)); 1612KRB5_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 *)); 1616KRB5_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 *)); 1620void krb5_init_ets 1621 KRB5_PROTOTYPE((krb5_context)); 1622void krb5_free_ets 1623 KRB5_PROTOTYPE((krb5_context)); 1624krb5_error_code krb5_generate_subkey 1625 KRB5_PROTOTYPE((krb5_context, 1626 krb5_const krb5_keyblock *, krb5_keyblock **)); 1627krb5_error_code krb5_generate_seq_number 1628 KRB5_PROTOTYPE((krb5_context, 1629 krb5_const krb5_keyblock *, krb5_int32 *)); 1630KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_server_rcache 1631 KRB5_PROTOTYPE((krb5_context, 1632 krb5_const krb5_data *, krb5_rcache *)); 1633KRB5_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 *, ...)); 1635KRB5_DLLIMP krb5_error_code KRB5_CALLCONV_C krb5_build_principal 1636 KRB5_STDARG_P((krb5_context, krb5_principal FAR *, int, krb5_const char FAR *, ...)); 1637#ifdef va_start 1638/* XXX depending on varargs include file defining va_start... */ 1639krb5_error_code krb5_build_principal_va 1640 KRB5_PROTOTYPE((krb5_context, 1641 krb5_principal, int, krb5_const char *, va_list)); 1642#endif 1643 1644KRB5_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)); 1649 1650KRB5_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)); 1653 1654KRB5_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)); 1657KRB5_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)); 1661KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_chpw_result_code_string 1662 KRB5_PROTOTYPE((krb5_context context, int result_code, 1663 char **result_codestr)); 1664 1665/* libkt.spec */ 1666KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_register 1667 KRB5_PROTOTYPE((krb5_context, 1668 krb5_kt_ops FAR * )); 1669KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_resolve 1670 KRB5_PROTOTYPE((krb5_context, 1671 krb5_const char FAR *, 1672 krb5_keytab FAR * )); 1673KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_default_name 1674 KRB5_PROTOTYPE((krb5_context, 1675 char FAR *, 1676 int )); 1677KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_default 1678 KRB5_PROTOTYPE((krb5_context, 1679 krb5_keytab FAR * )); 1680KRB5_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 */ 1685KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_remove_entry 1686 KRB5_PROTOTYPE((krb5_context, 1687 krb5_keytab, 1688 krb5_keytab_entry FAR * )); 1689KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_add_entry 1690 KRB5_PROTOTYPE((krb5_context, 1691 krb5_keytab, 1692 krb5_keytab_entry FAR * )); 1693krb5_error_code krb5_principal2salt 1694 KRB5_PROTOTYPE((krb5_context, 1695 krb5_const_principal, krb5_data *)); 1696krb5_error_code krb5_principal2salt_norealm 1697 KRB5_PROTOTYPE((krb5_context, 1698 krb5_const_principal, krb5_data *)); 1699 1700/* librc.spec--see rcache.h */ 1701 1702/* libcc.spec */ 1703KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_resolve 1704 KRB5_PROTOTYPE((krb5_context, 1705 const char FAR *, 1706 krb5_ccache FAR * )); 1707KRB5_DLLIMP const char FAR * KRB5_CALLCONV krb5_cc_default_name 1708 KRB5_PROTOTYPE((krb5_context)); 1709KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_set_default_name 1710 KRB5_PROTOTYPE((krb5_context, const char *)); 1711KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_default 1712 KRB5_PROTOTYPE((krb5_context, 1713 krb5_ccache FAR *)); 1714KRB5_DLLIMP unsigned int KRB5_CALLCONV krb5_get_notification_message 1715 KRB5_PROTOTYPE((void)); 1716 1717KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_copy_creds 1718 KRB5_PROTOTYPE((krb5_context context, 1719 krb5_ccache incc, 1720 krb5_ccache outcc)); 1721 1722 1723/* chk_trans.c */ 1724krb5_error_code krb5_check_transited_list 1725 KRB5_PROTOTYPE((krb5_context, 1726 krb5_data *trans, krb5_data *realm1, krb5_data *realm2)); 1727 1728/* free_rtree.c */ 1729void krb5_free_realm_tree 1730 KRB5_PROTOTYPE((krb5_context, 1731 krb5_principal *)); 1732 1733/* krb5_free.c */ 1734KRB5_DLLIMP void KRB5_CALLCONV krb5_free_principal 1735 KRB5_PROTOTYPE((krb5_context, krb5_principal )); 1736KRB5_DLLIMP void KRB5_CALLCONV krb5_free_authenticator 1737 KRB5_PROTOTYPE((krb5_context, krb5_authenticator FAR * )); 1738KRB5_DLLIMP void KRB5_CALLCONV krb5_free_authenticator_contents 1739 KRB5_PROTOTYPE((krb5_context, krb5_authenticator FAR * )); 1740KRB5_DLLIMP void KRB5_CALLCONV krb5_free_addresses 1741 KRB5_PROTOTYPE((krb5_context, krb5_address FAR * FAR * )); 1742KRB5_DLLIMP void KRB5_CALLCONV krb5_free_address 1743 KRB5_PROTOTYPE((krb5_context, krb5_address FAR * )); 1744KRB5_DLLIMP void KRB5_CALLCONV krb5_free_authdata 1745 KRB5_PROTOTYPE((krb5_context, krb5_authdata FAR * FAR * )); 1746KRB5_DLLIMP void KRB5_CALLCONV krb5_free_enc_tkt_part 1747 KRB5_PROTOTYPE((krb5_context, krb5_enc_tkt_part FAR * )); 1748KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ticket 1749 KRB5_PROTOTYPE((krb5_context, krb5_ticket FAR * )); 1750KRB5_DLLIMP void KRB5_CALLCONV krb5_free_tickets 1751 KRB5_PROTOTYPE((krb5_context, krb5_ticket FAR * FAR * )); 1752KRB5_DLLIMP void KRB5_CALLCONV krb5_free_kdc_req 1753 KRB5_PROTOTYPE((krb5_context, krb5_kdc_req FAR * )); 1754KRB5_DLLIMP void KRB5_CALLCONV krb5_free_kdc_rep 1755 KRB5_PROTOTYPE((krb5_context, krb5_kdc_rep FAR * )); 1756KRB5_DLLIMP void KRB5_CALLCONV krb5_free_last_req 1757 KRB5_PROTOTYPE((krb5_context, krb5_last_req_entry FAR * FAR * )); 1758KRB5_DLLIMP void KRB5_CALLCONV krb5_free_enc_kdc_rep_part 1759 KRB5_PROTOTYPE((krb5_context, krb5_enc_kdc_rep_part FAR * )); 1760KRB5_DLLIMP void KRB5_CALLCONV krb5_free_error 1761 KRB5_PROTOTYPE((krb5_context, krb5_error FAR * )); 1762KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ap_req 1763 KRB5_PROTOTYPE((krb5_context, krb5_ap_req FAR * )); 1764KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ap_rep 1765 KRB5_PROTOTYPE((krb5_context, krb5_ap_rep FAR * )); 1766KRB5_DLLIMP void KRB5_CALLCONV krb5_free_safe 1767 KRB5_PROTOTYPE((krb5_context, krb5_safe FAR * )); 1768KRB5_DLLIMP void KRB5_CALLCONV krb5_free_priv 1769 KRB5_PROTOTYPE((krb5_context, krb5_priv FAR * )); 1770KRB5_DLLIMP void KRB5_CALLCONV krb5_free_priv_enc_part 1771 KRB5_PROTOTYPE((krb5_context, krb5_priv_enc_part FAR * )); 1772KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cred 1773 KRB5_PROTOTYPE((krb5_context, krb5_cred FAR *)); 1774KRB5_DLLIMP void KRB5_CALLCONV krb5_free_creds 1775 KRB5_PROTOTYPE((krb5_context, krb5_creds FAR *)); 1776KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cred_contents 1777 KRB5_PROTOTYPE((krb5_context, krb5_creds FAR *)); 1778KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cred_enc_part 1779 KRB5_PROTOTYPE((krb5_context, krb5_cred_enc_part FAR *)); 1780KRB5_DLLIMP void KRB5_CALLCONV krb5_free_checksum 1781 KRB5_PROTOTYPE((krb5_context, krb5_checksum FAR *)); 1782KRB5_DLLIMP void KRB5_CALLCONV krb5_free_checksum_contents 1783 KRB5_PROTOTYPE((krb5_context, krb5_checksum FAR *)); 1784KRB5_DLLIMP void KRB5_CALLCONV krb5_free_keyblock 1785 KRB5_PROTOTYPE((krb5_context, krb5_keyblock FAR *)); 1786KRB5_DLLIMP void KRB5_CALLCONV krb5_free_keyblock_contents 1787 KRB5_PROTOTYPE((krb5_context, krb5_keyblock FAR *)); 1788KRB5_DLLIMP void KRB5_CALLCONV krb5_free_pa_data 1789 KRB5_PROTOTYPE((krb5_context, krb5_pa_data FAR * FAR *)); 1790KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ap_rep_enc_part 1791 KRB5_PROTOTYPE((krb5_context, krb5_ap_rep_enc_part FAR *)); 1792KRB5_DLLIMP void KRB5_CALLCONV krb5_free_tkt_authent 1793 KRB5_PROTOTYPE((krb5_context, krb5_tkt_authent FAR *)); 1794KRB5_DLLIMP void KRB5_CALLCONV krb5_free_pwd_data 1795 KRB5_PROTOTYPE((krb5_context, krb5_pwd_data FAR *)); 1796KRB5_DLLIMP void KRB5_CALLCONV krb5_free_pwd_sequences 1797 KRB5_PROTOTYPE((krb5_context, passwd_phrase_element FAR * FAR *)); 1798KRB5_DLLIMP void KRB5_CALLCONV krb5_free_data 1799 KRB5_PROTOTYPE((krb5_context, krb5_data FAR *)); 1800KRB5_DLLIMP void KRB5_CALLCONV krb5_free_data_contents 1801 KRB5_PROTOTYPE((krb5_context, krb5_data FAR *)); 1802KRB5_DLLIMP void KRB5_CALLCONV krb5_free_unparsed_name 1803 KRB5_PROTOTYPE((krb5_context, char FAR *)); 1804KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cksumtypes 1805 KRB5_PROTOTYPE((krb5_context, krb5_cksumtype FAR *)); 1806 1807/* From krb5/os but needed but by the outside world */ 1808KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_us_timeofday 1809 KRB5_PROTOTYPE((krb5_context, 1810 krb5_int32 FAR *, 1811 krb5_int32 FAR * )); 1812KRB5_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 */ 1816KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_os_localaddr 1817 KRB5_PROTOTYPE((krb5_context, 1818 krb5_address FAR * FAR * FAR *)); 1819KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_default_realm 1820 KRB5_PROTOTYPE((krb5_context, 1821 char FAR * FAR * )); 1822KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_set_default_realm 1823 KRB5_PROTOTYPE((krb5_context, 1824 krb5_const char FAR * )); 1825KRB5_DLLIMP void KRB5_CALLCONV krb5_free_default_realm 1826 KRB5_PROTOTYPE((krb5_context, 1827 char FAR * )); 1828KRB5_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 *, 1832 krb5_int32, 1833 krb5_principal FAR *)); 1834KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1835krb5_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)); 1839 1840#ifndef macintosh 1841krb5_error_code krb5_set_config_files 1842 KRB5_PROTOTYPE ((krb5_context, krb5_const char FAR * FAR *)); 1843 1844KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_default_config_files 1845 KRB5_PROTOTYPE((char ***filenames)); 1846 1847KRB5_DLLIMP void KRB5_CALLCONV krb5_free_config_files 1848 KRB5_PROTOTYPE((char **filenames)); 1849 1850#endif 1851 1852KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 1853krb5_get_profile 1854 KRB5_PROTOTYPE((krb5_context, profile_t *)); 1855 1856krb5_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 *, 1866 krb5_creds *, 1867 krb5_response * )); 1868 1869KRB5_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 *, 1873 krb5_enctype FAR *, 1874 krb5_preauthtype FAR *, 1875 krb5_error_code ( FAR * )(krb5_context, 1876 krb5_const krb5_enctype, 1877 krb5_data FAR *, 1878 krb5_const_pointer, 1879 krb5_keyblock FAR * FAR *), 1880 krb5_const_pointer, 1881 krb5_error_code ( FAR * )(krb5_context, 1882 krb5_const krb5_keyblock FAR *, 1883 krb5_const_pointer, 1884 krb5_kdc_rep FAR * ), 1885 krb5_const_pointer, 1886 krb5_creds FAR *, 1887 krb5_ccache, 1888 krb5_kdc_rep FAR * FAR * )); 1889 1890KRB5_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 *, 1894 krb5_enctype FAR *, 1895 krb5_preauthtype FAR *, 1896 krb5_const char FAR *, 1897 krb5_ccache, 1898 krb5_creds FAR *, 1899 krb5_kdc_rep FAR * FAR * )); 1900 1901KRB5_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 *, 1905 krb5_enctype FAR *, 1906 krb5_preauthtype FAR *, 1907 krb5_const krb5_keyblock FAR *, 1908 krb5_ccache, 1909 krb5_creds FAR *, 1910 krb5_kdc_rep FAR * FAR * )); 1911 1912KRB5_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 *, 1916 krb5_enctype FAR *, 1917 krb5_preauthtype FAR *, 1918 krb5_const krb5_keytab, 1919 krb5_ccache, 1920 krb5_creds FAR *, 1921 krb5_kdc_rep FAR * FAR * )); 1922 1923 1924krb5_error_code krb5_decode_kdc_rep 1925 KRB5_PROTOTYPE((krb5_context, 1926 krb5_data *, 1927 krb5_const krb5_keyblock *, 1928 krb5_kdc_rep ** )); 1929 1930KRB5_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, 1935 krb5_keytab, 1936 krb5_flags FAR *, 1937 krb5_ticket FAR * FAR *)); 1938 1939krb5_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, 1944 krb5_keytab, 1945 krb5_flags *, 1946 krb5_ticket **)); 1947 1948krb5_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, 1953 krb5_keytab, 1954 krb5_flags *, 1955 krb5_ticket **)); 1956 1957KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_read_service_key 1958 KRB5_PROTOTYPE((krb5_context, 1959 krb5_pointer, 1960 krb5_principal, 1961 krb5_kvno, 1962 krb5_enctype, 1963 krb5_keyblock FAR * FAR *)); 1964KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_safe 1965 KRB5_PROTOTYPE((krb5_context, 1966 krb5_auth_context, 1967 krb5_const krb5_data FAR *, 1968 krb5_data FAR *, 1969 krb5_replay_data FAR *)); 1970KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_priv 1971 KRB5_PROTOTYPE((krb5_context, 1972 krb5_auth_context, 1973 krb5_const krb5_data FAR *, 1974 krb5_data FAR *, 1975 krb5_replay_data FAR *)); 1976KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_register 1977 KRB5_PROTOTYPE((krb5_context, 1978 krb5_cc_ops FAR *, 1979 krb5_boolean )); 1980 1981KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_sendauth 1982 KRB5_PROTOTYPE((krb5_context, 1983 krb5_auth_context FAR *, 1984 krb5_pointer, 1985 char FAR *, 1986 krb5_principal, 1987 krb5_principal, 1988 krb5_flags, 1989 krb5_data FAR *, 1990 krb5_creds FAR *, 1991 krb5_ccache, 1992 krb5_error FAR * FAR *, 1993 krb5_ap_rep_enc_part FAR * FAR *, 1994 krb5_creds FAR * FAR *)); 1995 1996KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_recvauth 1997 KRB5_PROTOTYPE((krb5_context, 1998 krb5_auth_context FAR *, 1999 krb5_pointer, 2000 char FAR *, 2001 krb5_principal, 2002 krb5_int32, 2003 krb5_keytab, 2004 krb5_ticket FAR * FAR *)); 2005KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_recvauth_version 2006 KRB5_PROTOTYPE((krb5_context, 2007 krb5_auth_context FAR *, 2008 krb5_pointer, 2009 krb5_principal, 2010 krb5_int32, 2011 krb5_keytab, 2012 krb5_ticket FAR * FAR *, 2013 krb5_data FAR *)); 2014 2015krb5_error_code krb5_walk_realm_tree 2016 KRB5_PROTOTYPE((krb5_context, 2017 krb5_const krb5_data *, 2018 krb5_const krb5_data *, 2019 krb5_principal **, 2020 int)); 2021 2022KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_ncred 2023 KRB5_PROTOTYPE((krb5_context, 2024 krb5_auth_context, 2025 krb5_creds FAR * FAR *, 2026 krb5_data FAR * FAR *, 2027 krb5_replay_data FAR *)); 2028 2029KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_1cred 2030 KRB5_PROTOTYPE((krb5_context, 2031 krb5_auth_context, 2032 krb5_creds FAR *, 2033 krb5_data FAR * FAR *, 2034 krb5_replay_data FAR *)); 2035 2036KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_cred 2037 KRB5_PROTOTYPE((krb5_context, 2038 krb5_auth_context, 2039 krb5_data FAR *, 2040 krb5_creds FAR * FAR * FAR *, 2041 krb5_replay_data FAR *)); 2042 2043KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_fwd_tgt_creds 2044 KRB5_PROTOTYPE((krb5_context, 2045 krb5_auth_context, 2046 char FAR *, 2047 krb5_principal, 2048 krb5_principal, 2049 krb5_ccache, 2050 int forwardable, 2051 krb5_data FAR *)); 2052 2053KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_init 2054 KRB5_PROTOTYPE((krb5_context, 2055 krb5_auth_context FAR *)); 2056 2057KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_free 2058 KRB5_PROTOTYPE((krb5_context, 2059 krb5_auth_context)); 2060 2061KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setflags 2062 KRB5_PROTOTYPE((krb5_context, 2063 krb5_auth_context, 2064 krb5_int32)); 2065 2066KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getflags 2067 KRB5_PROTOTYPE((krb5_context, 2068 krb5_auth_context, 2069 krb5_int32 FAR *)); 2070 2071krb5_error_code krb5_auth_con_setaddrs 2072 KRB5_PROTOTYPE((krb5_context, 2073 krb5_auth_context, 2074 krb5_address *, 2075 krb5_address *)); 2076 2077krb5_error_code krb5_auth_con_getaddrs 2078 KRB5_PROTOTYPE((krb5_context, 2079 krb5_auth_context, 2080 krb5_address **, 2081 krb5_address **)); 2082 2083krb5_error_code krb5_auth_con_setports 2084 KRB5_PROTOTYPE((krb5_context, 2085 krb5_auth_context, 2086 krb5_address *, 2087 krb5_address *)); 2088 2089KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setuseruserkey 2090 KRB5_PROTOTYPE((krb5_context, 2091 krb5_auth_context, 2092 krb5_keyblock FAR *)); 2093 2094KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getkey 2095 KRB5_PROTOTYPE((krb5_context, 2096 krb5_auth_context, 2097 krb5_keyblock **)); 2098 2099KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalsubkey 2100 KRB5_PROTOTYPE((krb5_context, 2101 krb5_auth_context, 2102 krb5_keyblock FAR * FAR *)); 2103 2104KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_set_req_cksumtype 2105 KRB5_PROTOTYPE((krb5_context, 2106 krb5_auth_context, 2107 krb5_cksumtype)); 2108 2109krb5_error_code krb5_auth_con_set_safe_cksumtype 2110 KRB5_PROTOTYPE((krb5_context, 2111 krb5_auth_context, 2112 krb5_cksumtype)); 2113 2114krb5_error_code krb5_auth_con_getcksumtype 2115 KRB5_PROTOTYPE((krb5_context, 2116 krb5_auth_context, 2117 krb5_cksumtype *)); 2118 2119KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalseqnumber 2120 KRB5_PROTOTYPE((krb5_context, 2121 krb5_auth_context, 2122 krb5_int32 FAR *)); 2123 2124KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getremoteseqnumber 2125 KRB5_PROTOTYPE((krb5_context, 2126 krb5_auth_context, 2127 krb5_int32 FAR *)); 2128 2129krb5_error_code krb5_auth_con_initivector 2130 KRB5_PROTOTYPE((krb5_context, 2131 krb5_auth_context)); 2132 2133krb5_error_code krb5_auth_con_setivector 2134 KRB5_PROTOTYPE((krb5_context, 2135 krb5_auth_context, 2136 krb5_pointer)); 2137 2138krb5_error_code krb5_auth_con_getivector 2139 KRB5_PROTOTYPE((krb5_context, 2140 krb5_auth_context, 2141 krb5_pointer *)); 2142 2143KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setrcache 2144 KRB5_PROTOTYPE((krb5_context, 2145 krb5_auth_context, 2146 krb5_rcache)); 2147 2148krb5_error_code krb5_auth_con_getrcache 2149 KRB5_PROTOTYPE((krb5_context, 2150 krb5_auth_context, 2151 krb5_rcache *)); 2152 2153KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getauthenticator 2154 KRB5_PROTOTYPE((krb5_context, 2155 krb5_auth_context, 2156 krb5_authenticator FAR * FAR *)); 2157 2158KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getremotesubkey 2159 KRB5_PROTOTYPE((krb5_context, 2160 krb5_auth_context, 2161 krb5_keyblock FAR * FAR *)); 2162 2163#define KRB5_REALM_BRANCH_CHAR '.' 2164 2165/* 2166 * end "func-proto.h" 2167 */ 2168 2169/* 2170 * begin stuff from libos.h 2171 */ 2172 2173KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_read_password 2174 KRB5_PROTOTYPE((krb5_context, 2175 const char FAR *, 2176 const char FAR *, 2177 char FAR *, 2178 int FAR * )); 2179krb5_error_code krb5_aname_to_localname 2180 KRB5_PROTOTYPE((krb5_context, 2181 krb5_const_principal, 2182 const int, 2183 char * )); 2184KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_host_realm 2185 KRB5_PROTOTYPE((krb5_context, 2186 const char FAR *, 2187 char FAR * FAR * FAR * )); 2188KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_free_host_realm 2189 KRB5_PROTOTYPE((krb5_context, 2190 char FAR * const FAR * )); 2191KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_realm_domain 2192 KRB5_PROTOTYPE((krb5_context, 2193 const char *, 2194 char ** )); 2195KRB5_DLLIMP krb5_boolean KRB5_CALLCONV krb5_kuserok 2196 KRB5_PROTOTYPE((krb5_context, 2197 krb5_principal, const char *)); 2198KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_genaddrs 2199 KRB5_PROTOTYPE((krb5_context, 2200 krb5_auth_context, 2201 int, int)); 2202krb5_error_code krb5_gen_portaddr 2203 KRB5_PROTOTYPE((krb5_context, 2204 const krb5_address *, 2205 krb5_const_pointer, 2206 krb5_address **)); 2207krb5_error_code krb5_make_fulladdr 2208 KRB5_PROTOTYPE((krb5_context, 2209 krb5_address *, 2210 krb5_address *, 2211 krb5_address *)); 2212 2213krb5_error_code krb5_os_hostaddr 2214 KRB5_PROTOTYPE((krb5_context, const char *, krb5_address ***)); 2215 2216krb5_error_code krb5_set_real_time 2217 KRB5_PROTOTYPE((krb5_context, krb5_int32, krb5_int32)); 2218krb5_error_code krb5_set_debugging_time 2219 KRB5_PROTOTYPE((krb5_context, krb5_int32, krb5_int32)); 2220krb5_error_code krb5_use_natural_time 2221 KRB5_PROTOTYPE((krb5_context)); 2222krb5_error_code krb5_get_time_offsets 2223 KRB5_PROTOTYPE((krb5_context, krb5_int32 *, krb5_int32 *)); 2224krb5_error_code krb5_set_time_offsets 2225 KRB5_PROTOTYPE((krb5_context, krb5_int32, krb5_int32)); 2226 2227/* str_conv.c */ 2228KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_enctype 2229 KRB5_PROTOTYPE((char FAR *, krb5_enctype FAR *)); 2230KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_salttype 2231 KRB5_PROTOTYPE((char FAR *, krb5_int32 FAR *)); 2232KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_cksumtype 2233 KRB5_PROTOTYPE((char FAR *, krb5_cksumtype FAR *)); 2234KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_timestamp 2235 KRB5_PROTOTYPE((char FAR *, krb5_timestamp FAR *)); 2236KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_deltat 2237 KRB5_PROTOTYPE((char FAR *, krb5_deltat FAR *)); 2238KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_enctype_to_string 2239 KRB5_PROTOTYPE((krb5_enctype, char FAR *, size_t)); 2240KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_salttype_to_string 2241 KRB5_PROTOTYPE((krb5_int32, char FAR *, size_t)); 2242KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cksumtype_to_string 2243 KRB5_PROTOTYPE((krb5_cksumtype, char FAR *, size_t)); 2244KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_timestamp_to_string 2245 KRB5_PROTOTYPE((krb5_timestamp, char FAR *, size_t)); 2246KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_timestamp_to_sfstring 2247 KRB5_PROTOTYPE((krb5_timestamp, char FAR *, size_t, char FAR *)); 2248KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_deltat_to_string 2249 KRB5_PROTOTYPE((krb5_deltat, char FAR *, size_t)); 2250 2251 2252 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 2256 2257/* flags for recvauth */ 2258#define KRB5_RECVAUTH_SKIP_VERSION 0x0001 2259#define KRB5_RECVAUTH_BADAUTHVERS 0x0002 2260/* initial ticket api functions */ 2261 2262typedef struct _krb5_prompt { 2263 char *prompt; 2264 int hidden; 2265 krb5_data *reply; 2266} krb5_prompt; 2267 2268typedef krb5_error_code (KRB5_CALLCONV *krb5_prompter_fct)(krb5_context context, 2269 void *data, 2270 const char *name, 2271 const char *banner, 2272 int num_prompts, 2273 krb5_prompt prompts[]); 2274 2275 2276KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 2277krb5_prompter_posix 2278KRB5_PROTOTYPE((krb5_context context, 2279 void *data, 2280 const char *name, 2281 const char *banner, 2282 int num_prompts, 2283 krb5_prompt prompts[])); 2284 2285typedef struct _krb5_get_init_creds_opt { 2286 krb5_flags flags; 2287 krb5_deltat tkt_life; 2288 krb5_deltat renew_life; 2289 int forwardable; 2290 int proxiable; 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; 2296 krb5_data *salt; 2297} krb5_get_init_creds_opt; 2298 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 2307 2308 2309KRB5_DLLIMP void KRB5_CALLCONV 2310krb5_get_init_creds_opt_init 2311KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt)); 2312 2313KRB5_DLLIMP void KRB5_CALLCONV 2314krb5_get_init_creds_opt_set_tkt_life 2315KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt, 2316 krb5_deltat tkt_life)); 2317 2318KRB5_DLLIMP void KRB5_CALLCONV 2319krb5_get_init_creds_opt_set_renew_life 2320KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt, 2321 krb5_deltat renew_life)); 2322 2323KRB5_DLLIMP void KRB5_CALLCONV 2324krb5_get_init_creds_opt_set_forwardable 2325KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt, 2326 int forwardable)); 2327 2328KRB5_DLLIMP void KRB5_CALLCONV 2329krb5_get_init_creds_opt_set_proxiable 2330KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt, 2331 int proxiable)); 2332 2333KRB5_DLLIMP void KRB5_CALLCONV 2334krb5_get_init_creds_opt_set_etype_list 2335KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt, 2336 krb5_enctype *etype_list, 2337 int etype_list_length)); 2338 2339KRB5_DLLIMP void KRB5_CALLCONV 2340krb5_get_init_creds_opt_set_address_list 2341KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt, 2342 krb5_address **addresses)); 2343 2344KRB5_DLLIMP void KRB5_CALLCONV 2345krb5_get_init_creds_opt_set_preauth_list 2346KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt, 2347 krb5_preauthtype *preauth_list, 2348 int preauth_list_length)); 2349 2350KRB5_DLLIMP void KRB5_CALLCONV 2351krb5_get_init_creds_opt_set_salt 2352KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt, 2353 krb5_data *salt)); 2354 2355KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 2356krb5_get_init_creds_password 2357KRB5_PROTOTYPE((krb5_context context, 2358 krb5_creds *creds, 2359 krb5_principal client, 2360 char *password, 2361 krb5_prompter_fct prompter, 2362 void *data, 2363 krb5_deltat start_time, 2364 char *in_tkt_service, 2365 krb5_get_init_creds_opt *options)); 2366 2367KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 2368krb5_get_init_creds_keytab 2369KRB5_PROTOTYPE((krb5_context context, 2370 krb5_creds *creds, 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)); 2376 2377typedef struct _krb5_verify_init_creds_opt { 2378 krb5_flags flags; 2379 int ap_req_nofail; 2380} krb5_verify_init_creds_opt; 2381 2382#define KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL 0x0001 2383 2384KRB5_DLLIMP void KRB5_CALLCONV 2385krb5_verify_init_creds_opt_init 2386KRB5_PROTOTYPE((krb5_verify_init_creds_opt *options)); 2387KRB5_DLLIMP void KRB5_CALLCONV 2388krb5_verify_init_creds_opt_set_ap_req_nofail 2389KRB5_PROTOTYPE((krb5_verify_init_creds_opt *options, 2390 int ap_req_nofail)); 2391 2392KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 2393krb5_verify_init_creds 2394KRB5_PROTOTYPE((krb5_context context, 2395 krb5_creds *creds, 2396 krb5_principal ap_req_server, 2397 krb5_keytab ap_req_keytab, 2398 krb5_ccache *ccache, 2399 krb5_verify_init_creds_opt *options)); 2400 2401KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 2402krb5_get_validated_creds 2403KRB5_PROTOTYPE((krb5_context context, 2404 krb5_creds *creds, 2405 krb5_principal client, 2406 krb5_ccache ccache, 2407 char *in_tkt_service)); 2408 2409KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 2410krb5_get_renewed_creds 2411KRB5_PROTOTYPE((krb5_context context, 2412 krb5_creds *creds, 2413 krb5_principal client, 2414 krb5_ccache ccache, 2415 char *in_tkt_service)); 2416 2417KRB5_DLLIMP krb5_error_code KRB5_CALLCONV 2418krb5_decode_ticket 2419KRB5_PROTOTYPE((const krb5_data *code, 2420 krb5_ticket **rep)); 2421 2422KRB5_DLLIMP void KRB5_CALLCONV 2423krb5_appdefault_string 2424KRB5_PROTOTYPE((krb5_context context, 2425 const char *appname, 2426 const krb5_data *realm, 2427 const char *option, 2428 const char *default_value, 2429 char ** ret_value)); 2430 2431KRB5_DLLIMP void KRB5_CALLCONV 2432krb5_appdefault_boolean 2433KRB5_PROTOTYPE((krb5_context context, 2434 const char *appname, 2435 const krb5_data *realm, 2436 const char *option, 2437 int default_value, 2438 int *ret_value)); 2439 2440/* 2441 * The realm iterator functions 2442 */ 2443 2444KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_realm_iterator_create 2445 KRB5_PROTOTYPE((krb5_context context, void **iter_p)); 2446 2447KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_realm_iterator 2448 KRB5_PROTOTYPE((krb5_context context, void **iter_p, char **ret_realm)); 2449 2450KRB5_DLLIMP void KRB5_CALLCONV krb5_realm_iterator_free 2451 KRB5_PROTOTYPE((krb5_context context, void **iter_p)); 2452 2453KRB5_DLLIMP void KRB5_CALLCONV krb5_free_realm_string 2454 KRB5_PROTOTYPE((krb5_context context, char *str)); 2455 2456/* 2457 * Prompter enhancements 2458 */ 2459 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 2464 2465typedef krb5_int32 krb5_prompt_type; 2466 2467KRB5_DLLIMP krb5_prompt_type* KRB5_CALLCONV krb5_get_prompt_types 2468 KRB5_PROTOTYPE((krb5_context context)); 2469 2470/* Macintosh CFM-68K magic incantation */ 2471#if PRAGMA_STRUCT_ALIGN 2472 #pragma options align=reset 2473#elif PRAGMA_STRUCT_PACKPUSH 2474 #pragma pack(pop) 2475#elif PRAGMA_STRUCT_PACK 2476 #pragma pack() 2477#endif 2478 2479#ifdef PRAGMA_IMPORT_OFF 2480#pragma import off 2481#elif PRAGMA_IMPORT 2482#pragma import reset 2483#endif 2484 2485#ifdef __cplusplus 2486} 2487#endif /* __cplusplus */ 2488 2489#endif /* KRB5_GENERAL__ */ 2490 2491/* 2492 * :::MITKerberosLib:GSSKerberos5Sources_9:include:krb5_err.h: 2493 * This file is automatically generated; please do not edit it. 2494 */ 2495 2496#if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__)) 2497#include <KerberosComErr/KerberosComErr.h> 2498#else 2499#include <com_err.h> 2500#endif 2501 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) 2739 2740extern struct error_table et_krb5_error_table; 2741 2742#if (defined(unix) || defined(_AIX)) && !(defined(__MACH__) && defined(__APPLE__)) 2743/* for compatibility with older versions... */ 2744extern void initialize_krb5_error_table (); 2745#define init_krb5_err_tbl initialize_krb5_error_table 2746#define krb5_err_base ERROR_TABLE_BASE_krb5 2747#else 2748#define initialize_krb5_error_table() 2749#endif 2750/* 2751 * :::MITKerberosLib:GSSKerberos5Sources_9:include:kdb5_err.h: 2752 * This file is automatically generated; please do not edit it. 2753 */ 2754 2755#if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__)) 2756#include <KerberosComErr/KerberosComErr.h> 2757#else 2758#include <com_err.h> 2759#endif 2760 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) 2789 2790extern struct error_table et_kdb5_error_table; 2791 2792#if (defined(unix) || defined(_AIX)) && !(defined(__MACH__) && defined(__APPLE__)) 2793/* for compatibility with older versions... */ 2794extern void initialize_kdb5_error_table (); 2795#define init_kdb5_err_tbl initialize_kdb5_error_table 2796#define kdb5_err_base ERROR_TABLE_BASE_kdb5 2797#else 2798#define initialize_kdb5_error_table() 2799#endif 2800/* 2801 * :::MITKerberosLib:GSSKerberos5Sources_9:include:kv5m_err.h: 2802 * This file is automatically generated; please do not edit it. 2803 */ 2804 2805#if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__)) 2806#include <KerberosComErr/KerberosComErr.h> 2807#else 2808#include <com_err.h> 2809#endif 2810 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) 2866 2867extern struct error_table et_kv5m_error_table; 2868 2869#if (defined(unix) || defined(_AIX)) && !(defined(__MACH__) && defined(__APPLE__)) 2870/* for compatibility with older versions... */ 2871extern void initialize_kv5m_error_table (); 2872#define init_kv5m_err_tbl initialize_kv5m_error_table 2873#define kv5m_err_base ERROR_TABLE_BASE_kv5m 2874#else 2875#define initialize_kv5m_error_table() 2876#endif 2877/* 2878 * :::MITKerberosLib:GSSKerberos5Sources_9:include:asn1_err.h: 2879 * This file is automatically generated; please do not edit it. 2880 */ 2881 2882#if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__)) 2883#include <KerberosComErr/KerberosComErr.h> 2884#else 2885#include <com_err.h> 2886#endif 2887 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) 2902 2903extern struct error_table et_asn1_error_table; 2904 2905#if (defined(unix) || defined(_AIX)) && !(defined(__MACH__) && defined(__APPLE__)) 2906/* for compatibility with older versions... */ 2907extern void initialize_asn1_error_table (); 2908#define init_asn1_err_tbl initialize_asn1_error_table 2909#define asn1_err_base ERROR_TABLE_BASE_asn1 2910#else 2911#define initialize_asn1_error_table() 2912#endif 2913