2 * Copyright 2000, International Business Machines Corporation and others.
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
10 #ifndef _RXKAD_PROTOTYPES_H
11 #define _RXKAD_PROTOTYPES_H
13 /* till the typedefs are moved elsewhere */
17 /* Don't include des.h where it can cause conflict with krb4 headers */
18 #if !defined(NO_DES_H_INCLUDE)
22 /* domestic/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);
33 /* domestic/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,
43 extern int rxkad_AllocCID(struct rx_securityClass *aobj,
44 struct rx_connection *aconn);
45 extern struct rx_securityClass *rxkad_NewClientSecurityObject(rxkad_level
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);
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
65 extern int rxkad_DeriveXORInfo(struct rx_connection *aconnp,
66 fc_KeySchedule * aschedule, char *aivec,
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);
86 extern void rxkad_global_stats_init(void);
91 extern struct rx_securityClass *rxkad_NewServerSecurityObject(rxkad_level
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,
126 afs_uint32 * expiration, char *name,
127 char *instance, char *cell,
129 extern afs_int32 rxkad_SetConfiguration(struct rx_securityClass *aobj,
130 struct rx_connection *aconn,
131 rx_securityConfigVariables atype,
132 void * avalue, void **aresult);
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_int32 * start,
140 extern int tkt_MakeTicket(char *ticket, int *ticketLen,
141 struct ktc_encryptionKey *key, char *name,
142 char *inst, char *cell, afs_uint32 start,
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);
152 extern int tkt_DecodeTicket5(char *ticket, afs_int32 ticket_len,
153 int (*get_key) (void *, int,
154 struct ktc_encryptionKey *),
155 char *get_key_rock, int serv_kvno, char *name,
156 char *inst, char *cell, struct ktc_encryptionKey *session_key,
157 afs_int32 * host, afs_int32 * start,
158 afs_int32 * end, afs_int32 disableDotCheck);
160 #if !defined(NO_DES_H_INCLUDE)
161 static_inline unsigned char *
162 ktc_to_cblock(struct ktc_encryptionKey *key) {
163 return (unsigned char *)key;
166 static_inline des_cblock *
167 ktc_to_cblockptr(struct ktc_encryptionKey *key) {
168 return (des_cblock *)key;