1 /* 2 * $Source: /cvs/src/sasl/mac/kerberos_includes/prot.h,v $ 3 * $Author: rjs3 $ 4 * $Header: /cvs/src/sasl/mac/kerberos_includes/prot.h,v 1.2 2001/12/04 02:06:06 rjs3 Exp $ 5 * 6 * Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute 7 * of Technology. 8 * 9 * For copying and distribution information, please see the file 10 * <mit-copyright.h>. 11 * 12 * Include file with authentication protocol information. 13 */ 14 #ifndef _KERBEROS_PROT_H 15 #define _KERBEROS_PROT_H 16 17 #ifdef RUBBISH 18 #pragma ident "@(#)prot.h 1.3 92/07/14 SMI" 19 #endif 20 21 //#include <kerberos/mit-copyright.h> 22 #ifdef RUBBISH 23 #include <kerberos/krb_conf.h> 24 #endif 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 #define KRB_PORT 750 /* PC's don't have */ 31 /* /etc/services */ 32 #define KRB_PROT_VERSION 4 33 #define MAX_PKT_LEN 1000 34 #define MAX_TXT_LEN 1000 35 #define TICKET_GRANTING_TICKET "krbtgt" 36 37 /* Macro's to obtain various fields from a packet */ 38 39 #define pkt_version(packet) (unsigned int) *(packet->dat) 40 #define pkt_msg_type(packet) (unsigned int) *(packet->dat+1) 41 #define pkt_a_name(packet) (packet->dat+2) 42 #define pkt_a_inst(packet) \ 43 (packet->dat+3+strlen((char *)pkt_a_name(packet))) 44 #define pkt_a_realm(packet) \ 45 (pkt_a_inst(packet)+1+strlen((char *)pkt_a_inst(packet))) 46 47 /* Macro to obtain realm from application request */ 48 #define apreq_realm(auth) (auth->dat + 3) 49 50 #define pkt_time_ws(packet) (char *) \ 51 (packet->dat+5+strlen((char *)pkt_a_name(packet)) + \ 52 strlen((char *)pkt_a_inst(packet)) + \ 53 strlen((char *)pkt_a_realm(packet))) 54 55 #define pkt_no_req(packet) (unsigned short) \ 56 *(packet->dat+9+strlen((char *)pkt_a_name(packet)) + \ 57 strlen((char *)pkt_a_inst(packet)) + \ 58 strlen((char *)pkt_a_realm(packet))) 59 #define pkt_x_date(packet) (char *) \ 60 (packet->dat+10+strlen((char *)pkt_a_name(packet)) + \ 61 strlen((char *)pkt_a_inst(packet)) + \ 62 strlen((char *)pkt_a_realm(packet))) 63 #define pkt_err_code(packet) ((char *) \ 64 (packet->dat+9+strlen((char *)pkt_a_name(packet)) + \ 65 strlen((char *)pkt_a_inst(packet)) + \ 66 strlen((char *)pkt_a_realm(packet)))) 67 #define pkt_err_text(packet) \ 68 (packet->dat+13+strlen((char *)pkt_a_name(packet)) + \ 69 strlen((char *)pkt_a_inst(packet)) + \ 70 strlen((char *)pkt_a_realm(packet))) 71 72 /* Routines to create and read packets may be found in prot.c */ 73 74 #ifdef RUBBISH 75 KTEXT create_auth_reply(); 76 KTEXT create_death_packet(); 77 KTEXT pkt_cipher(); 78 #endif 79 80 /* Message types , always leave lsb for byte order */ 81 82 #define AUTH_MSG_KDC_REQUEST 1<<1 83 #define AUTH_MSG_KDC_REPLY 2<<1 84 #define AUTH_MSG_APPL_REQUEST 3<<1 85 #define AUTH_MSG_APPL_REQUEST_MUTUAL 4<<1 86 #define AUTH_MSG_ERR_REPLY 5<<1 87 #define AUTH_MSG_PRIVATE 6<<1 88 #define AUTH_MSG_SAFE 7<<1 89 #define AUTH_MSG_APPL_ERR 8<<1 90 #define AUTH_MSG_DIE 63<<1 91 92 /* values for kerb error codes */ 93 94 #define KERB_ERR_OK 0 95 #define KERB_ERR_NAME_EXP 1 96 #define KERB_ERR_SERVICE_EXP 2 97 #define KERB_ERR_AUTH_EXP 3 98 #define KERB_ERR_PKT_VER 4 99 #define KERB_ERR_NAME_MAST_KEY_VER 5 100 #define KERB_ERR_SERV_MAST_KEY_VER 6 101 #define KERB_ERR_BYTE_ORDER 7 102 #define KERB_ERR_PRINCIPAL_UNKNOWN 8 103 #define KERB_ERR_PRINCIPAL_NOT_UNIQUE 9 104 #define KERB_ERR_NULL_KEY 10 105 106 #ifdef __cplusplus 107 } 108 #endif 109 110 #endif /* _KERBEROS_PROT_H */ 111