From 1a0e03eb19998ab496a6ea845ff2c42d9a02df0b Mon Sep 17 00:00:00 2001 From: Karl Ramm Date: Tue, 25 Dec 2007 00:56:08 +0000 Subject: applied athena-update-branch patch --- h/internal.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'h/internal.h') diff --git a/h/internal.h b/h/internal.h index f0b482c..403e85c 100644 --- a/h/internal.h +++ b/h/internal.h @@ -11,6 +11,10 @@ #include #endif +#ifdef HAVE_KRB5 +#include +#endif + #ifdef HAVE_HESIOD #include #endif @@ -34,6 +38,13 @@ #define Z_NOTICETIMELIMIT 30 /* Time to wait for fragments */ #define Z_INITFILTERSIZE 30 /* Starting size of uid filter */ +#define Z_AUTHMODE_NONE 0 /* no authentication */ +#define Z_AUTHMODE_KRB4 1 /* authenticate using Kerberos V4 */ +#define Z_AUTHMODE_KRB5 2 /* authenticate using Kerberos V5 */ + +#define Z_KEYUSAGE_CLT_CKSUM 1027 /* client->server notice checksum */ +#define Z_KEYUSAGE_SRV_CKSUM 1029 /* server->client notice checksum */ + struct _Z_Hole { struct _Z_Hole *next; int first; @@ -64,6 +75,11 @@ extern int __Zephyr_open; /* 0 if FD opened, 1 otherwise */ extern int __HM_set; /* 0 if dest addr set, 1 otherwise */ extern int __Zephyr_server; /* 0 if normal client, 1 if server or zhm */ +#ifdef HAVE_KRB5 +extern krb5_context Z_krb5_ctx; +Code_t Z_krb5_lookup_cksumtype(krb5_enctype, krb5_cksumtype *); +#endif + extern ZLocations_t *__locate_list; extern int __locate_num; extern int __locate_next; @@ -97,6 +113,46 @@ Code_t Z_WaitForNotice __P((ZNotice_t *notice, int (*pred) __P((ZNotice_t *, void *)), void *arg, int timeout)); + +Code_t Z_NewFormatHeader __P((ZNotice_t *, char *, int, int *, Z_AuthProc)); +Code_t Z_NewFormatAuthHeader __P((ZNotice_t *, char *, int, int *, Z_AuthProc)); +Code_t Z_NewFormatRawHeader __P((ZNotice_t *, char *, int, int *, char **, + int *, char **, char **)); +Code_t Z_AsciiFormatRawHeader __P((ZNotice_t *, char *, int, int *, char **, + int *, char **, char **)); + void Z_gettimeofday(struct _ZTimeval *ztv, struct timezone *tz); + +#ifdef HAVE_KRB5 +int ZGetCreds(krb5_creds **creds_out); +int ZGetCredsRealm(krb5_creds **creds_out, char *realm); +Code_t Z_Checksum(krb5_data *cksumbuf, krb5_keyblock *keyblock, krb5_cksumtype cksumtype, char **asn1_data, int *asn1_len); +Code_t Z_ExtractEncCksum(krb5_keyblock *keyblock, krb5_enctype *enctype, krb5_cksumtype *cksumtype); +int Z_krb5_verify_cksum(krb5_keyblock *keyblock, krb5_data *cksumbuf, krb5_cksumtype cksumtype, char *asn1_data, int asn1_len); +Code_t Z_InsertZcodeChecksum(krb5_keyblock *keyblock, ZNotice_t *notice, + char *buffer, + char *cksum_start, int cksum_len, + char *cstart, char *cend, int buffer_len, + int *length_ajdust); +#endif + +#ifdef HAVE_KRB5_CREDS_KEYBLOCK_ENCTYPE +#define Z_keydata(keyblock) ((keyblock)->contents) +#define Z_keylen(keyblock) ((keyblock)->length) +#define Z_credskey(creds) (&(creds)->keyblock) +#else +#define Z_keydata(keyblock) ((keyblock)->keyvalue.data) +#define Z_keylen(keyblock) ((keyblock)->keyvalue.length) +#define Z_credskey(creds) (&(creds)->session) +#endif + +#ifdef HAVE_KRB5_TICKET_ENC_PART2 +#define Z_tktprincp(tkt) ((tkt)->enc_part2 != 0) +#define Z_tktprinc(tkt) ((tkt)->enc_part2->client) +#else +#define Z_tktprincp(tkt) ((tkt)->client != 0) +#define Z_tktprinc(tkt) ((tkt)->client) +#endif + #endif /* __INTERNAL_H__ */ -- cgit v1.2.3