pull-prototypes-to-head-20020821
[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 #ifdef KERNEL
15 #include "../afs/fcrypt.h"
16 #else
17 #include "rx/fcrypt.h"
18 #endif
19 #include "../rx/rx.h"
20
21 /* domestic/crypt_conn.c */
22 extern afs_int32 rxkad_DecryptPacket (const struct rx_connection *conn,
23         const fc_KeySchedule *schedule, const fc_InitializationVector *ivec,
24         const int len, struct rx_packet *packet);
25 extern afs_int32 rxkad_EncryptPacket (const struct rx_connection *conn,
26         const fc_KeySchedule *schedule, const fc_InitializationVector *ivec, 
27         const int len, struct rx_packet *packet);
28
29
30 /* domestic/fcrypt.c */
31 extern int fc_keysched (struct ktc_encryptionKey *key, 
32         fc_KeySchedule schedule);
33 extern afs_int32 fc_ecb_encrypt(afs_uint32 *clear, afs_uint32 *cipher, 
34         fc_KeySchedule schedule, int encrypt);
35 extern afs_int32 fc_cbc_encrypt (char *input, char *output, afs_int32 length, 
36         fc_KeySchedule key, afs_uint32 *xor, int encrypt);
37
38 /* rxkad_client.c */
39 extern int rxkad_AllocCID(struct rx_securityClass *aobj, struct rx_connection *aconn);
40 extern struct rx_securityClass *rxkad_NewClientSecurityObject(
41         rxkad_level level, struct ktc_encryptionKey *sessionkey,
42         afs_int32 kvno, int ticketLen, char *ticket);
43 extern int rxkad_GetResponse(struct rx_securityClass *aobj, 
44         struct rx_connection *aconn, struct rx_packet *apacket);
45 extern void rxkad_ResetState(void);
46
47 /* rxkad_common.c */
48 #if 0
49 /* can't prototype these due to types */
50 extern int rxkad_SetupEndpoint(struct rx_connection *aconnp, 
51         struct rxkad_endpoint *aendpointp);
52 extern afs_uint32 rxkad_CksumChallengeResponse(struct rxkad_v2ChallengeResponse *v2r);
53 #endif
54 extern int rxkad_DeriveXORInfo(struct rx_connection *aconnp, 
55         fc_KeySchedule *aschedule, char *aivec, char *aresult);
56 extern void rxkad_SetLevel(struct rx_connection *conn, rxkad_level level);
57 extern int rxkad_Close(struct rx_securityClass *aobj);
58 extern int rxkad_NewConnection(struct rx_securityClass *aobj,
59     struct rx_connection *aconn);
60 extern int rxkad_DestroyConnection(struct rx_securityClass *aobj, 
61         struct rx_connection *aconn);
62 extern int rxkad_CheckPacket(struct rx_securityClass *aobj,
63     struct rx_call *acall, struct rx_packet *apacket);
64 extern int rxkad_PreparePacket(struct rx_securityClass *aobj, 
65         struct rx_call *acall, struct rx_packet *apacket);
66 extern int rxkad_GetStats(struct rx_securityClass *aobj, 
67         struct rx_connection *aconn, struct rx_securityObjectStats *astats);
68
69
70 /* rxkad_errs.c */
71
72 /* rxkad_server.c */
73 extern struct rx_securityClass *rxkad_NewServerSecurityObject (
74         rxkad_level level, char *get_key_rock, 
75         int (*get_key)(char *get_key_rock, int kvno, struct ktc_encryptionKey *serverKey), 
76         int (*user_ok)(char *name, char *instance, char *cell, afs_int32 kvno));
77 extern int rxkad_CheckAuthentication (struct rx_securityClass *aobj, 
78         struct rx_connection *aconn);
79 extern int rxkad_CreateChallenge(struct rx_securityClass *aobj, 
80         struct rx_connection *aconn);
81 extern int rxkad_GetChallenge (struct rx_securityClass *aobj, 
82         struct rx_connection *aconn, struct rx_packet *apacket);
83 extern int rxkad_CheckResponse (struct rx_securityClass *aobj, 
84         struct rx_connection *aconn, struct rx_packet *apacket);
85 extern afs_int32 rxkad_GetServerInfo (struct rx_connection *aconn, 
86         rxkad_level *level, afs_uint32 *expiration, char *name, char *instance, 
87         char *cell, afs_int32 *kvno);
88
89
90
91 /* ticket.c */
92 extern int tkt_DecodeTicket (char *asecret, afs_int32 ticketLen, 
93         struct ktc_encryptionKey *key, char *name, char *inst, char *cell, 
94         char *sessionKey, afs_int32 *host, afs_int32 *start, afs_int32 *end);
95 extern int tkt_MakeTicket (char *ticket, int *ticketLen, 
96         struct ktc_encryptionKey *key, char *name, char *inst, char *cell,
97         afs_uint32 start, afs_uint32 end, struct ktc_encryptionKey *sessionKey, 
98         afs_uint32 host, char *sname, char *sinst);
99 extern int tkt_CheckTimes (afs_uint32 start, afs_uint32 end, afs_uint32 now);
100 extern afs_int32 ktohl (char flags, afs_int32 l);
101 extern afs_uint32 life_to_time (afs_uint32 start, unsigned char life);
102 extern unsigned char time_to_life (afs_uint32 start, afs_uint32 end);
103
104
105 #endif