 408afcd320
			
		
	
	408afcd320
	
	
	
		
			
			git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@8506 ec53bebd-3082-4978-b11e-865c3cabbd6b
		
			
				
	
	
		
			166 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* dummy K5 routines which are needed to get this to 
 | |
|  * compile without having access ti the DCE versions 
 | |
|  * of the header files.
 | |
|  * Thiis is very crude, and OSF needs to expose the K5
 | |
|  * API.
 | |
|  */
 | |
| 
 | |
| #ifdef sun
 | |
| /* Transarc obfascates these routines */
 | |
| #ifdef DCE_1_1
 | |
| 
 | |
| #define krb5_init_ets                   _dce_PkjKqOaklP 
 | |
| #define krb5_copy_creds                 _dce_LuFxPiITzD
 | |
| #define krb5_unparse_name               _dce_LWHtAuNgRV
 | |
| #define krb5_get_default_realm          _dce_vDruhprWGh
 | |
| #define krb5_build_principal            _dce_qwAalSzTtF
 | |
| #define krb5_build_principal_ext        _dce_vhafIQlejW
 | |
| #define krb5_build_principal_va         _dce_alsqToMmuJ
 | |
| #define krb5_cc_default                 _dce_KZRshhTXhE
 | |
| #define krb5_cc_default_name            _dce_bzJVAjHXVQ
 | |
| #define sec_login_krb5_add_cred			_dce_ePDtOJTZvU
 | |
| 
 | |
| #else /* DCE 1.0.3a */
 | |
| 
 | |
| #define krb5_init_ets                   _dce_BmLRpOVsBo
 | |
| #define krb5_copy_creds                 _dce_VGwSEBNwaf
 | |
| #define krb5_unparse_name               _dce_PgAOkJoMXA
 | |
| #define krb5_get_default_realm          _dce_plVOzStKyK
 | |
| #define krb5_build_principal            _dce_uAKSsluIFy
 | |
| #define krb5_build_principal_ext        _dce_tRMpPiRada
 | |
| #define krb5_build_principal_va         _dce_SxnLejZemH
 | |
| #define krb5_cc_default                 _dce_SeKosWFnsv
 | |
| #define krb5_cc_default_name            _dce_qJeaphJWVc
 | |
| #define sec_login_krb5_add_cred         _dce_uHwRasumsN
 | |
| 
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| /* Define the bare minimum k5 structures which are needed
 | |
|  * by this program. Since the krb5 includes are not supplied 
 | |
|  * with DCE, these were based on the MIT Kerberos 5 beta 3
 | |
|  * which should match the DCE as of 1.0.3 at least.
 | |
|  * The tricky one is the krb5_creds, since one is allocated
 | |
|  * by this program, and it needs access to the client principal
 | |
|  * in it.
 | |
|  * Note that there are no function prototypes, so there is no 
 | |
|  * compile time checking.
 | |
|  * DEE 07/11/95
 | |
|  */
 | |
| #define     NPROTOTYPE(x) () 
 | |
| typedef int krb5_int32;  /* assuming all DCE systems are 32 bit */
 | |
| typedef short krb5short; /* assuming short is 16 bit */
 | |
| typedef krb5_int32      krb5_error_code;
 | |
| typedef unsigned char   krb5_octet;
 | |
| typedef krb5_octet      krb5_boolean;
 | |
| typedef krb5short       krb5_keytype; /* in k5.2 it's a short */
 | |
| typedef krb5_int32      krb5_flags;
 | |
| typedef krb5_int32  krb5_timestamp;
 | |
| 
 | |
| typedef char * krb5_pointer;  /* pointer to unexposed data */
 | |
| 
 | |
| typedef struct _krb5_ccache {
 | |
|     struct _krb5_cc_ops *ops;
 | |
|     krb5_pointer data;
 | |
| } *krb5_ccache;
 | |
| 
 | |
| typedef struct _krb5_cc_ops {
 | |
|     char *prefix;
 | |
|     char *(*get_name) NPROTOTYPE((krb5_ccache));
 | |
|     krb5_error_code (*resolve) NPROTOTYPE((krb5_ccache *, char *));
 | |
|     krb5_error_code (*gen_new) NPROTOTYPE((krb5_ccache *));
 | |
|     krb5_error_code (*init) NPROTOTYPE((krb5_ccache, krb5_principal));
 | |
|     krb5_error_code (*destroy) NPROTOTYPE((krb5_ccache));
 | |
|     krb5_error_code (*close) NPROTOTYPE((krb5_ccache));
 | |
|     krb5_error_code (*store) NPROTOTYPE((krb5_ccache, krb5_creds *));
 | |
|     krb5_error_code (*retrieve) NPROTOTYPE((krb5_ccache, krb5_flags,
 | |
|                    krb5_creds *, krb5_creds *));
 | |
|     krb5_error_code (*get_princ) NPROTOTYPE((krb5_ccache,
 | |
|                         krb5_principal *));
 | |
|     krb5_error_code (*get_first) NPROTOTYPE((krb5_ccache,
 | |
|                         krb5_cc_cursor *));
 | |
|     krb5_error_code (*get_next) NPROTOTYPE((krb5_ccache, krb5_cc_cursor *,
 | |
|                    krb5_creds *));
 | |
|     krb5_error_code (*end_get) NPROTOTYPE((krb5_ccache, krb5_cc_cursor *));
 | |
|     krb5_error_code (*remove_cred) NPROTOTYPE((krb5_ccache, krb5_flags,
 | |
|                       krb5_creds *));
 | |
|     krb5_error_code (*set_flags) NPROTOTYPE((krb5_ccache, krb5_flags));
 | |
| } krb5_cc_ops;
 | |
