death to trailing whitespace
[openafs.git] / src / rxkad / rxkad_prototypes.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  *
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #ifndef _RXKAD_PROTOTYPES_H
11 #define _RXKAD_PROTOTYPES_H
12
13 /* till the typedefs are moved elsewhere */
14 #include "fcrypt.h"
15 #include "rx/rx.h"
16
17 /* Don't include des.h where it can cause conflict with krb4 headers */
18 #if !defined(NO_DES_H_INCLUDE)
19 #include <des.h>
20 #endif
21
22 /* crypt_conn.c */
23 extern afs_int32 rxkad_DecryptPacket(const struct rx_connection *conn,
24                                      const fc_KeySchedule * schedule,
25                                      const fc_InitializationVector * ivec,
26                                      const int len, struct rx_packet *packet);
27 extern afs_int32 rxkad_EncryptPacket(const struct rx_connection *conn,
28                                      const fc_KeySchedule * schedule,
29                                      const fc_InitializationVector * ivec,
30                                      const int len, struct rx_packet *packet);
31
32
33 /* fcrypt.c */
34 extern int fc_keysched(struct ktc_encryptionKey *key,
35                        fc_KeySchedule schedule);
36 extern afs_int32 fc_ecb_encrypt(void * clear, void * cipher,
37                                 const fc_KeySchedule schedule, int encrypt);
38 extern afs_int32 fc_cbc_encrypt(void *input, void *output, afs_int32 length,
39                                 const fc_KeySchedule key, afs_uint32 * iv,
40                                 int encrypt);
41
42 /* rxkad_client.c */
43 extern int rxkad_AllocCID(struct rx_securityClass *aobj,
44                           struct rx_connection *aconn);
45 extern struct rx_securityClass *rxkad_NewClientSecurityObject(rxkad_level
46                                                               level, struct
47                                                               ktc_encryptionKey
48                                                               *sessionkey,
49                                                               afs_int32 kvno,
50                                                               int ticketLen,
51                                                               char *ticket);
52 extern int rxkad_GetResponse(struct rx_securityClass *aobj,
53                              struct rx_connection *aconn,
54                              struct rx_packet *apacket);
55 extern void rxkad_ResetState(void);
56
57 /* rxkad_common.c */
58 struct rxkad_endpoint;
59 extern int rxkad_SetupEndpoint(struct rx_connection *aconnp,
60                                struct rxkad_endpoint *aendpointp);
61 struct rxkad_v2ChallengeResponse;
62 extern afs_uint32 rxkad_CksumChallengeResponse(struct
63                                                rxkad_v2ChallengeResponse
64                                                *v2r);
65 extern int rxkad_DeriveXORInfo(struct rx_connection *aconnp,
66                                fc_KeySchedule * aschedule, char *aivec,
67                                char *aresult);
68 extern void rxkad_SetLevel(struct rx_connection *conn, rxkad_level level);
69 extern int rxkad_Close(struct rx_securityClass *aobj);
70 extern int rxkad_NewConnection(struct rx_securityClass *aobj,
71                                struct rx_connection *aconn);
72 extern int rxkad_DestroyConnection(struct rx_securityClass *aobj,
73                                    struct rx_connection *aconn);
74 extern int rxkad_CheckPacket(struct rx_securityClass *aobj,
75                              struct rx_call *acall,
76                              struct rx_packet *apacket);
77 extern int rxkad_PreparePacket(struct rx_securityClass *aobj,
78                                struct rx_call *acall,
79                                struct rx_packet *apacket);
80 extern int rxkad_GetStats(struct rx_securityClass *aobj,
81                           struct rx_connection *aconn,
82                           struct rx_securityObjectStats *astats);
83 extern rxkad_level rxkad_StringToLevel(char *string);
84 extern char *rxkad_LevelToString(rxkad_level level);
85
86 extern void rxkad_global_stats_init(void);
87
88 /* rxkad_errs.c */
89
90 /* rxkad_server.c */
91 extern struct rx_securityClass *rxkad_NewServerSecurityObject(rxkad_level
92                                                               level, void
93                                                               *get_key_rock,
94                                                               int (*get_key)
95
96
97
98                                                               (void
99                                                                *get_key_rock,
100                                                                int kvno,
101                                                                struct
102                                                                ktc_encryptionKey
103                                                                * serverKey),
104                                                               int (*user_ok)
105
106
107
108                                                               (char *name,
109                                                                char
110                                                                *instance,
111                                                                char *cell,
112                                                                afs_int32
113                                                                kvno));
114 extern int rxkad_CheckAuthentication(struct rx_securityClass *aobj,
115                                      struct rx_connection *aconn);
116 extern int rxkad_CreateChallenge(struct rx_securityClass *aobj,
117                                  struct rx_connection *aconn);
118 extern int rxkad_GetChallenge(struct rx_securityClass *aobj,
119                               struct rx_connection *aconn,
120                               struct rx_packet *apacket);
121 extern int rxkad_CheckResponse(struct rx_securityClass *aobj,
122                                struct rx_connection *aconn,
123                                struct rx_packet *apacket);
124 extern afs_int32 rxkad_GetServerInfo(struct rx_connection *aconn,
125                                      rxkad_level * level,
126                                      afs_uint32 * expiration, char *name,
127                                      char *instance, char *cell,
128                                      afs_int32 * kvno);
129 extern afs_int32 rxkad_SetConfiguration(struct rx_securityClass *aobj,
130                                         struct rx_connection *aconn,
131                                         rx_securityConfigVariables atype,
132                                         void * avalue, void **aresult);
133
134 /* ticket.c */
135 extern int tkt_DecodeTicket(char *asecret, afs_int32 ticketLen,
136                             struct ktc_encryptionKey *key, char *name,
137                             char *inst, char *cell, struct ktc_encryptionKey *sessionKey,
138                             afs_int32 * host, afs_uint32 * start,
139                             afs_uint32 * end);
140 extern int tkt_MakeTicket(char *ticket, int *ticketLen,
141                           struct ktc_encryptionKey *key, char *name,
142                           char *inst, char *cell, afs_uint32 start,
143                           afs_uint32 end,
144                           struct ktc_encryptionKey *sessionKey,
145                           afs_uint32 host, char *sname, char *sinst);
146 extern int tkt_CheckTimes(afs_uint32 start, afs_uint32 end, afs_uint32 now);
147 extern afs_int32 ktohl(char flags, afs_int32 l);
148 extern afs_uint32 life_to_time(afs_uint32 start, unsigned char life);
149 extern unsigned char time_to_life(afs_uint32 start, afs_uint32 end);
150
151 /* crc.c */
152 extern void _rxkad_crc_init_table(void);
153 extern afs_uint32 _rxkad_crc_update(const char *p, size_t len, afs_uint32 res);
154
155 /* ticket5.c */
156 extern int tkt_DecodeTicket5(char *ticket, afs_int32 ticket_len,
157                              int (*get_key) (void *, int,
158                                              struct ktc_encryptionKey *),
159                              char *get_key_rock, int serv_kvno, char *name,
160                              char *inst, char *cell, struct ktc_encryptionKey *session_key,
161                              afs_int32 * host, afs_uint32 * start,
162                              afs_uint32 * end, afs_int32 disableDotCheck);
163
164 #if !defined(NO_DES_H_INCLUDE)
165 static_inline unsigned char *
166 ktc_to_cblock(struct ktc_encryptionKey *key) {
167     return (unsigned char *)key;
168 }
169
170 static_inline char *
171 ktc_to_charptr(struct ktc_encryptionKey *key) {
172     return (char *)key;
173 }
174
175 static_inline des_cblock *
176 ktc_to_cblockptr(struct ktc_encryptionKey *key) {
177     return (des_cblock *)key;
178 }
179 #endif
180
181
182 #endif