From 031ec0f258f152c1e20905b381aa7f5974db1f3d Mon Sep 17 00:00:00 2001 From: "Robert S. French" Date: Tue, 17 May 1988 17:21:01 +0000 Subject: All sorts of changes for ver 0.2 --- lib/ZCkAuth.c | 79 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 41 insertions(+), 38 deletions(-) (limited to 'lib/ZCkAuth.c') 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 -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 } -- cgit v1.2.3