| 
 | |
| typedef struct _krb5_keyblock {
 | |
| 	krb5_keytype keytype;
 | |
| 	int length;
 | |
| 	krb5_octet *contents;
 | |
| } krb5_keyblock;
 | |
| 
 | |
| typedef struct _krb5_ticket_times {
 | |
| 	krb5_timestamp authtime;
 | |
| 	krb5_timestamp starttime;
 | |
| 	krb5_timestamp endtime;
 | |
| 	krb5_timestamp renew_till;
 | |
| } krb5_ticket_times;
 | |
| 
 | |
| typedef krb5_pointer krb5_cc_cursor;
 | |
| 
 | |
| typedef struct _krb5_data {
 | |
|    int length;
 | |
|    char *data;
 | |
| } krb5_data;
 | |
| 
 | |
| typedef struct _krb5_authdata {
 | |
|    int ad_type;
 | |
|    int length;
 | |
|    krb5_octet *contents;
 | |
| } krb5_authdata;
 | |
| 
 | |
| typedef struct _krb5_creds {
 | |
|     krb5_pointer client;
 | |
|     krb5_pointer server;
 | |
|     krb5_keyblock keyblock;
 | |
|     krb5_ticket_times times;
 | |
|     krb5_boolean is_skey;
 | |
|     krb5_flags ticket_flags;
 | |
|     krb5_pointer **addresses;
 | |
|     krb5_data ticket;
 | |
|     krb5_data second_ticket;
 | |
|     krb5_pointer **authdata;
 | |
| } krb5_creds;
 | |
| 
 | |
| typedef krb5_pointer krb5_principal; 
 | |
|  
 | |
| #define KRB5_CC_END                              336760974
 | |
| #define KRB5_TC_OPENCLOSE              0x00000001
 | |
| 
 | |
| /* Ticket flags */
 | |
| /* flags are 32 bits; each host is responsible to put the 4 bytes
 | |
|    representing these bits into net order before transmission */
 | |
| /* #define  TKT_FLG_RESERVED    0x80000000 */
 | |
| #define TKT_FLG_FORWARDABLE     0x40000000
 | |
| #define TKT_FLG_FORWARDED       0x20000000
 | |
| #define TKT_FLG_PROXIABLE       0x10000000
 | |
| #define TKT_FLG_PROXY           0x08000000
 | |
| #define TKT_FLG_MAY_POSTDATE    0x04000000
 | |
| #define TKT_FLG_POSTDATED       0x02000000
 | |
| #define TKT_FLG_INVALID         0x01000000
 | |
| #define TKT_FLG_RENEWABLE       0x00800000
 | |
| #define TKT_FLG_INITIAL         0x00400000
 | |
| #define TKT_FLG_PRE_AUTH        0x00200000
 | |
| #define TKT_FLG_HW_AUTH         0x00100000
 | |
| #ifdef PK_INIT
 | |
| #define TKT_FLG_PUBKEY_PREAUTH          0x00080000
 | |
| #define TKT_FLG_DIGSIGN_PREAUTH         0x00040000
 | |
| #define TKT_FLG_PRIVKEY_PREAUTH         0x00020000
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #define krb5_cc_get_principal(cache, principal) (*(cache)->ops->get_princ)(cache, principal)
 | |
| #define krb5_cc_set_flags(cache, flags) (*(cache)->ops->set_flags)(cache, flags)
 | |
| #define krb5_cc_get_name(cache) (*(cache)->ops->get_name)(cache)
 | |
| #define krb5_cc_start_seq_get(cache, cursor) (*(cache)->ops->get_first)(cache, cursor)
 | |
| #define krb5_cc_next_cred(cache, cursor, creds) (*(cache)->ops->get_next)(cache, cursor, creds)
 | |
| #define krb5_cc_destroy(cache) (*(cache)->ops->destroy)(cache)
 | |
| #define krb5_cc_end_seq_get(cache, cursor) (*(cache)->ops->end_get)(cache, cursor)
 | |
| 
 | |
| /* end of k5 dummy typedefs */
 | |
| 
 |