1 /* 2 * krb-sed.h 3 * 4 * Copyright 1987, 1988 by the Massachusetts Institute of Technology. 5 * 6 * For copying and distribution information, please see the file 7 * <mit-copyright.h>. 8 * 9 * External defintions for the Kerberos library. Internal definitions 10 * (visible to Kerberos library source files) are in kerberos.h. 11 */ 12 13 /* Only one time, please */ 14 #ifndef KRB_H 15 #define KRB_H 16 17 /* Kerberos 4 Error Codes: */ 18 #define KSUCCESS 0 19 #define KFAILURE 255 20 21 #define KRB_NEVERDATE (0xFFFFFFFFUL) 22 23 /* Error codes returned from the KDC */ 24 #define KDC_OK 0 /* Request OK */ 25 #define KDC_NAME_EXP 1 /* Principal expired */ 26 #define KDC_SERVICE_EXP 2 /* Service expired */ 27 #define KDC_AUTH_EXP 3 /* Auth expired */ 28 #define KDC_PKT_VER 4 /* Protocol version unknown */ 29 #define KDC_P_MKEY_VER 5 /* Wrong master key version */ 30 #define KDC_S_MKEY_VER 6 /* Wrong master key version */ 31 #define KDC_BYTE_ORDER 7 /* Byte order unknown */ 32 #define KDC_PR_UNKNOWN 8 /* Principal unknown */ 33 #define KDC_PR_N_UNIQUE 9 /* Principal not unique */ 34 #define KDC_NULL_KEY 10 /* Principal has null key */ 35 #define KDC_GEN_ERR 20 /* Generic error from KDC */ 36 37 38 /* Values returned by get_credentials */ 39 #define GC_OK 0 /* Retrieve OK */ 40 #define RET_OK 0 /* Retrieve OK */ 41 #define GC_TKFIL 21 /* Can't read ticket file */ 42 #define RET_TKFIL 21 /* Can't read ticket file */ 43 #define GC_NOTKT 22 /* Can't find ticket or TGT */ 44 #define RET_NOTKT 22 /* Can't find ticket or TGT */ 45 46 47 /* Values returned by mk_ap_req */ 48 #define MK_AP_OK 0 /* Success */ 49 #define MK_AP_TGTEXP 26 /* TGT Expired */ 50 51 /* Values returned by rd_ap_req */ 52 #define RD_AP_OK 0 /* Request authentic */ 53 #define RD_AP_UNDEC 31 /* Can't decode authenticator */ 54 #define RD_AP_EXP 32 /* Ticket expired */ 55 #define RD_AP_NYV 33 /* Ticket not yet valid */ 56 #define RD_AP_REPEAT 34 /* Repeated request */ 57 #define RD_AP_NOT_US 35 /* The ticket isn't for us */ 58 #define RD_AP_INCON 36 /* Request is inconsistent */ 59 #define RD_AP_TIME 37 /* delta_t too big */ 60 #define RD_AP_BADD 38 /* Incorrect net address */ 61 #define RD_AP_VERSION 39 /* protocol version mismatch */ 62 #define RD_AP_MSG_TYPE 40 /* invalid msg type */ 63 #define RD_AP_MODIFIED 41 /* message stream modified */ 64 #define RD_AP_ORDER 42 /* message out of order */ 65 #define RD_AP_UNAUTHOR 43 /* unauthorized request */ 66 67 /* Values returned by get_pw_tkt */ 68 #define GT_PW_OK 0 /* Got password changing tkt */ 69 #define GT_PW_NULL 51 /* Current PW is null */ 70 #define GT_PW_BADPW 52 /* Incorrect current password */ 71 #define GT_PW_PROT 53 /* Protocol Error */ 72 #define GT_PW_KDCERR 54 /* Error returned by KDC */ 73 #define GT_PW_NULLTKT 55 /* Null tkt returned by KDC */ 74 75 76 /* Values returned by send_to_kdc */ 77 #define SKDC_OK 0 /* Response received */ 78 #define SKDC_RETRY 56 /* Retry count exceeded */ 79 #define SKDC_CANT 57 /* Can't send request */ 80 81 /* 82 * Values returned by get_in_tkt 83 * (can also return SKDC_* and KDC errors) 84 */ 85 86 #define INTK_OK 0 /* Ticket obtained */ 87 #define INTK_PW_NULL 51 /* Current PW is null */ 88 #define INTK_W_NOTALL 61 /* Not ALL tickets returned */ 89 #define INTK_BADPW 62 /* Incorrect password */ 90 #define INTK_PROT 63 /* Protocol Error */ 91 #define INTK_ERR 70 /* Other error */ 92 93 /* Values returned by get_adtkt */ 94 #define AD_OK 0 /* Ticket Obtained */ 95 #define AD_NOTGT 71 /* Don't have tgt */ 96 97 /* Error codes returned by ticket file utilities */ 98 #define NO_TKT_FIL 76 /* No ticket file found */ 99 #define TKT_FIL_ACC 77 /* Couldn't access tkt file */ 100 #define TKT_FIL_LCK 78 /* Couldn't lock ticket file */ 101 #define TKT_FIL_FMT 79 /* Bad ticket file format */ 102 #define TKT_FIL_INI 80 /* tf_init not called first */ 103 104 /* Error code returned by kparse_name */ 105 #define KNAME_FMT 81 /* Bad Kerberos name format */ 106 107 /* Error code returned by krb_mk_safe */ 108 #define SAFE_PRIV_ERROR -1 /* syscall error */ 109 110 #define KADM_RCSID (-1783126272) 111 #define KADM_NO_REALM (-1783126271) 112 #define KADM_NO_CRED (-1783126270) 113 #define KADM_BAD_KEY (-1783126269) 114 #define KADM_NO_ENCRYPT (-1783126268) 115 #define KADM_NO_AUTH (-1783126267) 116 #define KADM_WRONG_REALM (-1783126266) 117 #define KADM_NO_ROOM (-1783126265) 118 #define KADM_BAD_VER (-1783126264) 119 #define KADM_BAD_CHK (-1783126263) 120 #define KADM_NO_READ (-1783126262) 121 #define KADM_NO_OPCODE (-1783126261) 122 #define KADM_NO_HOST (-1783126260) 123 #define KADM_UNK_HOST (-1783126259) 124 #define KADM_NO_SERV (-1783126258) 125 #define KADM_NO_SOCK (-1783126257) 126 #define KADM_NO_CONN (-1783126256) 127 #define KADM_NO_HERE (-1783126255) 128 #define KADM_NO_MAST (-1783126254) 129 #define KADM_NO_VERI (-1783126253) 130 #define KADM_INUSE (-1783126252) 131 #define KADM_UK_SERROR (-1783126251) 132 #define KADM_UK_RERROR (-1783126250) 133 #define KADM_UNAUTH (-1783126249) 134 #define KADM_DATA (-1783126248) 135 #define KADM_NOENTRY (-1783126247) 136 #define KADM_NOMEM (-1783126246) 137 #define KADM_NO_HOSTNAME (-1783126245) 138 #define KADM_NO_BIND (-1783126244) 139 #define KADM_LENGTH_ERROR (-1783126243) 140 #define KADM_ILL_WILDCARD (-1783126242) 141 #define KADM_DB_INUSE (-1783126241) 142 #define KADM_INSECURE_PW (-1783126240) 143 #define KADM_PW_MISMATCH (-1783126239) 144 #define KADM_NOT_SERV_PRINC (-1783126238) 145 146 #ifndef rez /* This stuff will confuse rez */ 147 148 #if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__)) 149 #include <KerberosSupport/KerberosSupport.h> 150 #endif 151 152 #if TARGET_OS_MAC 153 #include <KerberosDES/KerberosDES.h> 154 #include <KerberosProfile/KerberosProfile.h> 155 #else 156 #include <des.h> 157 #include <profile.h> 158 #endif 159 160 #if TARGET_API_MAC_OSX 161 #include <sys/types.h> 162 #include <sys/socket.h> 163 #include <netinet/in.h> 164 #else 165 struct sockaddr_in; 166 #endif 167 168 #if TARGET_API_MAC_OSX && TARGET_API_MAC_CARBON 169 #include <CoreServices/CoreServices.h> 170 #elif TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON 171 #include <Files.h> 172 #else 173 #error "Unknown OS" 174 #endif 175 176 #ifdef __cplusplus 177 extern "C" { 178 #endif /* __cplusplus */ 179 180 #if PRAGMA_IMPORT 181 # pragma import on 182 #endif 183 184 #if PRAGMA_STRUCT_ALIGN 185 #pragma options align=mac68k 186 #elif PRAGMA_STRUCT_PACKPUSH 187 #pragma pack(push, 2) 188 #elif PRAGMA_STRUCT_PACK 189 #pragma pack(2) 190 #endif 191 192 #if PRAGMA_ENUM_ALWAYSINT 193 #pragma enumsalwaysint on 194 #endif 195 196 #if TARGET_CPU_68K 197 #pragma fourbyteints on 198 #endif 199 200 #if !defined(PROTOTYPE) 201 #if defined(__STDC__) || defined(__cplusplus) || defined(_MSDOS) || defined(_WIN32) 202 #define PROTOTYPE(x) x 203 #else 204 #define PROTOTYPE(x) () 205 #endif 206 #endif 207 208 #define INTERFACE /* No special declaration?? FIXME. */ 209 #define FAR 210 211 /* Sizes of types we need */ 212 #ifndef KRB_INT32 213 #define KRB_INT32 SInt32 214 #endif 215 #ifndef KRB_UINT32 216 #define KRB_UINT32 UInt32 217 #endif 218 219 /* The maximum sizes for aname, realm, sname, and instance +1 */ 220 #define ANAME_SZ 40 221 #define REALM_SZ 40 222 #define SNAME_SZ 40 223 #define INST_SZ 40 224 /* include space for '.' and '@' */ 225 #define MAX_K_NAME_SZ (ANAME_SZ + INST_SZ + REALM_SZ + 2) 226 #define KKEY_SZ 100 227 #define VERSION_SZ 1 228 #define MSG_TYPE_SZ 1 229 #define DATE_SZ 26 /* RTI date output */ 230 231 #ifndef DEFAULT_TKT_LIFE /* allow compile-time override */ 232 #define DEFAULT_TKT_LIFE 120 /* default lifetime 10 hrs */ 233 #endif 234 235 #define TICKET_GRANTING_TICKET "krbtgt" 236 237 /* Definition of text structure used to pass text around */ 238 #define MAX_KTXT_LEN 1250 239 240 struct ktext { 241 int length; /* Length of the text */ 242 unsigned char dat[MAX_KTXT_LEN]; /* The data itself */ 243 unsigned long mbz; /* zero to catch runaway strings */ 244 }; 245 246 typedef struct ktext *KTEXT; 247 typedef struct ktext KTEXT_ST; 248 249 250 /* Definitions for send_to_kdc */ 251 #define CLIENT_KRB_TIMEOUT 4 /* time between retries */ 252 #define CLIENT_KRB_RETRY 5 /* retry this many times */ 253 #define CLIENT_KRB_BUFLEN 512 /* max unfragmented packet */ 254 255 /* Definitions for ticket file utilities */ 256 #define R_TKT_FIL 0 257 #define W_TKT_FIL 1 258 259 /* Structure definition for rd_ap_req */ 260 261 struct auth_dat { 262 unsigned char k_flags; /* Flags from ticket */ 263 char pname[ANAME_SZ]; /* Principal's name */ 264 char pinst[INST_SZ]; /* His Instance */ 265 char prealm[REALM_SZ]; /* His Realm */ 266 KRB_UINT32 checksum; /* Data checksum (opt) */ 267 C_Block session; /* Session Key */ 268 int life; /* Life of ticket */ 269 KRB_UINT32 time_sec; /* Time ticket issued */ 270 KRB_UINT32 address; /* Address in ticket */ 271 KTEXT_ST reply; /* Auth reply (opt) */ 272 }; 273 274 typedef struct auth_dat AUTH_DAT; 275 276 /* Structure definition for credentials returned by get_cred */ 277 278 struct credentials { 279 char service[ANAME_SZ]; /* Service name */ 280 char instance[INST_SZ]; /* Instance */ 281 char realm[REALM_SZ]; /* Auth domain */ 282 C_Block session; /* Session key */ 283 int lifetime; /* Lifetime */ 284 int kvno; /* Key version number */ 285 KTEXT_ST ticket_st; /* The ticket itself */ 286 long issue_date; /* The issue time */ 287 char pname[ANAME_SZ]; /* Principal's name */ 288 char pinst[INST_SZ]; /* Principal's instance */ 289 KRB_UINT32 address; /* Address in ticket */ 290 KRB_UINT32 stk_type; /* string_to_key function needed */ 291 }; 292 293 typedef struct credentials CREDENTIALS; 294 295 /* Structure definition for rd_private_msg and rd_safe_msg */ 296 297 struct msg_dat { 298 unsigned char *app_data; /* pointer to appl data */ 299 KRB_UINT32 app_length; /* length of appl data */ 300 unsigned long hash; /* hash to lookup replay */ 301 int swap; /* swap bytes? */ 302 KRB_INT32 time_sec; /* msg timestamp seconds */ 303 unsigned char time_5ms; /* msg timestamp 5ms units */ 304 }; 305 306 typedef struct msg_dat MSG_DAT; 307 308 309 /* Location of default ticket file for save_cred and get_cred */ 310 #ifndef TKT_FILE 311 #define TKT_FILE tkt_string() 312 #endif /* TKT_FILE */ 313 314 /* Defines for krb_sendauth, krb_mk_auth, krb_check_auth, and krb_recvauth */ 315 316 #define KOPT_DONT_MK_REQ 0x00000001 /* don't call krb_mk_req */ 317 #define KOPT_DO_MUTUAL 0x00000002 /* do mutual auth */ 318 319 #define KOPT_DONT_CANON 0x00000004 /* 320 * don't canonicalize inst as 321 * a hostname 322 */ 323 324 #define KRB_SENDAUTH_VLEN 8 /* length for version strings */ 325 326 #ifdef ATHENA_COMPAT 327 #define KOPT_DO_OLDSTYLE 0x00000008 /* use the old-style protocol */ 328 #endif /* ATHENA_COMPAT */ 329 330 /* Constants for KerberosProfileLib */ 331 #define REALMS_V4_PROF_REALMS_SECTION "v4 realms" 332 #define REALMS_V4_PROF_KDC "kdc" 333 #define REALMS_V4_PROF_ADMIN_KDC "admin_server" 334 #define REALMS_V4_PROF_KPASSWD_KDC "kpasswd_server" 335 #define REALMS_V4_PROF_DOMAIN_SECTION "v4 domain_realm" 336 #define REALMS_V4_PROF_LIBDEFAULTS_SECTION "libdefaults" 337 #define REALMS_V4_PROF_LOCAL_REALM "default_realm" 338 #define REALMS_V4_PROF_STK "string_to_key_type" 339 #define REALMS_V4_MIT_STK "mit_string_to_key" 340 #define REALMS_V4_AFS_STK "afs_string_to_key" 341 #define REALMS_V4_COLUMBIA_STK "columbia_string_to_key" 342 #define REALMS_V4_DEFAULT_REALM "default_realm" 343 #define REALMS_V4_NO_ADDRESSES "noaddresses" 344 345 /* Define a couple of function types including parameters. These 346 are needed on MS-Windows to convert arguments of the function pointers 347 to the proper types during calls. */ 348 typedef int (*key_proc_type) PROTOTYPE ((char *, char *, char *, 349 char *, C_Block)); 350 typedef int (*decrypt_tkt_type) PROTOTYPE ((char *, char *, char *, char *, 351 key_proc_type, KTEXT *)); 352 #define KEY_PROC_TYPE_DEFINED 353 #define DECRYPT_TKT_TYPE_DEFINED 354 355 356 /******************************************/ 357 /*** EXPORTED FUNTIONS (by source file) ***/ 358 /******************************************/ 359 360 /* change_password.c */ 361 extern int INTERFACE 362 krb_change_password PROTOTYPE ((char *, char *, char *, char *, char *)); 363 364 /* decomp_tkt.c */ 365 extern int INTERFACE 366 decomp_ticket PROTOTYPE ((KTEXT, unsigned char *, char *, char *, char *, KRB_UINT32 *, C_Block, 367 int *, KRB_UINT32 *, char *, char *, C_Block, Key_schedule)); 368 369 /* err_txt.c */ 370 extern const char * INTERFACE 371 krb_get_err_text PROTOTYPE ((int)); 372 373 /* g_ad_tkt.c */ 374 extern int INTERFACE 375 get_ad_tkt PROTOTYPE ((char *service, char *sinstance, char *realm, int lifetime)); 376 377 /* g_in_tkt.c */ 378 extern int INTERFACE 379 krb_get_in_tkt PROTOTYPE ((char *, char *, char *, char *, char *, int, 380 key_proc_type, decrypt_tkt_type, char *arg)); 381 382 extern int INTERFACE 383 krb_get_in_tkt_creds PROTOTYPE ((char *, char *, char *, char *, char *, int, 384 key_proc_type, decrypt_tkt_type, char *, CREDENTIALS *)); 385 386 /* g_phost.c */ 387 extern char * INTERFACE 388 krb_get_phost PROTOTYPE ((char *)); 389 390 /* g_pw_in_tkt.c */ 391 extern int INTERFACE 392 krb_get_pw_in_tkt PROTOTYPE ((char *, char *, char *, 393 char *, char *, int, char *)); 394 395 extern int INTERFACE 396 krb_get_pw_in_tkt_creds PROTOTYPE ((char *, char *, char *, 397 char *, char *, int, char *, CREDENTIALS *)); 398 399 /* g_pw_tkt.c */ 400 extern int INTERFACE 401 get_pw_tkt PROTOTYPE ((char *, char *, char *, 402 char *)); 403 404 /* g_svc_in_tkt.c */ 405 extern int INTERFACE 406 krb_get_svc_in_tkt PROTOTYPE ((char *, char *, char *, 407 char *, char *, int, char *)); 408 409 #if TARGET_OS_MAC 410 extern int INTERFACE 411 FSp_krb_get_svc_in_tkt PROTOTYPE ((char *, char *, char *, 412 char *, char *, int, const FSSpec *)); 413 #endif 414 415 /* g_tkt_svc.c */ 416 extern int INTERFACE 417 krb_get_ticket_for_service PROTOTYPE ((char *, char *, 418 KRB_UINT32 *, int, des_cblock, Key_schedule, 419 char *, int)); 420 421 /* kname_parse.c */ 422 int k_isname (const char *s); 423 int k_isinst (const char *s); 424 int k_isrealm (const char *s); 425 int kname_parse (char *, char *, char *, const char *); 426 int kname_unparse (char *, const char *, const char *, const char *); 427 428 /* lifetime.c */ 429 KRB5_DLLIMP UInt32 KRB5_CALLCONV krb_life_to_time 430 PROTOTYPE((UInt32 start, int life)); 431 KRB5_DLLIMP int KRB5_CALLCONV krb_time_to_life 432 PROTOTYPE((UInt32 start, UInt32 end)); 433 434 /* mk_auth.c */ 435 extern int INTERFACE 436 krb_check_auth PROTOTYPE ((KTEXT, KRB_UINT32, MSG_DAT *, 437 C_Block FAR, Key_schedule, struct sockaddr_in *, 438 struct sockaddr_in *)); 439 440 extern int INTERFACE 441 krb_mk_auth PROTOTYPE ((long, KTEXT, char *, char *, char *, 442 KRB_UINT32, char *, KTEXT)); 443 444 /* mk_err.c */ 445 extern long INTERFACE 446 krb_mk_err PROTOTYPE ((unsigned char *, KRB_INT32, char *)); 447 448 /* mk_priv.c */ 449 extern long INTERFACE 450 krb_mk_priv PROTOTYPE ((unsigned char *, unsigned char *, KRB_UINT32, 451 Key_schedule FAR, C_Block, struct sockaddr_in *, struct sockaddr_in *)); 452 453 /* mk_req.c */ 454 extern int INTERFACE 455 krb_mk_req PROTOTYPE ((KTEXT, char *, char *, char *, KRB_INT32)); 456 457 extern int INTERFACE 458 krb_mk_req_creds PROTOTYPE ((register KTEXT, CREDENTIALS *, KRB_INT32)); 459 460 int 461 krb_set_lifetime(int newval); 462 463 /* mk_safe.c */ 464 extern long INTERFACE 465 krb_mk_safe PROTOTYPE ((unsigned char *, unsigned char *, 466 KRB_UINT32, C_Block, struct sockaddr_in *, 467 struct sockaddr_in *)); 468 469 /* rd_err.c */ 470 extern int INTERFACE 471 krb_rd_err PROTOTYPE ((unsigned char *, unsigned long, long *, MSG_DAT *)); 472 473 /* rd_priv.c */ 474 extern long INTERFACE 475 krb_rd_priv PROTOTYPE ((unsigned char *, KRB_UINT32, 476 Key_schedule FAR, C_Block, struct sockaddr_in *, 477 struct sockaddr_in *, MSG_DAT *)); 478 479 /* rd_req.c */ 480 extern int INTERFACE 481 krb_rd_req PROTOTYPE ((KTEXT, char *, char *, 482 KRB_UINT32, AUTH_DAT *, char *)); 483 484 /* rd_req_int.c */ 485 extern int INTERFACE 486 krb_rd_req_int PROTOTYPE ((KTEXT, char *, char *, 487 KRB_UINT32, AUTH_DAT *, C_Block)); 488 489 /* rd_svc_key.c */ 490 extern int INTERFACE 491 read_service_key PROTOTYPE ((char *, char *, char *, int, char *, char *)); 492 493 #if TARGET_OS_MAC 494 extern int INTERFACE 495 FSp_read_service_key PROTOTYPE ((char *, char *, char *, int, const FSSpec*, char *)); 496 #endif 497 498 /* rd_safe.c */ 499 extern long INTERFACE 500 krb_rd_safe PROTOTYPE ((unsigned char *, KRB_UINT32, 501 C_Block, struct sockaddr_in *, struct sockaddr_in *, MSG_DAT *)); 502 503 /* recvauth.c */ 504 extern int INTERFACE 505 krb_recvauth PROTOTYPE ((long, int, KTEXT, char *, char *, 506 struct sockaddr_in *, struct sockaddr_in *, 507 AUTH_DAT *, char *, Key_schedule FAR, char *)); 508 509 /* sendauth.c */ 510 extern int INTERFACE 511 krb_sendauth PROTOTYPE ((long, int, KTEXT, char *, char *, char *, 512 KRB_UINT32, MSG_DAT *, CREDENTIALS *, Key_schedule, 513 struct sockaddr_in *, struct sockaddr_in *, char *)); 514 515 /* CCache-glue.c */ 516 extern int INTERFACE 517 krb_get_tf_realm PROTOTYPE ((const char *, char *)); 518 519 extern int INTERFACE 520 krb_get_tf_fullname PROTOTYPE ((char *, char *, char *, 521 char *)); 522 523 extern int INTERFACE 524 krb_get_cred PROTOTYPE ((char *, char *, char *, CREDENTIALS *)); 525 526 extern const char * INTERFACE 527 tkt_string PROTOTYPE ((void)); 528 529 extern void INTERFACE 530 krb_set_tkt_string PROTOTYPE ((const char *)); 531 532 extern int INTERFACE 533 dest_tkt PROTOTYPE ((void)); 534 535 #if TARGET_OS_MAC 536 /* The following functions are not part of the standard Kerberos v4 API. 537 * They were created for Mac implementation, and used by admin tools 538 * such as CNS-Config. */ 539 extern int INTERFACE 540 krb_get_num_cred PROTOTYPE ((void)); 541 542 extern int INTERFACE 543 krb_get_nth_cred PROTOTYPE ((char *, char *, char *, int)); 544 545 extern int INTERFACE 546 krb_delete_cred PROTOTYPE ((char *, char *,char *)); 547 548 extern int INTERFACE 549 dest_all_tkts PROTOTYPE ((void)); 550 551 #endif /* TARGET_OS_MAC */ 552 553 /* RealmConfig-glue.c */ 554 extern int INTERFACE 555 krb_get_profile PROTOTYPE ((profile_t* profile)); 556 557 extern int INTERFACE 558 krb_get_lrealm PROTOTYPE ((char *, int)); 559 560 extern int INTERFACE 561 krb_get_admhst PROTOTYPE ((char *, char *, int)); 562 563 extern int INTERFACE 564 krb_get_krbhst PROTOTYPE ((char *, const char *, int)); 565 566 extern char * INTERFACE 567 krb_realmofhost PROTOTYPE ((char *)); 568 569 extern int INTERFACE 570 put_svc_key PROTOTYPE ((char *, char *, char *, char *, int, char *)); 571 572 #if TARGET_API_MAC_CARBON || TARGET_API_MAC_OS8 573 extern int INTERFACE 574 FSp_put_svc_key PROTOTYPE ((const FSSpec *, char *, char *, char *, int, char *)); 575 #endif 576 577 578 #if TARGET_CPU_68K 579 #pragma fourbyteints reset 580 #endif 581 582 #if PRAGMA_ENUM_ALWAYSINT 583 #pragma enumsalwaysint reset 584 #endif 585 586 #if PRAGMA_STRUCT_ALIGN 587 #pragma options align=reset 588 #elif PRAGMA_STRUCT_PACKPUSH 589 #pragma pack(pop) 590 #elif PRAGMA_STRUCT_PACK 591 #pragma pack() 592 #endif 593 594 #if PRAGMA_IMPORT 595 # pragma import reset 596 #endif 597 598 #ifdef __cplusplus 599 } 600 #endif 601 602 #endif /* !rez */ 603 #endif /* KRB_H */ 604