diff options
author | Robert S. French <rfrench@mit.edu> | 1988-05-17 17:21:01 +0000 |
---|---|---|
committer | Robert S. French <rfrench@mit.edu> | 1988-05-17 17:21:01 +0000 |
commit | 031ec0f258f152c1e20905b381aa7f5974db1f3d (patch) | |
tree | 1c15619ec8a5192e2d5095c6efde5e9a47ddc7ce /lib/ZCkAuth.c | |
parent | 4d21b4b5da809cdf4499190a1e27bff679a90422 (diff) |
All sorts of changes for ver 0.2
Diffstat (limited to 'lib/ZCkAuth.c')
-rw-r--r-- | lib/ZCkAuth.c | 79 |
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 } |