summaryrefslogtreecommitdiff
path: root/lib/ZCkAuth.c
diff options
context:
space:
mode:
authorGravatar Robert S. French <rfrench@mit.edu>1988-05-17 17:21:01 +0000
committerGravatar Robert S. French <rfrench@mit.edu>1988-05-17 17:21:01 +0000
commit031ec0f258f152c1e20905b381aa7f5974db1f3d (patch)
tree1c15619ec8a5192e2d5095c6efde5e9a47ddc7ce /lib/ZCkAuth.c
parent4d21b4b5da809cdf4499190a1e27bff679a90422 (diff)
All sorts of changes for ver 0.2
Diffstat (limited to 'lib/ZCkAuth.c')
-rw-r--r--lib/ZCkAuth.c79
1 files changed, 41 insertions, 38 deletions
diff --git a/lib/ZCkAuth.c b/lib/ZCkAuth.c
index e376df3..6e9e04d 100644
--- a/lib/ZCkAuth.c
+++ b/lib/ZCkAuth.c
@@ -20,49 +20,52 @@ static char rcsid_ZCheckAuthentication_c[] = "$Header$";
#include <zephyr/zephyr_internal.h>
-int ZCheckAuthentication(notice,buffer,from)
- ZNotice_t *notice;
- ZPacket_t buffer;
- struct sockaddr_in *from;
+int ZCheckAuthentication(notice, from)
+ ZNotice_t *notice;
+ struct sockaddr_in *from;
{
- int result;
- char srcprincipal[ANAME_SZ+INST_SZ+REALM_SZ+4];
- KTEXT_ST authent;
- AUTH_DAT dat;
- ZChecksum_t our_checksum;
- CREDENTIALS cred;
+#ifdef KERBEROS
+ int result;
+ char srcprincipal[ANAME_SZ+INST_SZ+REALM_SZ+4];
+ KTEXT_ST authent;
+ AUTH_DAT dat;
+ ZChecksum_t our_checksum;
+ CREDENTIALS cred;
- if (!notice->z_auth)
- return (0);
+ if (!notice->z_auth)
+ return (0);
- if (__Zephyr_server) {
- if (ZReadAscii(notice->z_ascii_authent,
- strlen(notice->z_ascii_authent)+1,
- (unsigned char *)authent.dat,
- notice->z_authent_len) == ZERR_BADFIELD) {
- return (0);
- }
- authent.length = notice->z_authent_len;
- result = rd_ap_req(&authent,SERVER_SERVICE,
- SERVER_INSTANCE,from->sin_addr.s_addr,
- &dat,SERVER_SRVTAB);
- bcopy((char *)dat.session,(char *)__Zephyr_session,
- sizeof(C_Block));
- (void) sprintf(srcprincipal,"%s%s%s@%s",dat.pname,
- dat.pinst[0]?".":"",dat.pinst,dat.prealm);
- if (strcmp(srcprincipal,notice->z_sender))
- return (0);
- return (result == RD_AP_OK);
+ if (__Zephyr_server) {
+ if (ZReadAscii(notice->z_ascii_authent,
+ strlen(notice->z_ascii_authent)+1,
+ (unsigned char *)authent.dat,
+ notice->z_authent_len) == ZERR_BADFIELD) {
+ return (0);
}
+ authent.length = notice->z_authent_len;
+ result = krb_rd_req(&authent, SERVER_SERVICE,
+ SERVER_INSTANCE, from->sin_addr.s_addr,
+ &dat, SERVER_SRVTAB);
+ bcopy((char *)dat.session, (char *)__Zephyr_session,
+ sizeof(C_Block));
+ (void) sprintf(srcprincipal, "%s%s%s@%s", dat.pname,
+ dat.pinst[0]?".":"", dat.pinst, dat.prealm);
+ if (strcmp(srcprincipal, notice->z_sender))
+ return (0);
+ return (result == RD_AP_OK);
+ }
- if (result = get_credentials(SERVER_SERVICE,SERVER_INSTANCE,
- __Zephyr_realm,&cred))
- return (0);
+ if (result = krb_get_cred(SERVER_SERVICE, SERVER_INSTANCE,
+ __Zephyr_realm, &cred))
+ return (0);
- our_checksum = (ZChecksum_t)quad_cksum(buffer,NULL,
- notice->z_default_format+
- strlen(notice->z_default_format)+1-buffer,
- 0,cred.session);
+ our_checksum = (ZChecksum_t)quad_cksum(notice->z_packet, NULL,
+ notice->z_default_format+
+ strlen(notice->z_default_format)+1-
+ notice->z_packet, 0, cred.session);
- return (our_checksum == notice->z_checksum);
+ return (our_checksum == notice->z_checksum);
+#else
+ return (0);
+#endif
}