| |
1 /* This file is part of the Project Athena Zephyr Notification System. |
| |
2 * It contains source for the ZFormatAuthenticNotice function. |
| |
3 * |
| |
4 * Created by: Robert French |
| |
5 * |
| |
6 * $Source$ |
| |
7 * $Author: warmenhoven $ |
| |
8 * |
| |
9 * Copyright (c) 1987,1988 by the Massachusetts Institute of Technology. |
| |
10 * For copying and distribution information, see the file |
| |
11 * "mit-copyright.h". |
| |
12 */ |
| |
13 /* $Header$ */ |
| |
14 |
| |
15 #ifndef lint |
| |
16 static char rcsid_ZFormatAuthenticNotice_c[] = "$Header$"; |
| |
17 #endif |
| |
18 |
| |
19 #include <internal.h> |
| |
20 |
| |
21 #ifdef ZEPHYR_USES_KERBEROS |
| |
22 Code_t ZFormatAuthenticNotice(notice, buffer, buffer_len, len, session) |
| |
23 ZNotice_t *notice; |
| |
24 register char *buffer; |
| |
25 register int buffer_len; |
| |
26 int *len; |
| |
27 C_Block session; |
| |
28 { |
| |
29 ZNotice_t newnotice; |
| |
30 char *ptr; |
| |
31 int retval, hdrlen; |
| |
32 |
| |
33 newnotice = *notice; |
| |
34 newnotice.z_auth = 1; |
| |
35 newnotice.z_authent_len = 0; |
| |
36 newnotice.z_ascii_authent = ""; |
| |
37 |
| |
38 if ((retval = Z_FormatRawHeader(&newnotice, buffer, buffer_len, |
| |
39 &hdrlen, &ptr, NULL)) != ZERR_NONE) |
| |
40 return (retval); |
| |
41 |
| |
42 #ifdef NOENCRYPTION |
| |
43 newnotice.z_checksum = 0; |
| |
44 #else |
| |
45 newnotice.z_checksum = |
| |
46 (ZChecksum_t)des_quad_cksum(buffer, NULL, ptr - buffer, 0, session); |
| |
47 #endif |
| |
48 if ((retval = Z_FormatRawHeader(&newnotice, buffer, buffer_len, |
| |
49 &hdrlen, NULL, NULL)) != ZERR_NONE) |
| |
50 return (retval); |
| |
51 |
| |
52 ptr = buffer+hdrlen; |
| |
53 |
| |
54 if (newnotice.z_message_len+hdrlen > buffer_len) |
| |
55 return (ZERR_PKTLEN); |
| |
56 |
| |
57 (void) memcpy(ptr, newnotice.z_message, newnotice.z_message_len); |
| |
58 |
| |
59 *len = hdrlen+newnotice.z_message_len; |
| |
60 |
| |
61 if (*len > Z_MAXPKTLEN) |
| |
62 return (ZERR_PKTLEN); |
| |
63 |
| |
64 return (ZERR_NONE); |
| |
65 } |
| |
66 #endif |