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