Mercurial > pidgin
view src/protocols/zephyr/ZCkAuth.c @ 12167:5851a9219bc7
[gaim-migrate @ 14468]
Some SILC fixes from Pekka for whiteboard support, preferences, and
documentation. Let's hear a big thanks to Pekka for keeping up with
this stuff!
Enclosed patch fixes couple crashbugs from the SILC whiteboard code,
fixes the preferences (which are not used anymore in Gaim) by
eliminating some of the old preferences and moving some of the
preferences to account options, and introduces Create SILC Key Pair
protocol action which can be used to generate new SILC key pair from
Gaim.
committer: Tailor Script <tailor@pidgin.im>
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Sun, 20 Nov 2005 00:59:36 +0000 |
parents | 64895571248f |
children |
line wrap: on
line source
/* This file is part of the Project Athena Zephyr Notification System. * It contains source for the ZCheckAuthentication function. * * Created by: Robert French * * Copyright (c) 1987,1991 by the Massachusetts Institute of Technology. * For copying and distribution information, see the file * "mit-copyright.h". */ #include "internal.h" /* Check authentication of the notice. If it looks authentic but fails the Kerberos check, return -1. If it looks authentic and passes the Kerberos check, return 1. If it doesn't look authentic, return 0 When not using Kerberos, return true if the notice claims to be authentic. Only used by clients; the server uses its own routine. */ Code_t ZCheckAuthentication(notice, from) ZNotice_t *notice; struct sockaddr_in *from; { #ifdef ZEPHYR_USES_KERBEROS int result; ZChecksum_t our_checksum; CREDENTIALS cred; /* If the value is already known, return it. */ if (notice->z_checked_auth != ZAUTH_UNSET) return (notice->z_checked_auth); if (!notice->z_auth) return (ZAUTH_NO); if ((result = krb_get_cred(SERVER_SERVICE, SERVER_INSTANCE, __Zephyr_realm, &cred)) != 0) return (ZAUTH_NO); #ifdef NOENCRYPTION our_checksum = 0; #else our_checksum = des_quad_cksum(notice->z_packet, NULL, notice->z_default_format+ strlen(notice->z_default_format)+1- notice->z_packet, 0, (C_Block *)cred.session); #endif /* if mismatched checksum, then the packet was corrupted */ return ((our_checksum == notice->z_checksum) ? ZAUTH_YES : ZAUTH_FAILED); #else return (notice->z_auth ? ZAUTH_YES : ZAUTH_NO); #endif }